Sap Script

Sap Script & VBA – Introdução

Este é a primeira postagem que faço sobre Sap Script.

Minha intensão é gerar uma sequencia de postagens sobre esse assunto e tentar repassar o pouco de conhecimento que adquiri.

Para quem nunca ouviu falar em Sap Script, uma forma simplista de exemplificar seria como gravar uma macro no Excel, você clica no gravar macro e dai para frente tudo o que você fizer estará sendo gravado e gerando um código VBA. Com o Sap Script é praticamente a mesma coisa, com a diferença que estará gravando o SAP e o código será um VBS. E assim como no gravador de macro é possível manipular o código e adapta-lo.

Agora para que serve isso?

Eu entendo como uma forma de automatizar processos repetitivos que são realizados de forma manual.

Entre as vantagem eu posso citar o baixo custo, pouco tempo para desenvolvimento, execução direta em ambiente produtivo (não sendo necessário subir em ambiente de qualidade, testar, carregar etc…), mitigação de erros de digitação e padronização dos processos.

E na minha opinião a única desvantagem é a segurança, porque como veremos mais a diante deixar essa opção em aberto pode representar um risco. Que pode ser mitigado com a criação de funções especificas e limitação dos usuários que podem ter esse tipo de acesso.

Nesta introdução irei ensinar como preparar seu ambiente para executar os códigos gerados pelo gerador de script da SAP e como gravar um script utilizando esse gravador. Algo muito simples, mas que servira de referencia para todas as demais postagens que irei publicar nessa serie.

Então vamos lá!!!

A primeira ação é verificar se as configurações do seu Sap permitem a gravação e execução de scripts.

Vou demonstrar pela tela do Sap Logon.

Execute o Sap Logon e conforme a imagem abaixo clique em Opções…

A tela abaixo será apresentada, deixe as configurações conforme imagem. Por questões de versão e idioma podem existir algumas diferenças entre a imagem abaixo e a sua tela de Sap Logon.

Agora vamos gravar um script.

No seu Sap clique no botão de menu destacado na imagem abaixo. Depois clique em Registro e reprodução de script…

Será apresentada a tela abaixo, clique no botão Mais>>

Agora na tela que será apresentada selecione um caminho para salvar o arquivo que irá conter o código gerado pelo gravador, como exercício escolha o seu desktop.

Click no botão vermelho para iniciar a gravação.

A partir desse momento tudo o que é feito no Sap esta sendo gravado e codificado no arquivo indicado na imagem anterior.

Agora vamos fazer algo bem simples como entrar em uma transação e passar parâmetros para ela.

Entre na transação FS10N.

Após digitar e clicar em Enter preencha com seus dados os campos que iram aparecer depois clique no botão amarelo para parar a gravação desse Scritp.

Feito isso será gerado no caminho indicado um arquivo TesteSapScript.vbs, clique como botão direito sobre esse arquivo depois clique em editar.

Será aberto o bloco de notas conforme imagem abaixo.

Vejam que o código acima trás as informações que inserimos na transação, se você dar um duplo clique no arquivo gerado e estiver com o Sap aberto em uma janela inicial ele vai entrar na transação e popular com os dados que você definiu. Como esse código é muito parecido com a linguagem VBA é possível customizar, passar variáveis, fazer loops entre outras coisas. 

Assim eu finalizo essa postagem!!!

Espero que agregue conhecimento e possa servir de referencia a quem esta buscando conhecimento nessa excelente ferramenta que é o Sap.

Logo irei fazer outras postagem que iram complementar esta. Pretendo desenvolver nas proximas postagem um arquivo de login que poderá ser usado para todos os exemplos e ainda postar dicas que podem ser úteis no dia a dia.

