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.
