Sap Script

Sap Script & VBA – Conexão utilizando SAP GUI Scripting API

Eu já disponibilizei em postagens anteriores arquivo com rotina para conexão com o SAP utilizando o Excel VBA (Arquivo de Conexão), também já detalhei como gravar o arquivo .vbs no próprio SAP (Introdução Parte I e Introdução Parte II).

Agora nessa postagem vou dar um exemplo de conexão utilizando uma API fornecida pela própria SAP nas instalações do SAP GUI a Sap Gui Scripting API (sapfewse.ocx).

A grande vantagem em utilizar essa funcionalidade é ter acesso a todas as propriedades e métodos de cada objeto declarado assim como utilizar o intellisense da OCX que é aquela funcionalidade de auto preenchimento após inserir o ponto e ter acessos aos métodos e propriedades.

Clicando aqui você pode baixar a documentação em PDF dessa API, que você também pode encontrar no Help da sua instalação SAP GUI (dependendo da versão da sua instalação isso pode variar).

Para utilizar essa API é necessário flegar a opção de referencia dentro do VBA e para isso você deve entrar no editor do VBA, clicar em Ferramentas > Referências… procure por SAP GUI Scripting API conforme a imagem abaixo. Essa API geralmente é carregada durante a instalação o SAP GUI, caso você não à encontre automaticamente você tem a opção de procurar pela OCX sapfewse.ocx clicando em procurar nessa mesma tela “Referencias – VBAProject”, se ainda assim não encontrar reveja sua instalação SAP GUI. 

Agora vamos criar um modulo no VBAProject conforme imagem abaixo, esse modulo ira conter os códigos de conexão e execução da rotina.

Após a inclusão do modulo, de um duplo clique no modulo para incluir os códigos.

Incluir o código abaixo no módulo criado.

Option Explicit
'Declaração de variaveis
Public objGui   As GuiApplication
Public objConn  As GuiConnection
Public objSess  As GuiSession

'Função de conexão
Function Get_Session() As Boolean
    'Carregando variaveis de objeto
    Set objGui = GetObject("SAPGUI").GetScriptingEngine
    Set objConn = objGui.Children(0)
    Set objSess = objConn.Children(0)
    
    'Testando se a conexão foi bem sucedida
    If objSess Is Nothing Then
        Get_Session = False
        Exit Function
    End If

'Retorno verdadeiro para função
Get_Session = True

End Function

Public Sub FS10N()
Dim fCheck As Boolean
    'Executando a rotina de conexão
    fCheck = Get_Session()
    
    If fCheck = True Then
        'Inicianco codigo
        objSess.FindById("wnd[0]").Maximize
        objSess.FindById("wnd[0]/tbar[0]/okcd").Text = "FS10N"
        objSess.FindById("wnd[0]").sendVKey 0
        objSess.FindById("wnd[0]/usr/ctxtRACCT-LOW").Text = Cells(13, 3).Value
        objSess.FindById("wnd[0]/usr/ctxtRBUKRS-LOW").Text = Cells(14, 3).Value
        objSess.FindById("wnd[0]/usr/txtRYEAR").Text = Cells(15, 3).Value
        objSess.FindById("wnd[0]/tbar[1]/btn[8]").press
    End If
    
    'Descarregando variaveis
    Set objGui = Nothing
    Set objConn = Nothing
    Set objSess = Nothing
End Sub

Para esse exemplo vou utilizar a transação FS10N, que ira apenas acessar a transação e passar parâmetros, algo bem simples. Veja imagem abaixo de como irá ficar essa a planilha, crie também uma chamada ao código no botão Executar.

Finalizando você pode executar o código e verificar sua funcionalidade. É importante que o SAP esteja logado para que o código funcione, este é um exemplo bem resumido o qual não fez nenhuma leitura das informações de log, como nome do sistema, usuários, janelas. Não foi feito nenhum check de consistência etc… Algo bem simples pra mostrar a funcionalidade da API.

Clique aqui para baixar o exemplo em Excel utilizado nessa postagem

Deixe uma resposta