25 thoughts on “Sap Script & VBA – Introdução

  • Tiago Ferreira Rodrigues

    muito Bom

    Resposta
  • Jonathas

    Muito bom, queria verificar como trazer os dados da telas das transações para dentro do Excel.
    arcanjobh@gmail.com

    Resposta
    • Fabio Mitsueda

      Obrigado,

      Você chegou a ver a postagem de conexão?

      Seria gravar um script para verificar os campos e trazer no código.

      Resposta
  • Boa tarde,

    Tentei várias vezes e está aparecendo o seguinte erro:

    Error starting’C:\Users\alexsandron\Desktop\MIRO'(rc=-2)

    Poderia me ajudar?

    Resposta
  • Alexsandro

    Olha como ficou o script:

    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]/usr/txtRSYST-BNAME”).text = “ANERIS”
    session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).text = “********”
    session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).setFocus
    session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).caretPosition = 6
    session.findById(“wnd[0]”).sendVKey 0
    session.findById(“wnd[0]/tbar[0]/okcd”).text = “MIRO”
    session.findById(“wnd[0]”).sendVKey 0
    session.findById(“wnd[1]/usr/ctxtBKPF-BUKRS”).text = “1000”
    session.findById(“wnd[1]/usr/ctxtBKPF-BUKRS”).caretPosition = 4
    session.findById(“wnd[1]”).sendVKey 0

    Mas não deu certo.

    Resposta
    • Fabio Mitsueda

      Bom dia,
      Da uma olhada nesse post https://fabiomitsueda.com.br/sap-script-vba-conexao/ acho que ele pode te ajudar.
      Acredito que esteja tentando rodar direto do arquivo vbs, isso funciona as vezes mas dependendo das condições pode não funcionar como alteração de usuario, senha entre outros motivos.
      Veja a postagem acho que vai te ajudar.
      Forte abraço

      Resposta
      • Anônimo

        session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).text = “********” altere a senha aqui manualmente que vai dar certo

        Resposta
  • Geraldo Tolentino

    Boa Tarde, excelente matéria segui os passos e gerei o script acima, preciso de um auxilio para rodar o script na transação IE02 e o primeiro valor é variável como faço para criar um loop onde esta informação deve ser coletada de uma planilha de Excel

    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 = “ie02”
    session.findById(“wnd[0]”).sendVKey 0
    session.findById(“wnd[0]/usr/ctxtRM63E-EQUNR”).text = “123456789” ###(Valor Variável)####
    session.findById(“wnd[0]/usr/ctxtRM63E-EQUNR”).caretPosition = 16
    session.findById(“wnd[0]”).sendVKey 0
    session.findById(“wnd[0]/usr/tabsTABSTRIP/tabpT\04”).select
    session.findById(“wnd[0]/usr/tabsTABSTRIP/tabpT\04/ssubSUB_DATA:SAPLITO0:0102/subSUB_0102A:SAPLITO0:1060/subSUB_1060A:SAPLITO0:1065/btnFCODE_CIPL”).press
    session.findById(“wnd[1]/tbar[0]/btn[14]”).press
    session.findById(“wnd[1]/tbar[0]/btn[16]”).press
    session.findById(“wnd[0]/usr/tabsTABSTRIP/tabpT\02”).select
    session.findById(“wnd[0]/usr/tabsTABSTRIP/tabpT\02/ssubSUB_DATA:SAPLITO0:0102/subSUB_0102A:SAPLITO0:1050/btnFCODE_CHP”).press
    session.findById(“wnd[1]/usr/subSWERK:SAPLITO0:0212/ctxtITOB-SWERK”).text = “XXXX”
    session.findById(“wnd[1]/tbar[0]/btn[0]”).press
    session.findById(“wnd[2]/tbar[0]/btn[0]”).press
    session.findById(“wnd[2]/tbar[0]/btn[0]”).press
    session.findById(“wnd[0]/usr/tabsTABSTRIP/tabpT\02/ssubSUB_DATA:SAPLITO0:0102/subSUB_0102A:SAPLITO0:1050/ctxtITOB-STORT”).text = “444444”
    session.findById(“wnd[0]/usr/tabsTABSTRIP/tabpT\02/ssubSUB_DATA:SAPLITO0:0102/subSUB_0102A:SAPLITO0:1050/ctxtITOB-STORT”).setFocus
    session.findById(“wnd[0]/usr/tabsTABSTRIP/tabpT\02/ssubSUB_DATA:SAPLITO0:0102/subSUB_0102A:SAPLITO0:1050/ctxtITOB-STORT”).caretPosition = 5
    session.findById(“wnd[0]”).sendVKey 0
    session.findById(“wnd[0]/usr/tabsTABSTRIP/tabpT\04”).select
    session.findById(“wnd[0]/usr/tabsTABSTRIP/tabpT\04/ssubSUB_DATA:SAPLITO0:0102/subSUB_0102A:SAPLITO0:1060/subSUB_1060A:SAPLITO0:1065/btnFCODE_CIPL”).press
    session.findById(“wnd[1]/usr/ctxtIEQINSTALL-TPLNR”).text = “xxx.xxx.xxx.xxx.xxx”
    session.findById(“wnd[1]/tbar[0]/btn[16]”).press
    session.findById(“wnd[0]/usr/subSUB_EQKO:SAPLITO0:0152/subSUB_0152C:SAPLITO0:1526/btn%_AUTOTEXT003”).press
    session.findById(“wnd[0]/usr/tabsTABSTRIP_0300/tabpANWS/ssubSUBSCREEN:SAPLBSVA:0302/sub:SAPLBSVA:0302[1]/radJ_STMAINT-ANWS[2,0]”).select
    session.findById(“wnd[0]/usr/tabsTABSTRIP_0300/tabpANWS/ssubSUBSCREEN:SAPLBSVA:0302/sub:SAPLBSVA:0302[1]/radJ_STMAINT-ANWS[2,0]”).setFocus
    session.findById(“wnd[0]/tbar[0]/btn[3]”).press
    session.findById(“wnd[0]/tbar[0]/btn[11]”).press

    Resposta
  • Eduardo Vieira

    Fiz tudo isso, mas quando vc dá dois clicks no script gerado, ele não executa nada.

    Resposta
  • ALEXSANDRO RODRIGO

    Obrigado, deu tudo certo, fiz varias planilhas e estão rodando perfeitamente.

    Resposta
  • Eduardo Pereira da Silva

    Criei um script pelo VBA pra fazer uma consulta no SAP e funcionou certinho porém eu consegui fazer até a parte de selecionar toda a tabela mas não sei como copiar os dados e salvar no Excel. Sabe me informar qual função utilizo pra copiar esses dados no Excel por Scripts?

    Resposta
  • Alan Claudio da Silva

    Caro Mitsueda …eu gostaria por favor de “capturar” o valor que aparece disponível na tela do SAP e levar para dentro do VBA para trabalhar este valor. Poderia por favor me explicar como obter o mesmo?
    Desde já agradeço,
    Alan

    Resposta
    • Anônimo

      Tem que atribuir valor a uma variavel .text

      Resposta
  • Pedro Henrick Faria Andrade

    Bom dia estou com dúvida para resolver uma coisa do SAP . Eu queria gravar um Script das opções de segurança do SAP que fica dentro da caixa que abre a gravação do SAP. E ele não abre la. Alguém consegue me ajudar ?

    Resposta
    • Fabio Mitsueda

      Bom dia, até onde eu tenho conhecimento não é possivel alterar essas configurações via VBA, talvez por SendKey, mas não seria 100%. Tente usar o AutoIT. Abraço

      Resposta
  • Kevlyn de Liz

    Meu sap nao está habilitado a opção “registro e reprodução de script

    Resposta
  • Anônimo

    CONSIGO COLOCAR EM VEZ DE UM TEXTO DEFINIDO EXEMPLO NO LUGAR DO “2018” UM COLAR DE UMA CELULA?

    Resposta
  • Anônimo

    Conteúdo me ajudou bastante, Trabalho excelente!

    Resposta
  • Caio

    A minha opção “registro e reprodução de script” está desabilitada. Sabe o que devo fazer para ativar?

    Resposta
  • Anônimo

    Oi Fabio, o login esta encontrando erros na linha Session.findById(“wnd[0]”).maximize, no “ambiente” eu deveria colocar o que exatamente?

    Resposta
  • Anônimo

    A minha opção “registro e reprodução de script” está desabilitada. Sabe o que devo fazer para ativar?

    Resposta
  • Anônimo

    Bom dia, o botão de REC está cinza, isso se deve ao fato de eu não ter acesso a transação SE71 ?

    Resposta

Deixe uma resposta

%d blogueiros gostam disto: