SAP GUI Scripting com Excel VBA é um processo de integração entre SAP e Excel, onde é possível otimizar a tarefas e ganhar tempo.
Se você já trabalha com o SAP, sabe que algumas tarefas repetitivas podem consumir tempo e energia.
Nesse artigo, vou mostrar como gravar um script no SAP, pegar o código gerado e adaptá-lo no Excel VBA, além de substituir valores inseridos no SAP pelas referências de células no Excel.
O que é o SAP GUI Scripting
O SAP GUI Scripting permite que você grave ações realizadas dentro do SAP e automatize essas tarefas repetitivas. Com o Excel VBA, você pode usar os dados do Excel diretamente no SAP, tornando o processo ainda mais eficiente.
Continue a leitura para aprender:
- Como ativar o SAP GUI Scripting;
- Gravar e salvar o script;
- Executar o script;
- Usar o Excel com VBA para automatizar o processo.
Ativando o gravador de Scripting
Antes de iniciar, verifique se o gravador de script está ativado. Para isso, siga estes passos:
- Clique no ícone Ajustar Layout Local → Opções.
- Do lado esquerdo clique em Acessibilidade e scripting;
- Depois clique em Scripiting;
- Marque a caixa de seleção Ativar Scripting e clique em OK;
Gravando o script no SAP
O primeiro passo é gravar as ações que você realiza no SAP para que elas possam ser automatizadas. Vamos ver como gravar um script usando o gravador do SAP.
Vou usar como exemplo uma operação na transação ME2J. Vamos entrar na transação, inserir alguns dados e depois gerar um relatório. Veja o passo a passo.
- Clique no ícone Ajustar Layout Local → Registro e Reprodução de Script.
Se a opção Registro e Reprodução de Script estiver esmaecida, isso indica que o script foi desabilitado para usuários neste servidor pela sua organização. Nesse caso, você precisará entrar em contato com seu administrador de TI para habilitar o script para você.
- Clique nos 3 pontos para escolher o local e o nome da sua macro.
- Mantenha a extensão .vbs no final do nome do arquivo.
- Clique no ícone Registrar script (botão vermelho).
- Entre na transação ME2J (ou outra, aqui é só um exemplo).
Observação: Digite a transação na barra SAP, não dê duplo clique na transação na barra de favoritos.
- Insira as infomações como você faz manualmente.
- Em seguida , clique no botão Executar (ícone do relógio) para gerar o relatório.
- Após finalizar as ações, pare a gravação, clicando no botão Encerrar registro (botão laranja).
- O código será exportado em um arquivo .vbs.
Código gerado pelo SAP GUI Scripting
Vá até o local que você configurou para salvar o script. Clique com o botão direito do mouse sobre o arquivo e escolha Abrir com → Bloco de notas.
Este é o código que foi gravado:
If Not IsObject(Application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set Application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = Application.Children(0)
End If
If Not IsObject(Session) Then
Set Session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject Session, "on"
WScript.ConnectObject Application, "on"
End If
Session.findById("wnd[0]").maximize
Session.findById("wnd[0]/tbar[0]/okcd").Text = "ME2J"
Session.findById("wnd[0]").sendVKey 0
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").Text = "51141356377"
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").SetFocus
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").caretPosition = 11
Session.findById("wnd[0]/usr/ctxtLISTU").Text = "ZBEST_ALV"
Session.findById("wnd[0]/usr/ctxtLISTU").SetFocus
Session.findById("wnd[0]/usr/ctxtLISTU").caretPosition = 9
Session.findById("wnd[0]/tbar[1]/btn[8]").press
O código que começa em If Not IsObject(application) Then e vai até End If, é o que faz a conexão com o SAP.
Após isso, temos as linhas que foram gravadas de acordo com as ações.
session.findById("wnd[0]/tbar[0]/okcd").text = "ME2J" 'insere a transação no SAP.
session.findById("wnd[0]").sendVKey 0 'mesmo que pressionar a tecla Enter.
session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").text = "51141356377 'insere o valor 51141356377 no SAP.
session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").setFocus 'foco em um controle.
session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").caretPosition = 11 'posição do cursor.
Observação: estas 2 últimas linhas não são necessárias para que o código funcione. Em outro artigo falarei mais sobre elas.
session.findById("wnd[0]/usr/ctxtLISTU").text = "ZBEST_ALV" 'insere o valor ZBEST_ALV no SAP.
session.findById("wnd[0]/tbar[1]/btn[8]").press 'gera o relatório.
Para testar, clique no botão Encerrar (botão laranja na parte superior) duas vezes, para voltar à tela inicial.
Clique duas vezes no arquivo .vbs. As ações que você gravou são executadas até gerar o relatório.
Importando o código gerado para o Excel VBA
Agora que você gravou o SAP Script, o próximo passo é integrá-lo ao Excel VBA.
- Inicie um arquivo Excel e acesse o editor de VBA . Pressione Alt + F11 para abrir o editor de VBA.
- Crie um novo módulo (Inserir → Módulo).
- Digite Sub TesteSAP(), copie o código do script gerado pelo SAP e cole abaixo do texto digitado.
Substituindo valores por referências de células no Excel
Um dos maiores benefícios de usar o SAP Script com Excel VBA é a possibilidade de substituir os valores estáticos por referências de células no Excel. Isso permite automatizar a inserção de dados personalizados, diretamente do Excel.
Veja um exemplo de planilha criada para inserção dos dados no SAP:
Veja como fica o código alterando os valores digitados pelos valores nas células do Excel:
Sub TesteSAP()
If Not IsObject(Application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set Application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = Application.Children(0)
End If
If Not IsObject(Session) Then
Set Session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject Session, "on"
WScript.ConnectObject Application, "on"
End If
Session.findById("wnd[0]").maximize
Session.findById("wnd[0]/tbar[0]/okcd").Text = Range("C3").Value
Session.findById("wnd[0]").sendVKey 0
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").Text = Range("C4").Value
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").SetFocus
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").caretPosition = 11
Session.findById("wnd[0]/usr/ctxtLISTU").Text = Range("C5").Value
Session.findById("wnd[0]/usr/ctxtLISTU").SetFocus
Session.findById("wnd[0]/usr/ctxtLISTU").caretPosition = 9
Session.findById("wnd[0]/tbar[1]/btn[8]").press
End Sub
Os textos em negrito são os valores das referências do Excel.
Exemplos de automação
Escolher variante pelo código VBA
Acesso aos menus, submenus e itens pelo código VBA
Retornar informações da barra de status pelo código VBA
Conclusão SAP GUI Scripting
Automatizar processos com SAP Script e Excel VBA é uma poderosa forma de economizar tempo, especialmente quando você lida com grandes volumes de dados.
O gravador de scripts do SAP facilita a captura das ações, e com o Excel VBA, você pode dinamizar essas ações substituindo valores fixos por referências de células, otimizando ainda mais os processos.
Com esses passos, você será capaz de transformar tarefas repetitivas em automações ágeis e confiáveis, utilizando o melhor das ferramentas que o SAP Script com Excel VBA oferece.
Este foi um um primeiro exemplo simples, para você saber que é possível automatizar este processo de inserção de dados no SAP.
Nos próximos artigos vou falar sobre outros comandos, controles do SAP, loop com VBA e muito mais.
Participe
O que achou do SAP GUI Scripting com Excel VBA? Deixe sua opinião nos comentários.
Se este conteúdo foi relevante para você, convide seus amigos para que eles também fiquem sabendo deste material.
Precisa desta automação na sua empresa? Entre em contato e vamos conversar.
Um abraço e até a próxima.