BAdIs da NF-e: onde o SAP deixa você mexer

Capítulo 4 de 10 · 8 min de leitura · atualizado em 08/10/2026

⚡ Resumo rápido

  • 🔌BAdI = tomada para encaixar sua regra sem mexer no padrão
  • 🆕J_1BNF_ADD_DATA: a nova, grava os dados na própria nota
  • 👴CL_NFE_PRINT: a clássica, mexe só no XML na hora do envio
  • 🤝As duas juntas: SAP Note 2112507 (migração)
NF-e no SAP em 1 imagemDo pedido do cliente até a autorização da SEFAZ e de volta ao SAP · cenário Brasil
🟦 Processo SD🟨 Nota Fiscal eletrônica🟩 Volta ao SAP👆 Clique em cada etapa para ver a tela
1🧾Documento de faturamento

A fatura do SD (VF01). É dela que nasce a Nota Fiscal.

Ex.: fatura 90000789
2📝Nota Fiscal no SAP

Gravada nas tabelas J_1BNFDOC (cabeçalho) e J_1BNFLIN (itens).

Ex.: NF 000123
3🏷️Determinação de imposto

O pricing calcula ICMS, IPI, CBS e IBS; a Reforma define CST e cClassTrib.

Condições CBS3, IB3S
4🔌Mapeamento de campos

BAdIs completam o que o padrão não preenche.

J_1BNF_ADD_DATA, CL_NFE_PRINT
5🧩XML da NF-e

Arquivo no leiaute 4.00 com as tags definidas nas Notas Técnicas.

infCpl, xPed, gIBSCBS
6📮Mensageria

Recebe o XML por RFC, assina com o certificado, envia à SEFAZ e devolve a resposta.

SAP DRC, Mastersaf, NDD…
7🔐Certificado digital

A assinatura que prova que a nota é mesmo da empresa.

Certificado A1
8🚦Validação

A SEFAZ confere centenas de regras do XML.

Regras da NT 2025.002
9✅Autorização

Deu certo: status 100 e protocolo de autorização.

Monitor J1BNFE
10⛔Rejeição

Algo errado: código de erro, corrige e reenvia.

Ex.: 225 (falha no schema)
11🖨️DANFE e e-mail

Depois de autorizada, imprime o DANFE e manda o XML ao cliente.

Mensagem de saída NAST
🎯 Para consultores: entender SD → imposto → mapeamento → XML → mensageria → SEFAZ → volta ao SAP é o que separa quem "abre chamado" de quem resolve projeto de NF-e e Reforma Tributária. reformaclara.com.br
Beto · consultor SAP · personagem
  • Pensa na BAdI como uma tomada na parede: a SAP construiu a casa (o código padrão) e deixou tomadas em pontos certos.
  • Você pluga o seu "aparelho" (a sua regra) sem quebrar a parede.
  • Se a SAP reformar a casa (aplicar SAP Notes), a tomada continua lá.

🔌 As duas BAdIs da NF-e de saída: a clássica e a nova

Beto · consultor SAP · personagem
  • As duas servem para a mesma coisa: colocar no XML o que o SAP padrão não preenche.
  • A diferença é quando rodam e onde o dado fica guardado.
  • Uma mexe só no "envelope" na hora de enviar; a outra escreve na própria nota, no momento de salvar.
👴 Clássica · de mapeamento

CL_NFE_PRINT

apelido: "a NFE print"
  • ⏰ Roda na hora do envio do XML à mensageria
  • ✉️ Mexe só no XML: nada fica gravado na NF do SAP
  • 🔍 Na J1B3N você não vê o que ela preencheu
  • 🧩 Métodos: FILL_HEADER, FILL_ITEM, FILL_CTE_400, além de impressão e lote (CALL_RSNAST00, GET_SERVER)
🆕 Nova · de persistência

J_1BNF_ADD_DATA

apelido: "a J1BNF add data"
  • 💾 Roda quando a NF é salva (VF01, MIGO/MIRO, J1B1N)
  • 📝 Grava os dados na própria NF: o XML só copia
  • 🔍 Aparece na J1B3N, entra na auditoria e no SPED
  • 🧩 Métodos: ADD_DATA, ADD_DATA_J1B1N, FILL_AUTXML
  • ✅ É a recomendada pela SAP (ECC 6 EHP5 em diante e S/4HANA)
