Introdução
Muitas vezes precisamos automatizar um processo de input de informações para o SAP e para essa atividade existem diversas ferramentas disponibilizadas pela SAP, mas vamos focar no SAP GUI Scripting.
Esse artigo demonstra a utilização do SAP GUI Scripting que é uma API(Interface de Programação de Aplicações), que pode ser usada para automação de tarefas (repetitivas), testes e carga de dados.
O SAP GUI Scripting é escrito na linguagem de programação VB (Microsoft VBScrip), o VB é uma linguagem de script de fácil aprendizado usada amplamente no pacote MS Office (principalmente Excel) e sistemas comerciais deste o Windows 98.
Apesar do SAP GUI Scripting não ser uma ferramenta nova, vou apresentar sua atualização básica devido ao grande poder de construção, interação com MS Office e flexibilidade.
Objetivo
O objetivo é demostrar automatização de anulação de compensações usando a transação FBRA com SAP GUI Scripting.
Verificação do ambiente
Passo 01: Habilitar o SAP GUI Scripting no SAP GUI Configuration conforme a tela abaixo.
.
Passo 02: Na transação rz11 você terá que habilitar o parâmetro sapgui/user_scripting conforme a nota http://service.sap.com/sap/support/notes/480149.
Criação do Script.
Semelhante ao a LSMW o SAP GUI Scripting precisamos mapear os campos e após o mapeamento o SAP gera o script VB.
Vamos usar a opção “Registro e Reprodução de Scrpit” conforme os passos abaixo:
Passo 01: Criação do script.
Passo 02: É necessário informar a pasta e nome do script para o SAP salvar as informações.
Passo 03: Para começar a gravar é necessário clicar no botão "Registrar Script" e chamar a transação FBRA e informar os dados normalmente.
Passo 04: Vamos usar a transação normalmente e concluir o processo da anulação de partida, após a conclusão vamos clicar no botão "Encerrar". Nesta etapa o SAP já mapeou o campos e tem as informações necessárias.
Passo 05: Vamos abrir o script com o bloco de notas.
Passo 06: Observe que as informações digitas para anulação do documento estão gravadas no script, se executarmos esse scrpit agora ele irá reproduzir no passo 04.
Passo 06: Vamos inserir os blocos (Vermelho) B1 e B2 no nosso script, não é necessário conhecimento de programação.
O bloco B1 vai chamar a planilha (Excel) aberta, ler a planilha, criar uma estrutura de repetição e criar as variáveis com os conteúdos das colunas, com isso substituímos os valores fixos com as variáveis criadas.
O bloco B2 só fecha a instrutura de repetição.
Código Fonte :
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
REM B1 INICIO***********************************************
Dim objExcel
Dim objSheet, intRow, i
Set objExcel = GetObject(, "Excel.Application") ' CHAMA O EXCEL ATIVO
Set objSheet = objExcel.ActiveWorkbook.ActiveSheet ' LER O CONTEUDO DA PRIMEIRA ABA DO EXECEL
For i = 2 To objSheet.UsedRange.Rows.Count ' LER DA PLANILHA APARTI DA 2 LINHA
DOCUMENTO = Trim(CStr(objSheet.Cells(i, 1).Value)) 'A VARIAVEL DOCUMENTO
EMPRESA = Trim(CStr(objSheet.Cells(i, 2).Value)) 'A VARIAVEL EMPRESA
ANO = Trim(CStr(objSheet.Cells(i, 3).Value)) 'A VARIAVEL ANO
session.findById("wnd[0]").maximize
REM B1 FIM *************************************************
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nfbra"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/txtRF05R-AUGBL").Text = DOCUMENTO
session.findById("wnd[0]/usr/ctxtRF05R-BUKRS").Text = EMPRESA
session.findById("wnd[0]/usr/txtRF05R-GJAHR").Text = ANO
session.findById("wnd[0]/usr/txtRF05R-GJAHR").SetFocus
session.findById("wnd[0]/usr/txtRF05R-GJAHR").caretPosition = 4
session.findById("wnd[0]/tbar[0]/btn[11]").press
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]/usr/btnSPOP-OPTION1").press
session.findById("wnd[1]/usr/ctxtRF05R-STGRD").Text = "01"
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]").sendVKey 0
REM B2 ************************************************
Next
REM ****************************************************
Passo 07: Criação da Planilha Excel, só é necessário criar a planilha com colunas DOCUMENTO, EMPRESA e ANO conforme o print abaixo.
Passo 08: Para executar o script é necessário que a planilha (Excel) esteja aberta e com isso vamos usar a opção “Registro e Reprodução de Scrpit”, selecionar o botão "Processar Script" conforme o print abaixo.
Com isso SAP vai interpretar o arquivo script executando a transação FBRA com SAP e lendo as informações da planilha(Excel).
Conclusão
Poderíamos usar LSMW para fazer essa atividade que foi descrita acima, mas a ideia é desvincular da LSMW e apresentar SAP GUI Scripting.
Muitas empresas têm verdadeiros sistemas em planilhas Excel que posteriormente seus resultados precisam ser integrados com o SAP.
A automação dessas tarefas não substitui a inteligência no SAP, mais complementa na utilização do SAP com o usuário final, com isso, dando mais opções ao consultor para desenhar soluções.
O SAP GUI Scripting x MS Office abre leque de possibilidades que vão muito além do que foi apresentado neste artigo, caso queiram conhecer um pouco mais, segue link abaixo.
Caso alguém encontrei algum divergência ou inconsistência, por favor fique a vontade para a devida colaboração.
Abaixo link com maiores informações caso queriam apreender mais.
SAP Connectivity with MS Excel
http://scn.sap.com/docs/DOC-31015
Introduction to SAP Gui Scripting
http://scn.sap.com/community/gui/blog/2012/10/08/introduction-to-sap-gui-scripting
The SAP GUI Scripting API
https://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/80aaac18-2dfe-2a10-bbb1-ec9b3760ea4c&overrid...
SAP GUI Scripting API Documentation
VBScript User's Guide
https://msdn.microsoft.com/en-us/library/sx7b3k7y(v=vs.85).aspx
Artur Paulino Da Silva Cardoso
Claudio Rafael