Hoje vou mostrar uma dica de como forçar um erro no Protheus para analisar a pilha de chamadas.
Algumas vezes, é interessante analisarmos a pilha de chamadas, variáveis e tabelas de um error log para tentarmos decifrar o que está causando o erro.
Porém em algumas mensagens de erro, não é exibido o error log, por se tratar de alguma validação padrão do sistema. Essas mensagens são as famosas Help().
Acontece que boa parte dessas mensagens, já vem com alguma solução para o analista seguir, porém eu já peguei alguns casos de não vir a solução, ai era necessário saber o que estava causando, por isso da ideia de forçar o error log.
Basicamente o que fazemos é assim, criamos um código fonte que ocasionará o erro de propósito (no nosso caso será um type mismatch), e esse fonte iremos vincular a algum atalho do teclado, como por exemplo, Shift + F9. Ai quando a tela estiver sendo exibida, pressionamos esse atalho, e podemos pegar o log completo.
Abaixo um print, no caso eu estava no cadastro de produtos e inseri uma unidade de medida errada, e ao aparecer a tela de log, apertei o atalho configurado:
Abaixo o código fonte desenvolvido:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zErro Função que força a exibição de um Error Log para análise @type Function @author Atilio @since 10/05/2021 @version version @obs O ideal é adicionar a rotina no AfterLogin como um atalho do sistema, por exemplo: User Function AfterLogin() //... SetKey(K_SH_F9, { || u_zErro() }) //Shift + F9 //... Return /*/ User Function zErro() Local nVar := 0 Local cVar := "" //Ao tentar somar / concatenar numérico com caractere irá causar o type mismatch Alert(nVar + cVar) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.