⏱️ Em que momento cada uma roda
💵FaturamentoVF01cria a NF
💾NF salvaJ_1BNF_ADD_DATAgrava em J_1BNFDOC / J_1BNFLIN
📝Nota no SAPJ1B3Ndados já aparecem aqui
🧩Montagem do XMLCL_NFE_PRINTmexe só no XML, sem gravar
📮MensageriaJ_1B_NFE_XML_OUTenvio à SEFAZ
👴 CL_NFE_PRINT🆕 J_1BNF_ADD_DATA
Quando rodaNo envio para a mensageriaAo salvar a NF
Onde o dado ficaSó no XMLNa NF do SAP (e daí no XML)
Aparece na J1B3N?❌ Não✅ Sim
Reenvio da notaRoda de novo: pode sair diferente se a regra mudouUsa o que já está gravado: sai igual
Auditoria / SPEDNota no SAP ≠ XML enviadoSAP e XML batem
RecomendaçãoManter o legado e migrar aos poucosUsar em tudo que for novo
🕵️ Por que a SAP criou a nova?
  • Com a clássica, a nota gravada no SAP e o XML que foi para a SEFAZ podiam ser diferentes.
  • Na hora de uma fiscalização, de um reenvio ou de gerar o SPED, ninguém achava no SAP o texto ou a tag que tinha ido no XML: ficava "invisível".
  • Gravando na própria nota, o que está no SAP é exatamente o que foi para o governo.
🤝 Dá para usar as duas juntas?
  • Sim.
  • A SAP Note 2112507 permite as duas ativas ao mesmo tempo, justamente para a empresa migrar da clássica para a nova sem parar.
  • Regra prática:
  • campo que existe nas estruturas da nova (J_1BNF_BADI_HEADER / J_1BNF_BADI_ITEM) → use a nova.
  • Tag que só existe no mapeamento (grupos de extensão) → ainda pode precisar da clássica.

🧰 E as outras BAdIs que aparecem no projeto

BAdIPara que serveQuando roda
J_1BNFE_IN📥 Ajusta como o XML do fornecedor vira dados no SAP: unidade, material, depósito.No recebimento automático (entrada)
BADI_J1B_TAX_SITN 🆕🏷️ Reforma: regra própria de CST e cClassTrib de CBS/IBS por item (método DETERMINE_FOR_OUTGOING).No cálculo do imposto, antes da NF

Fontes: blog SAP "Utilização de ambas as BAdIs de NF-e (J_1BNF_ADD_DATA e CL_NFE_PRINT)", SAP Note 2112507, KBA 2777794 e metadados públicos das BAdIs. Não reproduzimos texto de SAP Notes.

⚠️ Tudo aqui é customizado. Cada empresa tem suas regras, tabelas Z e tipos de NF. Os códigos abaixo são esqueletos didáticos para o consultor entender e adaptar ao cenário. Nunca copie direto para produção.

🗺️ Como um dado viaja até a SEFAZ

Beto · consultor SAP · personagem

Mapear é decidir de onde vem cada informação e em qual campo ela entra em cada etapa, até virar uma tag do XML. Olha três exemplos reais:

📝 Texto "Pedido do cliente: 123" nas informações complementares
📄Dado no SAPVBKD-BSTKDpedido do cliente na ordem
🔌BAdIES_HEADER-INFCPLJ_1BNF_ADD_DATA
🧩Estrutura XMLJ1B_NF_XML_HEADER-INFCOMPmontada pelo NF Writer
📦Tag do XMLinfAdic/infCpl
📮MensageriaJ_1B_NFE_XML_OUTRFC de saída
🏛️SEFAZstatus 100nota autorizada
🛒 Pedido do cliente em cada item (xPed / nItemPed)
📄Dado no SAPVBKD-BSTKDe o item do pedido
🔌BAdIET_ITEM-XPED / NITEMPEDcasando pelo ITMNUM
🧩Estrutura XMLJ1B_NF_XML_ITEM-XPED
📦Tag do XMLdet/prod/xPede nItemPed
📮MensageriaJ_1B_NFE_XML_OUT
🏛️SEFAZstatus 100
👔 Contador autorizado a baixar o XML (autXML)
📋Dado no SAPTabela ZCNPJ do contador (não existe campo padrão)
🔌BAdIFILL_AUTXMLCL_NFE_PRINT ou J_1BNF_ADD_DATA
📦Tag do XMLautXML/CNPJ
📮Mensageriaassina e envia
🏛️SEFAZrejeição 486/487em algumas UFs, se faltar
🧭 Roteiro de mapeamento (do jeito que se faz no projeto)
  • 1️⃣ Liste as tags novas da Nota Técnica (ex.: grupos de IBS/CBS, DFeReferenciado).
  • 2️⃣ Para cada tag, ache a origem do dado no SAP (tabela/campo ou tabela Z).
  • 3️⃣ Veja se o padrão SAP já preenche (SAP Notes da sua versão). Se não, escolha a BAdI.
  • 4️⃣ Monte a planilha de-para: origem → campo da BAdI → tag do XML.
  • 5️⃣ Teste em homologação e confira o XML gerado no monitor da mensageria.

