SAP GUI Scripting com Excel VBA é um processo de integração entre SAP e Excel, onde é possível otimizar 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.
Nota: este passo a passo funciona no SAP GUI for Windows, instalado no computador. Não funciona no SAP acessado pelo navegador.
Muita gente procura esse assunto como “SAP Script”. Mas o SAPscript é outra ferramenta do SAP, usada para criar formulários de impressão. O que permite gravar e automatizar as telas do SAP é o SAP GUI Scripting, assunto deste artigo.
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;
- Usar o Excel com VBA para automatizar o processo.
Ativando o gravador de Scripting
Esta é a configuração mínima para gravar. A configuração completa do SAP GUI e do Excel está no artigo Configurar Excel VBA e SAP GUI para automatizar tarefas.
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 & scripting;
- Depois clique em Scripting;
- 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.
- Digite Script1 para o nome do arquivo e mantenha a extensão .vbs no final.

- Clique no ícone Registrar script.
- Entre na transação ME2J com /n (/nME2J ).
Observação: digite a transação no campo de comando, não dê duplo clique na transação na barra de favoritos.
- Insira as informações como você faz manualmente.
- Vou inserir dados fictícios, mas você deve inserir dados que usa nas operações no dia a dia.
- Em seguida, clique no botão Executar (F8) para gerar o relatório.
- Após finalizar as ações, pare a gravação, clicando no botão Encerrar registro.
- 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 = "/nME2J"
Session.findById("wnd[0]").sendVKey 0
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").Text = "100000000001"
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").SetFocus
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").caretPosition = 12
Session.findById("wnd[0]/usr/ctxtLISTU").Text = "BEST"
Session.findById("wnd[0]/usr/ctxtLISTU").SetFocus
Session.findById("wnd[0]/usr/ctxtLISTU").caretPosition = 4
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 trecho que localiza o SAP GUI aberto e escolhe a primeira conexão e a primeira janela. Se você tiver mais de uma janela do SAP aberta, o script vai agir na primeira, que nem sempre é a que está na sua frente.
Conexão, janela e os demais objetos do SAP GUI são explicados em detalhes no artigo Modelo de objeto do SAP GUI Scripting.
Após isso, temos as linhas que foram gravadas de acordo com as ações.
session.findById("wnd[0]/tbar[0]/okcd").text = "/nME2J" '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 = "100000000001" 'insere o valor 100000000001 no SAP.
session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").setFocus 'foco em um controle.
session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").caretPosition = 12 'posição do cursor.
Observação: estas 2 últimas linhas não são necessárias para que o código funcione. Veja mais sobre elas em Métodos e Propriedades dos Objetos SAP GUI Scripting.
session.findById("wnd[0]/usr/ctxtLISTU").text = "BEST" 'insere o valor BEST no SAP.
session.findById("wnd[0]/tbar[1]/btn[8]").press 'gera o relatório.
Importando o código gerado para o Excel VBA
Agora que você gravou o script, o próximo passo é integrá-lo ao Excel VBA.
- Inicie um arquivo Excel e pressione Alt + F11 para abrir o editor de VBA.
- Crie um módulo (Inserir → Módulo).
- Digite Sub TesteSAP(), copie o código do script gerado pelo SAP e cole abaixo do texto digitado.
Conflito com o objeto Application do Excel
Se você colar o script gravado diretamente no editor do VBA e executar, a macro para com o erro de compilação Uso inválido da propriedade.
O motivo: no VBA do Excel, Application já representa o próprio Excel. O script gravado pelo SAP usa uma variável com esse mesmo nome para guardar o SAP GUI. No VBA, esse nome continua apontando para o Excel.
Para corrigir, troque Application por outro nome, como SapApp. Aproveitei a correção para simplificar o início do código:
- As variáveis passam a ser declaradas com
Dim … As Object; - Os testes
If Not IsObjectsaem, porque no VBA as variáveis são criadas do zero a cada execução da macro; - O bloco
WScriptsai, porque ele só tem função quando o script roda fora do Excel, com duplo clique no arquivo .vbs; - As linhas
setFocusecaretPositionsaem, porque não mudam o resultado.
Sub TesteSAP()
Dim SapGuiAuto As Object
Dim SapApp As Object
Dim Connection As Object
Dim Session As Object
' Pega o SAP GUI aberto, a primeira conexão e a primeira janela (sessão)
Set SapGuiAuto = GetObject("SAPGUI")
Set SapApp = SapGuiAuto.GetScriptingEngine
Set Connection = SapApp.Children(0)
Set Session = Connection.Children(0)
Session.findById("wnd[0]").maximize
Session.findById("wnd[0]/tbar[0]/okcd").Text = "/nME2J"
Session.findById("wnd[0]").sendVKey 0
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").Text = "100000000001"
Session.findById("wnd[0]/usr/ctxtLISTU").Text = "BEST"
Session.findById("wnd[0]/tbar[1]/btn[8]").press
End Sub
Substituindo valores por referências de células no Excel
Um dos maiores benefícios de usar o SAP GUI Scripting 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:

Agora troque os valores digitados pelas células da planilha. Repare que a célula C3 guarda só o código da transação (ME2J). O /n fica no código, na frente do valor da célula, para a macro funcionar a partir de qualquer tela.
Sub TesteSAP()
Dim SapGuiAuto As Object
Dim SapApp As Object
Dim Connection As Object
Dim Session As Object
' Pega o SAP GUI aberto, a primeira conexão e a primeira janela (sessão)
Set SapGuiAuto = GetObject("SAPGUI")
Set SapApp = SapGuiAuto.GetScriptingEngine
Set Connection = SapApp.Children(0)
Set Session = Connection.Children(0)
Session.findById("wnd[0]").maximize
Session.findById("wnd[0]/tbar[0]/okcd").Text = "/n" & 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/ctxtLISTU").Text = Range("C5").Value
Session.findById("wnd[0]/tbar[1]/btn[8]").press
End Sub
Executando a macro pelo Excel
Antes de executar, confira três pontos:
- O SAP está aberto e com login feito: se houver mais de uma janela do SAP aberta, a macro vai agir na primeira, como vimos acima.
- O arquivo está salvo como Pasta de Trabalho Habilitada para Macro do Excel (*.xlsm): no formato .xlsx, o Excel descarta o código ao salvar.
- A planilha com os dados está na tela: o código lê as células C3, C4 e C5 da planilha que estiver ativa.
Para executar:
- No Excel, pressione Alt + F8, selecione TesteSAP e clique em Executar. No editor do VBA, você também pode clicar dentro da macro e pressionar F5.
- O SAP GUI exibe o aviso “Um script está tentando acessar o SAP GUI”. Clique em OK para confirmar.
- O SAP abre a transação ME2J, preenche os campos com os valores da planilha e gera o relatório.
O aviso aparece cada vez que uma macro se conecta ao SAP. É uma proteção do SAP GUI, e recomendamos mantê-la ativa.A preparação do Excel e as opções de segurança do scripting estão explicadas no artigo Configurar Excel VBA e SAP GUI para automatizar tarefas.
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 GUI Scripting 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 GUI Scripting com Excel VBA oferece.
Este foi um primeiro exemplo simples, para você saber que é possível automatizar este processo de inserção de dados no SAP. Continue acompanhando para aprender 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.
Gostou deste artigo?
Receba mais conteúdos como este direto no seu email.

