Extrair dados do SAP GUI com Power Automate
Quando cria ou atualiza registos em SAP, gera informações de estado que incluem os ID de registo recentemente gerados. A SAP apresenta esta informação de estado na parte inferior do UI SAP.
Aqui está um exemplo da mensagem de estado que o SAP exibe depois de criar uma notificação SAP PM.
Esta informação de estado pode ser útil para os passos do processo de automatização mais tarde. Portanto, deve extrair e atribuir estes dados de estado a variáveis para o processamento de dados a jusante.
Temos várias formas de o conseguir, dependendo da sua abordagem de desenvolvimento. As duas abordagens são técnicas de baixo código ou código-pro.
Abordagem código-pro
A abordagem código-pro utiliza comandos VBScript para extrair informações de elementos SAP UI.
Para extrair dados de estado SAP, como uma requisição de compra recentemente criada ou números de notificação de manutenção de plantas, você precisa de acesso ao elemento UI da barra de estado.
É assim que se acede ao elemento UI da barra de estado.
session.findById("wnd\[0\]/sbar/pane\[0\]").Text
Vamos percorrer a experiência de ponta a ponta. Vamos gravar como criar uma Notificação SAP PM e modificar o código gerado para devolver o ID recém-criado ao Power Automate Desktop.
Caso nunca tenha ouvido falar da Notificação SAP PM ou não tenha acesso a ela, não se preocupe que ainda poderá compreender os passos necessários para extrair esses dados para o seu próprio cenário.
Eis os passos:
Confirme se todas as configurações de scripts SAP GUI estão concluídas.
Abra SAP Logon e selecione o sistema SAP no qual pretende iniciar sessão.
Selecione Personalizar o Layout Local (Alt+F12), e, em seguida, selecione Script Recording and Playback....
Selecione Mais.
Em Guardar para, indique o caminho e o nome do ficheiro onde pretende armazenar as interações do utilizador capturadas.
Selecione o botão Gravar Script para iniciar o processo de captura do ecrã. Todas as interações que fizer agora em SAP serão capturadas como comandos VBScript repetíveis.
Nota
Se gravou passos e guardou para este ficheiro antes, terá de confirmar se pretende substituir o ficheiro.
Introduza o código de transação IW21 e, em seguida, selecione Enter.
Forneça o tipo de Notificação e, em seguida, selecione Enter.
Introduza um Texto Curto, Grupo de Planificadores, Main WorkCtr, e qualquer outro campo que necessite.
Selecione Guardar (Ctrl+S) na barra de ferramentas.
De volta ao formulário Criar notificação PMinicial, irá notar uma nova mensagem de estado na barra de estado no canto inferior esquerdo da UI.
Selecione Sair (Shift+F3) na barra de ferramentas e, em seguida, pare a gravação.
Opcionalmente, saia da sessão no SAP e feche todas as janelas do SAP.
Vamos examinar o código VBScript gerado:
Captura de ecrã de VBScript gerado durante a criação da Notificação SAP If Not IsObject application Then Set SapGuiAuto GetObject quot SAPGUI quot 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 quot on quot WScript ConnectObject application quot on quot End If session findById quot wnd 0 quot maximize session findById quot wnd 0 tbar 0 okcd quot text quot IW21 quot session findById quot wnd 0 quot sendVKey 0 session findById quot wnd 0 usr ctxtRIWO00 QMART quot text quot M2 quot session findById quot wnd 0 usr ctxtRIWO00 QMART quot caretPosition 2 session findById quot wnd 0 quot sendVKey 0 session findById quot wnd 0 usr subSCREE shortened command quot text quot My Notification Short Text quot session findById quot wnd 0 usr tabsTAB_ shortened command quot text quot 010 quot session findById quot wnd 0 usr tabsTAB_ shortened command quot text quot 0001 quot session findById quot wnd 0 usr tabsTAB_ shortened command quot text quot MAIN quot session findById quot wnd 0 usr tabsTAB_ shortened command quot setFocus session findById quot wnd 0 usr tabsTAB_ shortened command quot caretPosition 4 session findById quot wnd 0 tbar 0 btn 11 quot press session findById quot wnd 0 tbar 0 btn 15 quot press.
Agora, vamos ajustar o código gerado para incluir um passo que extrai, corta, e depois devolve o novo ID de notificação à ação Executar VBScript.
Captura de ecrã de VBScript ajustado que devolve a notificação SAP ao Power Automate para Ambiente de Trabalho através de uma variável 39 This is the Save button session findById quot wnd 0 tbar 0 btn 11 quot press 39 This is the full Status Bar text that contain the data to be extracted statusBarMessage session findById quot wnd 0 sbar pane 0 quot text 39 Trimming and removing any text surrounding our new notification Id notificationID Trim Replace Replace statusBarMessage quot Notification quot quot quot quot saved quot quot quot 39 This is the Exit button session findById quot wnd 0 tbar 0 btn 15 quot press 39 This writes the newly created Id to the Run VBScript output variable in Power Automate Desktop WScript Echo notificationID.
Isto define a variável VBScriptOutput da ação Executar VBScript para o ID de notificação recém-criado.
Se quiser ver o conteúdo do VBScriptOutput, pode utilizar uma ação de exibição de mensagem, semelhante à saída nas seguintes imagens.
Abordagem de baixo código
A abordagem de baixo código utiliza ações e selecionadores personalizados para extrair ID de registo recentemente gerados ou outras mensagens de estado que são importantes para o processamento de fluxo a jusante.
Os seguintes passos não entrarão em detalhes sobre como gravar ou usar o design de ação manual para criar um novo registo de notificação SAP PM. Reveja RPA de low-code ou no-code com GUI SAP no Power Automate para Ambiente de Trabalho se precisar de um lembrete de como o fazer.
Siga estes passos para uma abordagem de baixo código:
Utilize o gravador de ambiente de trabalho ou o design de ação manual para capturar todos os controlos necessários para o processo de notificação SAP PM.
Crie um registo de notificação e capture o texto de estado que aparece depois de selecionar Guardar na barra de ferramentas do ecrã de Criar notificação PM.
Depois de guardado o artigo, será redirecionado para o ecrã anterior, onde deverá ver um novo número de notificação no texto da barra de estado.
Agora, volte ao Power Automate Desktop, procure uma ação chamada Obter detalhes de um elemento de UI na janela, e adicione-o à sua tela de autoria.
Selecione o menu suspenso do elemento UI, e depois selecione o botão Adicionar um novo elemento UI.
Selecione a janela SAP Easy Access paire sobre a barra de estado até aparecer uma borda vermelha marcada Gui Statusbar. Enquanto a borda estiver ativa, mantenha a tecla Ctrl sob pressão e clique para selecionar a barra de estado.
Selecione Guardar.
Procure a ação Substituir texto no painel de Ações e arraste-a para a tela de design.
Em Texto a encontrar, introduza Notificação. Em Substituir por, introduza uma cadeia em branco, introduzindo os seguintes carateres: %''%
Adicione outra ação Substituir texto e renomeie as Variáveis produzidas para %NotificationId%. Em Texto para encontrar, introduza save, e em Substituir por, introduza uma cadeia em branco (%''%).
Procure a ação Cortar texto no painel de Ações, arraste-a para a tela de design, selecione %NotificationId% como valor Texto para cortar e renomeie Variáveis produzidas para %TrimmedNotificationID%.
Procure a ação Mostrar mensagem no painel de Ações e arraste-a para a tela de design. Defina título da caixa de mensagem e Mostrar mensagem conforme as suas necessidades.
Executa a automatização que cria uma nova Notificação SAP PM e extrai o seu ID de notificação recentemente gerado que pode ser exibido como se mostra na imagem seguinte.