Oi Pessoal,
Conforme já havia antecipado no SIT SL 2015, além da sessão de NF-e marcada para hoje, estamos disponibilizando um guia para analisar incidentes relacionados com a nota fiscal eletrônica tanto no ERP como no SAP NF-e ( vulgo GRC).
De acordo com a votação realizada aqui no SCN os primeiros cenários a serem explorados estão abaixo. Por enquanto apenas o primeiro cenário foi disponibilizado, o "Cancelamento por evento não finalizado no ERP".
Cenários:
•Cancelamento por evento não finalizado no ERP
•NF-e está com status incorreto no ERP e atualização do SAP NF-e não é finalizada ( Em breve )
•NF-e/evento/lote esperando por resposta no SAP NF-e ( Em breve )
•Status incorreto e continuar processo desabilitado ( Em breve )
•NF-e está em status que não permite nenhuma ação no ERP nem no GRC ( Em breve )
•Tag não mapeada corretamente para o XML ( Em breve )
A idéia é que até o fim do mês de Abril tenhamos todos esses cenários acima explicados com detalhes aqui no SCN.
Caso vocês tenham mais idéias e/ou sugestões de cenários sintam-se livres para adicionar/modificar este material ( tanto o tópico como o conteúdo ) pois este é um documento que permite colaboração de toda a comunidade.
Mesmo nos cenários já descritos se vocês tiverem mais sugestões/métodos de analisar ou resolver os problemas sintam-se a vontade para editá-los.
Cancelamento por evento não finalizado no ERP
Como começar a análise?
Eu sempre sugiro começar da própria transação J1BNFE, monitor de NFe no ERP.
O que analisar?
Recomendo começar pelos campos "Etapa do Processo", "status do documento", status de comunicação do sistema e status do sistema de mensageria. Além disso, é necessário clicar no na flag de eventos para poder visualizar o status do evento.
Os status necessários para cada etapa de qualquer processo (autorização, cancelamento, inutilização) podem ser vistos no help do ERP:
Statuses in NF-e/CT-e Monitor
Para entender um pouco mais do processo do cancelamento basta seguir a descrição abaixo. Uma recomendação adicional é sempre procurar por SAP Notes utilizando os objetos relacionados com o processo ( funções, tabelas, estruturas ) e/ou utilizando ferramentas automatizadas da SAP como o ANST (Automated Note Search Tool ).
1- NF-e com inconsistência entre J_1BNFE_EVENT and J_1BNFE_ACTIVE:
No caso abaixo, por exemplo, há uma inconsistência no documento, pois o status do evento é "autorizado" e o status da NF-e é "esperando resposta da mensageria".
A causa mais comum desse erro é a falta da SAP Note 2029305.
A solução desse problema seria manual, executar a função J_1B_NFE_XML_IN simulando a autorização do cancelamento (DOCNUM, AUTHCODE = Protocolo da SEFAZ, AUTHDATE = Data de autorização na SEFAZ, AUTHTIME = Hora da autorização na SEFAZ, CODE = 101 para cancelamento e MSGTYP = 4 autorização para cancelamento )
![Picture1.png]()
2- NF-e (sem inconsistência) esperando resposta do GRC para cancelamento
Esse procedimento acima resolve o problema no caso da tabela de eventos do ERP estar fora de sincronia com a tabela J_1BNFE_ACTIVE.
Porém existem outros cenários de erro em que a tabela de eventos e a tabela active estão em sincronia ( ambas esperando resposta do SAP NF-e / GRC )
![Picture2.png]()
Neste caso a recomendação é verificar como estão os status dos documentos no SAP NF-e / GRC. Se o status do "Cancelamento" for OK ( 01 / Verde ) então bastaria executar a funcionalidade "Repetir etapa process" assim como na imagem abaixo:
![Picture3.png]()
Essa funcionalidade está disponível a partir do SP20
Se o status do "Cancelamento" fosse "135 - Autorizado" e o passo do "update para o ERP" estivesse com Erro ( 02 / Vermelho ) então bastaria executar a funcionalidade "Continuar processo" assim como na imagem abaixo:
![Picture4.png]()
No caso de você não possuir o SP20 e precisar trazer o update de volta pro ERP é possível executar a função /XNFE/PROCSTEP_EV_ERPUPDAT no SAP NF-e para reenviar o status de OK para o ERP.
Porém há casos em que esses procedimentos de disparar a atualização do SAP NF-e ( GRC ) para o ERP podem não funcionar por "n" motivos ( falta de SAP Notes, modificação de funções core, validações incorretas ou commit work dentro de BAdI, problema de conexão ou RFC entre os dois ambientes, etc... )
3- NF-e (sem inconsistência) esperando resposta do GRC para cancelamento porém update do GRC não funcionou
Se esse procedimentos acima não estiverem funcionando, então a última opção para analisar/resolver o problema seria executar a função J_1BNFE_EVENT_IN do lado do ERP para simular o processamento e depurar o programa para identificar a causa da atualização não ser realizada.
![Picture7.png]()
Os parâmetros abaixo são necessários para a execução manual da função. Uma dica interessante caso você não saiba como preenchê-los é botar um breakpoint no SAP NF-e ( GRC ) antes da chamada da J_1BNFE_EVENT_IN e executar a função /XNFE/PROCSTEP_EV_ERPUPDAT. Desta forma seria possível ver quais os parâmetros passados pelo SAP NF-e para o ERP.
![Picture6.png]()
Já do lado do ERP o começo do processamento da J_1BNFE_EVENT_IN tem o FORM process_nfe_for_cancel_event que verifica se o cancelamento foi autorizado, se todas as informações necessárias foram recebidas do SAP NF-e e após isso o programa irá chamar a função J_1B_NFE_XML_IN.
![Picture8.png]()
A função J_1B_NFE_XML_IN por sua vez tem algumas validações dos status da tabela active e também do método check_subsequent_documents da BAdI CL_NFE_PRINT e do período contábil.
![Picture9.png]()
Nesse ponto é possível adicionar regras de negócio para verificar/estornar outros documentos que normalmente não fazem parte do fluxo da NF-e.
![Picture10.png]()
Além disso vale ressaltar que o programa também faz a verificação se o período contábil associado com a empresa ( company code ) está aberto. A lógica do cancelamento da nota fiscal no ERP não permite o estorno se o período contábil está fechado. É necessário, antes de realizar o fechamento, fazer uma varredura dos status das notas fiscais a fim de identificar documentos que estão em processo de cancelamento porém não estão cancelado, a fim de evitar problemas futuros para o fiscal ( nota cancelada na SEFAZ porém não pode mais ser cancelada no ERP ).
![Picture12.png]()
![Picture11.png]()
4- NF-e já cancelada na J_1BNFE_ACTIVE porém parada na etapa "2 - Cancelar documento de origem"
Em muitos casos o ERP irá passar pelas validações acima, porém pode não finalizar o cancelamento com sucesso e parar com o status abaixo:
![Picture13.png]()
Nesse caso o processo de cancelamento/atualização da tabela J_1BNFE_ACTIVE foi realizado com sucesso, porém o documento de origem da NF ( fatura, documento de material, remessa, etc... ) não pode ser estornado por alguma razão.
Para verificar essa razão você pode clicar no log da J1BNFE ( bandeirinha vermelha ). Caso o erro não seja claro ( como por exemplo "No Batch input data for screen XXXX XXXX ) é possível também solicitar o estorno do documento de origem ( conforme imagem abaixo ) e depurar esse processo de cancelamento.
![Picture14.png]()
O código abaixo mostra uma parte da função J_1B_NFE_CANCEL, que identifica qual o tipo de documento de origem e realiza um "call transaction" para a respectiva transação de estorno conforme as imagens abaixo:
![Picture15.png]()
Uma dica para depurar o processo é alterar a variável lv_mode de P para A, desta forma a transação de cancelamento será executada na tela e caso exista algum erro ele será mostrado diretamente na tela.
,