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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
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