⚡ Resumo rápido
- 🤖ND a partir da ordem; NC a partir da devolução
- 🧩Nota criada sempre pela BAPI
- 🚪Validações no CHK_ALL (VALID e SUBST)
- ⚙️Regras em tabela, sem hard-code
- Este é um padrão de solução usado em projetos reais de Reforma no SAP.
- Os nomes de objetos Z abaixo são ilustrativos — adapte à convenção da sua empresa.
As transações do desenho
| Transação Z (exemplo) | O que faz | Exemplo de uso |
|---|---|---|
ZRT_CLASSTRIB | Cadastra as classificações tributárias (cClassTrib) com alíquota e redução. Extensão da transação padrão J_1BTAX_SITN. | Registrar o cClass de um produto com o CST e a alíquota reduzida |
ZRT_RELATORIO | Relatório (ALV) das NFs com cClassTrib e valores de IBS/CBS por item. | Conferir no fim do mês o IBS/CBS das notas |
ZRT_ND_ANTECIP | Cria a ND de pagamento antecipado (tipo 06) a partir de uma ordem de venda não faturada. | Cliente pagou adiantado → ND num clique |
ZRT_NC_DEVOL | Cria a NC de devolução (tipo 03) a partir de uma NF de devolução registrada. | Cliente devolveu → NC espelhando a devolução |
ZRT_EVENTOS | Cockpit de eventos: cria, envia, cancela e monitora eventos. | Registrar o evento 211124 de carga roubada |
Perda em estoque (ND 07) costuma ser tratada por evento (112130/211124) + ND manual, sem transação dedicada.
Transações padrão envolvidas
| Transação | Para que serve aqui |
|---|---|
J1B1N / J1B2N / J1B3N | Criar / alterar / exibir NF manual (NF Writer) — onde se digita a ND/NC à mão |
VK11 | Regras de condição de SD: alíquotas de IBS/CBS e determinação do cClass |
FV11 | O mesmo para compras (MM): alíquotas dedutíveis/não dedutíveis |
SNOTE | Aplicar as SAP Notes (3561376, 3664725…) |
J1BNFE | Monitor da NF-e: autorizado ou rejeitado pela SEFAZ |
Building blocks técnicos
- SAP Notes base: central
3561376+3664725(habilitação de NF de crédito e débito). Confirme viaSNOTE. - Validações custom na NF Writer: enhancement no método
CHK_ALLda classe padrãoCL_J_1BNF_CONSISTENCY_CHECK, usando a mesma tela de mensagens do SAP. - Criação automática da NF: sempre pela BAPI
BAPI_J_1B_NF_CREATEFROMDATA— débito comdoctyp='D', crédito comdoctyp='C', cada um com seu tipo de NF. Nada gravado direto no banco. - cClassTrib: determinado por condição em
VK11; ao referenciar NF original, o sistema herda o cClass da nota de origem (J_1BNFLIN) ou da ordem (VBAP) — o herdado prevalece sobre a sequência de acesso. - Condições de alíquota: SD —
CBS3(CBS),IB3S(IBS estadual),IB3M(IBS municipal) emVK11. MM —BXCB/BXBS/BXBMemFV11. - Base de IBS/CBS: preço líquido (preço − ICMS − PIS − COFINS). Impostos "dentro" do preço entram na ND/NC como estatísticos (espelhando a NF de venda); impostos "fora" (ICMS-ST, FCP) como despesas. A ND/NC deve espelhar a situação tributária da NF original.
- Referência: documento original no campo DOCREF — no cabeçalho (ex.: NC de devolução tipo 03) ou no item (ex.: ND de multa tipo 04). Ordem não faturada no campo ORDEM (10 posições, zeros à esquerda). Corresponde ao grupo
DFeReferenciado(chave + nItem). - Tabela de parametrização: validações, impostos dentro/fora e eventos habilitados ficam numa tabela Z — config-driven, sem hard-code.
Os "porteiros": includes de validação e substituição
- O SAP já tem um porteiro padrão que confere a nota antes de salvar (
CHK_ALL). - A solução pluga porteiros extras no mesmo ponto.
- Há dois tipos: os que barram e mostram erro (VALID) e os que preenchem sozinhos (SUBST).
- "DC" = Débito/Crédito.
| Include (exemplo) | Tipo | O que faz | Exemplo |
|---|---|---|---|
Z_NF_SUBST_VALID | maestro | Chama os outros na ordem certa | Roda primeiro e decide quais checagens aplicar |
Z_NF_VALID | valida | Regras para qualquer nota | Confere se o cClassTrib existe |
Z_NFWRITER_VALID | valida | Regras só para NF manual | Obriga campos que numa nota automática viriam prontos |
Z_NFWRITER_DC_VALID | valida | Regras só para ND/NC manual | ND 04 sem item da NF original → erro |
Z_NF_SUBST | preenche | Preenche em qualquer nota | Deriva e grava o cClass |
Z_NFWRITER_SUBST | preenche | Preenchimento para NF manual | Completa dados padrão |
Z_NFWRITER_DC_SUBST | preenche | Preenchimento para ND/NC manual | Herda o cClass da NF original |
- Os VALID dizem "faltou X" e não deixam salvar.
- Os SUBST fazem o trabalho chato (herdar cClass etc.).
- Tudo é ligado/desligado pela tabela de parametrização — sem mexer em código.
Validações pegando erro (antes da SEFAZ)
| O usuário faz… | Quem pega | Mensagem |
|---|---|---|
| Cria ND 04 (multa) sem apontar o item da NF original | DC_VALID (item) | "Referência (ITMREF) é obrigatória" |
| Escolhe uma ordem que já foi faturada | Validação da ORDEM | "Ordem já faturada" |
| Referencia NF de outro cliente | DC_VALID | "Parceiro não confere" |
| Referencia item com material diferente | DC_VALID (ITMREF) | "Material não confere" |
| cClass em branco com documento referenciado | DC_VALID + DC_SUBST | Tenta herdar de J_1BNFLIN/VBAP; senão "cClass ausente" |
Caso 1 — Cliente paga adiantado (ND 06)
| # | Processo (o que a pessoa faz) | Técnico (o que o SAP faz) |
|---|---|---|
| 1 | Vendedor cria a ordem (VA01) e não fatura | Grava a ordem; determina o cClass; calcula IBS/CBS |
| 2 | Financeiro abre a transação de ND antecipada | Lista ordens elegíveis: não faturadas, sem rejeição, sem ND vinculada |
| 3 | Seleciona a ordem e clica "Débito" | BAPI_J_1B_NF_CREATEFROMDATA cria a ND (doctyp='D') |
| 4 | (automático) | DC_VALID confere o campo ORDEM; DC_SUBST herda o cClass |
| 5 | A ND sai com o imposto certo | Base IBS/CBS sem os impostos que não a compõem; ICMS como estatístico; ICMS-ST/FCP como despesa |
| 6 | Na entrega, emite a NF de venda | A NF de venda referencia a ND (campo de antecipação) → o fisco deduz o IBS já pago |
Selecionar ordens
Não faturadas, sem rejeição, sem ND (confirme os tipos de ordem da sua empresa).
Criar a ND
Uma ND por ordem, espelhando itens, quantidades, preço e impostos.
Base IBS/CBS
Preço líquido; dentro = estatístico; fora = despesa.
NF de venda futura
Referencia a ND antecipada.
Caso 2 — Cliente devolve mercadoria (NC 03)
| # | Processo | Técnico |
|---|---|---|
| 1 | Registra a NF de devolução (ordem de devolução + recebimento + fatura) | Reverte os impostos tradicionais (ICMS/PIS/COFINS) — fluxo padrão |
| 2 | Abre a transação de NC de devolução | Lista devoluções sem NC associada (lê J_1BNFDOC) |
| 3 | Seleciona e clica "Crédito" | BAPI cria a NC (doctyp='C') espelhando a devolução → reverte IBS/CBS |
| 4 | (automático) | DC_VALID confere a referência à NF de venda no item (chave + item); DC_SUBST herda o cClass |
| 5 | Tudo rastreável | Devolução (tradicionais) + NC (IBS/CBS), ambas referenciando a venda original |
- Pelo entendimento atual, a devolução precisa da NF de devolução (impostos antigos) e da NC (IBS/CBS).
- O Ajuste SINIEF 49/2025 busca unificar numa só — se confirmado, vira simplificação.
Atenção ao reaproveitar desenhos de outro segmento
É comum partir de uma solução feita para outra empresa. Alguns pontos não se copiam crus:
| Tema | O que verificar |
|---|---|
| Plataforma (ECC × S/4HANA) | Objetos ABAP e BAPI são os mesmos; algumas telas e notas diferem. |
| Transmissão (DRC × mensageria) | 🔴 A camada de autorização/envio muda. O desenho funcional e as transações Z se reaproveitam; a integração, não. |
| Tipos de NF | Mapeie seus tipos de débito/crédito para o papel dos tipos do desenho original. |
| Tipos de ordem de venda/devolução | Os seletores dos programas dependem disso. |
| Regras setoriais | Remova o que é específico do segmento de origem (veja abaixo). |
Exemplo: "lista positiva" de medicamentos
- No setor farmacêutico, produtos da lista positiva têm crédito presumido de PIS/Cofins.
- Por isso, a base de IBS/CBS não exclui PIS/Cofins — fica maior:
| Componente | Regra geral | Lista positiva (farma) |
|---|---|---|
| Preço líquido | 6.788,06 | 6.788,06 |
| PIS | 161,99 | 161,99 |
| COFINS | 763,66 | 763,66 |
| Base IBS/CBS | 6.788,06 | 7.713,71 (líquido + PIS + COFINS) |
- Se a sua empresa não é farmacêutica, essa regra e campos como código ANVISA e lote são código morto — remova ao reaproveitar o desenho.
- Em resumo, dá para reaproveitar cerca de 80% do desenho (validações, parametrização, BAPI, cClass, cálculo de base) e reescrever a camada de transmissão e as regras setoriais.
Plano de ação
- Ver um ambiente real rodando ponta a ponta: ordem → remessa → fatura → ND/NC, com contabilização.
- Reusar EF/ET como template, trocando a seção de integração.
- Checar pré-requisitos via
SNOTE(3664725, cadeia da 3561376), tipos de NF e condiçõesCBS3/IB3S/IB3M. - Criar a tabela de parametrização.
- Implementar as validações no enhancement do
CHK_ALL. - Construir as transações de ND 06 e NC 03/06 com a BAPI.
- Confirmar os tipos de ordem de venda e devolução.
- Alinhar eventos com a mensageria sem duplicar o que o produto já entrega.
- Remover regras setoriais que não se aplicam e validar o cálculo da base.
Perguntas para fazer antes de começar
- Vamos usar DRC em algum momento, ou eventos ficam 100% na mensageria?
- Quais os tipos de ordem de venda e de devolução?
- A contabilização (baixa de estoque, contas a receber, estorno de ordem) entra no escopo automático ou fica manual?
📦 Materiais para ir além
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 esperaMapa 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