🧭 O caminho de uma NF-e e onde cada BAdI entra

📄1Venda
🧮2Imposto
📝3NF criada
🧩4XML montado
📮5Mensageria
✅6Autorizada

👆 Passe o mouse (ou toque) em cada passo para ver o detalhe

💡 Regra de ouro: qual BAdI usar?
  • 🆕 Projeto novo, campo existe nas estruturas da nova? → J_1BNF_ADD_DATA (grava na nota)
  • 👴 Tag que só sai pelo mapeamento, ou legado que já funciona? → CL_NFE_PRINT
  • 📥 É o XML que chega do fornecedor? → J_1BNFE_IN
  • 🏷️ É CST/cClassTrib da Reforma? → BADI_J1B_TAX_SITN

🧪 Exemplos do dia a dia

📝 Texto nas informações complementares

A Vale Verde quer imprimir "Pedido do cliente nº 123" na nota. → J_1BNF_ADD_DATA, método ADD_DATA, preenchendo o texto do cabeçalho.

👔 Contador pode baixar o XML

Autorizar o CNPJ do escritório contábil no grupo autXML. → FILL_AUTXML.

🔁 Nota de débito apontando a nota original

Levar a chave e o item da venda para o DFeReferenciado. → CL_NFE_PRINT, FILL_ITEM.

📦 Fornecedor manda "CX", o SAP usa "UN"

Converter a unidade no recebimento automático. → J_1BNFE_IN, UNIT_CONVERSION.

🏷️ cClassTrib por cliente

Hospital público usa um cClassTrib, cliente comum usa outro. → BADI_J1B_TAX_SITN.

🖨️ Não imprimir DANFE de amostra

Pular a impressão em certos tipos de nota. → CL_NFE_PRINT, CALL_RSNAST00.

📥 E na entrada (XML do fornecedor)?

📧1XML chega
🔎2Conferência
🤖3Lançamento
🏷️4Reforma

👆 Passe o mouse (ou toque) em cada passo para ver o detalhe

🆕 O que a Reforma mudou nas BAdIs

  • 🏷️ Nasceu a BADI_J1B_TAX_SITN para CST/cClassTrib de CBS e IBS (SAP Notes 3641807 e 3703142 trazem detalhes e novos parâmetros, como data e documento de referência).
  • 🧩 FILL_HEADER e FILL_CTE_400 ganharam parâmetros novos para grupos da Reforma (pagamento antecipado, IBS/CBS no CT-e).
  • 📮 Com SAP DRC, a BADI_NFE_DRCCE_EMAIL permite desligar o e-mail automático da nota autorizada.
  • ☁️ No S/4HANA Cloud (public), o papel da J_1BNF_ADD_DATA é feito pela BAdI NFE_ADDITIONAL_FIELDS_DETERMIN.
⚠️ Não confunda
  • J_1BNF_BADI_HEADER e J_1BNF_BADI_ITEM são estruturas (os "formulários" que a BAdI preenche), não BAdIs.
  • Não existe BAdI para "conversar" com a mensageria: isso é feito por RFC e funções do conector.
  • Para ver e ativar: SE18 (definição) e SE19 (implementação).

❓ Perguntas frequentes

Qual a diferença entre J_1BNF_ADD_DATA e CL_NFE_PRINT?

A J_1BNF_ADD_DATA preenche dados da nota quando ela é criada. A CL_NFE_PRINT completa tags do XML na hora de montar e enviar, e controla a impressão do DANFE.

Preciso de BAdI para a Reforma Tributária?

Depende. Se a determinação padrão de CST/cClassTrib atende, não. Regras próprias por cliente ou material costumam ir na BADI_J1B_TAX_SITN.

📦 Materiais para ir além

Kit

Kit Reforma no SAP

Checklist de SAP Notes, roteiro de testes do CNPJ alfanumérico, matriz de ND/NC × eventos e modelo de EF para ND/NC automática.

Entrar na lista de espera
PDF

Mapa de ND/NC e eventos (para imprimir)

Todos os tpNFDebito, tpNFCredito e eventos numa página, com quem emite, quando usar e o efeito no imposto.

Entrar na lista de espera

Fontes

🧰 Kit Reforma no SAP

Checklist de SAP Notes, roteiro de testes, matriz ND/NC × eventos e modelo de EF. Entre na lista e receba o lançamento com desconto.