Sap Script & VBA – Tipos de mensagens
Enquanto trabalhamos nas atividades do dia a dia é bastante comum que durante uma entrada de dados ou geração de relatórios seja exibido algum tipo de mensagem no rodapé ou mesmo uma janela modal Pop Up em tela, esses avisos podem ser de informação, alerta ou erro.
Algumas dessas mensagens trazem também informação. Por exemplo, após efetuar um lançamento manual pela transação FV50 é informado uma mensagem no rodapé com o numero do documento.
Essas mensagens nem sempre podem ser capturada durante a gravação do script e sua exibição pode atrapalhar a execução correta do seu código. Acarretando em uma quebra no seu código principalmente se a mensagem solicitar algum tipo de interação com o usuário.
Por padrão temos 5 (cinco) mensagem que podem ser exibidas no seu SAP (pelo menos as que eu conheço e que encontrei em pesquisas).
Mensagem tipo S (Sucesso) – Essa é uma mensagem de que tudo ocorreu corretamente ela não necessita de nenhuma intervenção e não trava o código VBA, não sendo necessário tratar a menos que queira pegar o texto exibido na mensagem.
Mensagem tipo I (Informação) – Essa mensagem apresenta informações, não é muito comum aparecer, mas caso apareça pode travar seu código sendo necessário enviar um enter para prosseguir.
Mensagem tipo W (Alerta) – Essa mensagem é a mais comum e assim como a de informação necessita de uma iteração com o usuário, geralmente um enter para dar sequencia no código.
Mensagem tipo E (Erro) – Essa mensagem é ruim! Ocorreu um erro e também deve ser tratado e necessita de uma interação com usuário. O ideal é que caso apareça essa mensagem seu código ou trate ou pare mesmo.
Mensagem tipo A (Abend) – Essa mensagem também é ruim e tem a mesma tratativa de um erro, geralmente quando ela aparece após o enter o SAP volta para o nível superior anterior a execução. O erro no código deve ser tratado ou o código vai parar.
O código Session.findById(“wnd[0]/sbar”).messagetype vai retornar uma das cinco variáveis acima (S-I-W-E-A), com essa informação é possível colocar em trechos estratégicos do seu código um tratamento para tratar essas mensagens.
Para capturar o texto na mensagem do tipo S (Sucesso) utilize o trecho do código:
1 2 3 |
'Capturando texto da mensagem de sucesso Dim strTexto As String strTexto = Session.findById("wnd[0]/sbar").Text |
Para tratar os demais erros enviando um enter para passar o código use o código:
1 2 3 4 5 |
'Verificando qual o tipo da mensagem, caso seja W conforme texto acima será um alerta! If Session.findById("wnd[0]/sbar").messagetype = "W" Then 'Enviando o comando enter para dar sequencia ao código. Session.findById("wnd[0]").sendVKey 0 End If |
Com as dicas acimas é possível adaptar seu código para tratar essas mensagens que podem aparecer em sequencia sendo necessário enviar vários enter’s o que pode ser solucionado com um loop ou um laço de repetição combinado com um tratamento de erros On Error Resume Next / On Error GoTo 0.
Varias são as possibilidade e com certeza existem outras formas de chegar ao mesmo resultado! Espero ter colaborado com essa dica e caso tenham algo a contribuir ou questionar deixe seu recado! Feedback são sempre bem vindos! Abraço!!!
Estas postagens Sap Script & VBA são muito valiosas Sr Fabio, vou tentar carregar dados do Excel para preenchimento de dados no SAP, a princípio está tudo funcionando, graças à qualidade desse seu código comentado. Obrigado por compartilhar!
Obrigado Evandro.
também preciso dessa ajudinha
Fabio, muito bom seu trabalho….so fiquei em duvidas de como capturar por exemplo as informacoes que sao exibidas por exemplo na barra que fica no rodape do sap…quando por exemplo ele cria uma solicitacao ou uma remessa por exemplo….ele cria com sucesso e fala o numero…como eu capturo a mensagem la do rodape?
Você pode utilizar o código “Session.findById(“wnd[0]/sbar”).Text” para capturar as informações do rodapé e armazenar em uma variável.
Fábio, faz um excelente trabalho.
Estou me aventurando em criar scritp para o excel para trabalhar em alguns processos do SAP.
Consegui montar script que efetua o registro de acordo com os dados da planilha.
Porém alguns registros não são concluídos pois falta parâmetros a serem cadastrados no SAP, onde temos as mensagens de erro SAP.
Meu script já informa status como registrado e me retorna o numero de registro, mas quando dá erro para tudo.
Preciso inserir no código algo que quando der erro saia da transação e siga para o próximo registro, você tem alguma idéia ou sugestão, algum site que possa estudar o assunto.
Agradeço se puder ajudar.
Alguém tem um código script para pedidos. Buscandos as informações como data base, valor líquido, nm
Oi Fábio, Blz?
Segui os passos, mas o SAP me retorna essa mensagem quando aparece o Erro (Tipo E):
“The control could not be found by ID”
Daí não consigo colocar uma tratativa, o Script para a execução.
Já viu algo parecido?
Parabens, me ajudou bastante.
Muito obrigado, estava precisando desta ajuda.
Muito obrigado cara. Estás de parabéns ajudaste me muito
Prof. Fábio, boa noite… Estou encontrando alguns problemas com a ID da tela SAPLMEGUI, onde sempre temos a alteração da ID ocasionando erro de tela ou ele não aplica os comandos. Utilizando a ME53N ele não pega algumas informações. Será que desta maneira o código conseguirá acesso? Grato.
Olá Prof. Fábio. As vezes ocorre um erro no Script e pára a execução. Prefiro que se ocorrer um erro, simplesmente seja desviado para o fim do código e feche a transação. Teria como?
Tem como desviar para o fim do código e encerrar o SAP?