Fazendo uma prova de conceito para mensageria Z* de NFE em meia hora

Publicado por:Renan Correa Sun, 15 June 2025
Compartilhe:
15 de June de 2025

Fazendo uma prova de conceito para mensageria Z* de NFE em meia hora

Um ilustre colega de profissão me perguntou recentemente:

“Renan, queria conectar o ambiente de treinamento com o Sefaz, tu consegue configurar alguma filial para mensageria externa?”

A gente já tinha trocado umas mensagens sobre o assunto algumas semanas antes e eu tinha comentado algumas possibilidades de como implementar esse cenário.

Eu disse que com um esforço razoavelmente baixo, mais ou menos meia hora, poderíamos re-utilizar o monitor de NF-e e utilizar uma função para chamar um sistema externo e passar os dados da NF-e.

A implementação

A função J_1BNFE_OUTNFE_CREATE_400 é uma RFC que está no final do processo de mapeamento/envio da NFe e foi originalmente criada justamente para chamar mensagerias terceiras.

Existem vários métodos de chamar uma mensageria externa, dependendo do middleware e forma de integração planejada. Neste caso o ambiente está exposto na internet, então uma simples chamada HTTPS pode ser executada sem muitas necessidades específicas de infraestrutura/governança. Além disso eu gosto de JSON, então usaria esse formato para o payload da interface.

Para fazer isso criei um enhancement na FM para disparar o envio:

Planejando uma integração “mei” moderna eu falei que utilizaria JSON, então antes de montar o JSON propriamente dito declarei uma estrutura de dados para conter todas as estruturas e tabelas internas que fazem parte dos atributos de importação da FM. Nesse momento mapeei cada uma das estruturas para o novo tipo de dados complexo que criei:

Com todos as informações que queria nessa estrutura de dados então chamei uma classe e método do NW para converter essa estrutura de dados para JSON:

Nesse ponto já tenho meu JSON criado com o conteúdo todo da interface:

No meu exemplo a última coisa que fiz nessa POC foi implementar uma chamada do HTTP client do ABAP para chamar a URL do serviço externo:

No meu caso como era só prova de conceito, deixei a URL de chamada hard-coded no enhancement mesmo (mas isso poderia ser definido por uma RFC mesmo):

O teste

Pra confirmar se a chamada bombou configurei na visão J_1BNFE_CUST3_4V a RFC NONE e deixei a filial com a flag de “SAP Messaging System” desmarcada:

Acessei a J1BNFE para uma NFe e fiz o envio de uma nota e deixei um breakpoint no form send_nfe_400 onde está a chamada para a FM em questão:

Nesse ponto a chamada padrão é em background task, mas pulei o código com shift+F12 para a linha 185 para executar a FM no mesmo work process. Fiz isso para ver se estava passando direitinho no meu enhancement, e nesse caso foi tudo bem, conforme observei pelo resultado “Accepted” após a chamada do serviço externo:

Supondo que estava tudo bem então pedi ao ilustre colega para olhar se a mensagem havia chegado no serviço de destino e, como eu já esperava, ela chegou com sucesso pelas bandas de lá:

Moral da História:

Então dá pra fazer uma chamada pra mensageria Z* de NF-e assim facinho, aposentar o GRC de barbada e não comprar o DRC?

Não, não é assim, a vida real não é um moranguinho.

Esse exemplo era só uma prova de conceito e existem muitas coisas que não estão implementadas aí como:

  • Consulta de Status da SEFAZ
  • Contingência SVC
  • Busca de resposta da mensageria para NFe e tratamento de erros da interface de chamada
  • Cancelamento e Inutilização
  • Mapeamento do JSON exportado do SAP para o JSON mensageria externa

O objetivo aqui era só montar uma POC (do “Ingreis” Proof of Concept) e mostrar um jeito possível de fazer a integração sem usar o DRC num ambiente de treinamento. Para fazer uma integração completa num cenário real requer muito mais esforço e posteriormente toda a parte de manutenção e ajustes.

Algumas observações interessantes pra quem for se aventurar para esse lado:

O mapeamento do JSON SAP para o formato final da interface tem coisas chatinhas de fazer:

  • Por exemplo, a estrutura montada pela SAP tem uma tabela de parceiros com ID’s, ela não usa a estrutura do XML da NFe SEFAZ 1 pra 1 como base, por isso preciso mapear o ID do parceiro para as respectivas estruturas de emissor, destinatário, transportador e tal.
  • Além disso os itens/impostos da estrutura da RFC também tem esse conceito de relacionamento, ou seja, não é só mapear 1:1 o campo do JSON da SAP para um JSON de interface da mensageria, preciso mapear os relacionamentos para estruturas det/prod e impostos.
  • Em tempo de reforma tributária por exemplo não se sabe a SAP vai atualizar a estrutura J*XREA*400 com os novos campos da NFe ou não, então isso pode aumentar o esforço para mapear as informações para o JSON intermediário.

Na minha idéia eu só exportei dados do SAP em um formato JSON de acordo com as estruturas declaradas no SAP. O mapeamento pro layout final seria feito em uma ferramenta de integração externa, assim isso teria menos dependências de ajustes/alterações no formato da NFe dentro do S/4HANA por exemplo.

Existem infinitas possibilidades de fazer isso, mas só queria deixar um exemplo de que é possível ainda fazer essa integração como desenvolvimento customizado de projeto. Sou obrigado a dizer que na maioria dos projetos isso não faz o menor sentido, e é mais simples apenas comprar o DRC e/ou um outro produto de parceiro já pronto e homologado.

att.

Renan Correa

Quer ficar ligado nas novidades de localização? Entra no grupo da S4CN no Telegram e segue a gente no canal do Youtube

Mais infos sobre a localização Brasil no ERP, direto da sap, vocês podem conferir no SAP community na tag de S/4HANA logistics for Brazil

Outros posts sobre Localização você pode conferir filtrando pela categoria NFE/CTE ou Localização BR Geral.

Subscribe
Notify of
guest
2 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
Ver Todos Comentarios
Rafae
Rafae
2 dias atrás

Renan, pelo que entendi ai das empresas…
Ou elas compram e implementam o DRC (relato de ser muito caro),
Ou adquirem algum software de consultorias menores…
Ou um suporte de consultorias menores para aplicar as melhorias das NTs no GRC que perderá o suporte SAP, certo?

Você sabe de alguma iniciativa para avaliar dentre os serviços de mensageria existentes o que tem de melhor e mais utilizado hoje?

Last edited 2 dias atrás by Rafae
Sergio
Sergio
18 horas atrás
Responder Para  Rafae

Boa noite, trabalho em consultoria e é isso mesmo. e eu não aconselho a utilizar o que está ultrapassado, se descontinuou veja quais são as opções no mercado e o que cabe no budget da empresa. As atualizações de uma ferramenta como o GRC são muito complexas, exige tempo e algumas vezes os prazos das exigências fiscais são apertados, além de chegar em um ponto que pode não funcionar mais por questões de protocolo de segurança JAVA TLS/SSL

2
0
Deixa tua opinião aí!x