Desenvolvimento ABAP e customização fiscal no SAP: só o recorte fiscal, dentro do Clean Core
ABAP é a linguagem de programação do SAP, e é com ela que a regra fiscal brasileira chega aonde o padrão não chega. A DFSpro desenvolve extensões de recorte fiscal, sempre com revisão de Clean Core e rastreabilidade de ponta a ponta.
Por onde ler, conforme o seu papel
Comece pelo bloco do seu papel ou siga os quatro blocos na ordem em que o trabalho acontece. Os minutos ao lado de cada seção são só uma estimativa de quanto leva ler.
Antes de escrever uma linha de código.
Onde o ABAP fiscal entra no processo.
Clean Core, teste, transporte e documentação.
Mudança de leiaute, método e erros comuns.
Quem define a regra que o código vai executar.
Quem recebe, transporta e mantém o código.
Quem decide escopo e risco.
O que é ABAP fiscal e o que ele não é
ABAP fiscal é o desenvolvimento de código na linguagem do SAP cuja finalidade é a regra fiscal: validar um dado antes de ele gerar um documento, ajustar como um imposto é determinado ou calculado, completar uma nota fiscal com um campo que o padrão não preenche, ou construir um relatório que confere o que foi emitido contra o que foi escriturado.
Ele não é uma fábrica de programas genéricos, não é integração de infraestrutura e não é uma forma de refazer o que a parametrização já resolve.
A fronteira prática é esta.
Quando a regra cabe na parametrização fiscal ou em um produto fiscal homologado como o GUEPARDO Tax, ela deve ficar lá, porque configuração e produto são mantidos por quem os entrega e atravessam as atualizações com menos custo. Quando a regra é da empresa, depende de um dado que só ela tem ou exige um ponto de decisão que o padrão não expõe, o ABAP entra, e entra pequeno, em um ponto de extensão publicado e com teste.
A DFSpro faz esse desenvolvimento no recorte fiscal e o conduz dentro das regras de Clean Core. Isso não a coloca no lugar do integrador do projeto: a arquitetura geral, as interfaces de infraestrutura e a plataforma continuam com quem as responde.
O que a DFSpro acrescenta é o lado fiscal da extensão, ou seja, a certeza de que a regra implementada é a regra fiscal correta, de que o dado de entrada está completo e de que o valor calculado confere com o cenário real.
O princípio que sustenta a página
O SAP descreve o seu modelo atual de desenvolvimento, o ABAP Cloud, como o modelo para criar aplicações, serviços e extensões estáveis ao longo do ciclo de vida e prontas para a nuvem, com uma separação clara entre o código do cliente e o código do SAP, obtida pelo uso exclusivo de objetos e interfaces liberados (Fonte: SAP Help Portal, ABAP Cloud). É esse princípio, separar o que é seu do que é do fornecedor, que sustenta todo o resto da página.
Quando customizar e quando não customizar
A decisão de customizar é a de maior consequência do projeto fiscal, porque cada linha de código do cliente é uma linha que precisa ser testada, transportada, documentada e revisada a cada atualização de SAP Note e de leiaute. Por isso o critério abaixo é de exclusão: o ABAP só entra depois que as alternativas mais baratas de manter foram descartadas, na ordem em que aparecem.
Padrão do SAP resolve?
Antes de qualquer desenho, confirme se o comportamento já existe no padrão e só está desligado, mal parametrizado ou alimentado por dado mestre incompleto. Boa parte dos pedidos de customização fiscal nasce de um cadastro errado, não de uma falta de funcionalidade. O caminho é a revisão de dados mestres fiscais e de parametrização fiscal.
Um produto fiscal resolve?
Se a regra pertence a uma família que um produto homologado já cobre, como a determinação e a apuração tratadas pelo GUEPARDO Tax, reimplementar em ABAP próprio cria uma segunda fonte da verdade e uma segunda manutenção. A decisão de comprar ou construir deve ser explícita e registrada.
Há ponto de extensão publicado?
Se o padrão não resolve e o produto não cobre, procure o ponto de extensão que o SAP oferece para aquela necessidade: um BAdI, uma extensão de campo de usuário-chave, uma API liberada. Customizar fora de ponto publicado é o que gera o risco de atualização.
O desenvolvimento é pequeno e testável?
A regra cabe em um método curto, com entradas e saídas claras, que dá para cobrir com teste automatizado? Se a resposta é não, provavelmente o recorte está grande demais ou a regra ainda está mal definida pelo Fiscal.
Quem vai manter?
Toda extensão precisa de um dono fiscal (quem responde pela regra) e de um dono técnico (quem responde pelo código). Sem os dois nomes, não customize.
Quando o ABAP é a resposta certa
Quando a regra é específica da empresa e não está no padrão nem em produto, quando depende de dado que só o ERP dela possui, quando o ponto de extensão existe e é estável, e quando há um responsável fiscal para a regra. Nesse cenário, um desenvolvimento pequeno e bem testado costuma custar menos do que uma planilha paralela que alguém atualiza à mão.
Quando o ABAP é a resposta errada
Quando a necessidade é de dado mestre corrigido, quando a regra muda a cada mês por decisão de um município ou de um estado e só um produto acompanha esse ritmo, quando o ponto de extensão não existe e a alternativa seria alterar objeto do SAP, ou quando ninguém consegue explicar a regra fiscal em uma frase. Código não corrige regra mal definida, só a executa mais rápido.
Dois sinais ajudam a calibrar. O primeiro é a frequência de mudança: regra que muda toda vez que sai uma nota técnica pede produto ou configuração, não código. O segundo é a proximidade do núcleo: quanto mais perto de uma tabela ou de um programa do SAP o código precisa chegar, maior o risco, e mais forte deve ser a razão para customizar.
O que entra no recorte fiscal
Recorte fiscal significa que a extensão existe por uma razão fiscal e é validada contra uma regra fiscal. As categorias abaixo cobrem a maior parte do que é pedido em um ambiente SAP brasileiro. Cada uma tem um ponto de extensão típico, um risco típico e uma forma de teste.
| Tipo de extensão | Para que serve | Ponto de extensão típico | Risco típico |
|---|---|---|---|
| Enhancement e BAdI | Inserir regra ou completar dado em um ponto previsto do processo, sem alterar o programa do SAP. | BAdIs publicados pelo SAP para o documento ou para a nota fiscal; implementações de enhancement em pontos explícitos. | Escolher ponto não publicado ou implícito, que pode mudar numa atualização. |
| Exit de usuário | Pontos de saída mais antigos, ainda presentes em vários ambientes, para completar um campo ou uma regra. | Exits e user exits do módulo, conforme o processo. | Falta de documentação sobre o que já está implementado ali. |
| Validação de campo | Bloquear ou alertar quando um dado fiscal não está no formato ou na regra esperada. | Ponto de validação do documento, do cadastro ou da nota. | Mensagem pouco clara para o usuário e rejeição só na SEFAZ. |
| Ajuste de cálculo e de determinação | Alterar como a base, a alíquota ou a situação tributária são determinadas em um caso específico. | Regra de determinação, tabela de decisão ou ponto de extensão do cálculo. | Regra duplicada com a parametrização ou com um produto fiscal. |
| Programa e relatório fiscal | Conferir, reconciliar, reprocessar ou apurar, com saída para o analista fiscal. | Programa próprio, classe e relatório sobre APIs liberadas. | Leitura direta de tabela do SAP, que pode mudar de estrutura. |
| Conferência de SPED e de DF-e | Comparar o que foi emitido ou escriturado com o que o ERP tem, antes do envio ou depois. | Relatório de conferência e extração de dados. | Conferir contra a própria fonte, sem independência. |
| Campos de usuário e leiaute | Acrescentar um campo que o leiaute exige e que o padrão não preenche, ou preencher com regra própria. | Extensão de campo de usuário-chave e BAdI do documento fiscal. | Campo criado sem dono e sem regra de preenchimento. |
Fora do recorte estão a arquitetura geral do projeto, as interfaces de infraestrutura, a plataforma e o desenvolvimento genérico sem finalidade fiscal. Para a camada de integração fiscal com a plataforma de integração do SAP, a página de integração fiscal com BTP e API trata do que cabe ali e do que continua com o integrador.
Nota fiscal no SAP e a família J_1BNF
No SAP com a localização Brasil, a nota fiscal é um objeto de dados próprio, com tabelas de cabeçalho e de item e um conjunto de transações para criar, ler e corrigir o documento.
A família de nomes que começa com J_1BNF reúne essas estruturas. Para o desenvolvimento fiscal, três fatos práticos importam.
- 01
O primeiro é que o leiaute das notas fiscais eletrônicas evolui por notas técnicas, e o SAP o acompanha criando campos nas estruturas existentes.
Quem tem código que lê ou grava essas estruturas precisa saber que elas mudam por esse caminho.
- 02
O segundo é que o SAP oferece pontos de extensão específicos para a nota fiscal.
Um artigo de base de conhecimento do SAP sobre o preenchimento do campo AFRMM (adicional de frete para a renovação da marinha mercante) na transação J1B1N cita duas opções de BAdI: CL_NFE_PRINT e J_1BNF_ADD_DATA (Fonte: SAP KBA 2730030). O artigo se refere a sistemas SAP ERP, de modo que, em cada ambiente, a existência e o comportamento do ponto devem ser confirmados antes do desenho.
- 03
O terceiro é que ler e gravar a nota diretamente nas tabelas é o caminho mais frágil.
O caminho mais estável é usar as interfaces que o SAP publica para o objeto, e verificar se elas constam como liberadas para a sua edição do SAP. A mesma lógica de liberação aparece na seção sobre Clean Core mais abaixo.
Exemplo da NT 2023.004
Um exemplo documentado pelo próprio SAP é a Nota Técnica 2023.004 versão 1.10: ela trouxe campos novos nas tabelas de item da nota (J_1BNFLIN), de informação de pagamento (J_1BNFEPAYMENT) e de documentos de importação (J_1BNFIMPORT_DI), e o SAP publicou as SAP Notes correspondentes (Fonte: SAP Community, NT 2023.004).
- Complementar dado da nota. Preencher um campo adicional que o leiaute exige e o padrão não preenche, com a regra definida pelo Fiscal e com o valor de origem documentado.
- Corrigir comportamento pontual. Ajustar um caso que o padrão trata de forma genérica, como uma natureza de operação específica, desde que o ponto de extensão seja publicado.
- Ler a nota para conferência. Montar relatório que cruza a nota, o lançamento e a escrituração, lendo por interface estável e não por tabela copiada.
- Reprocessar com trilha. Reabrir um documento rejeitado, corrigir o dado de origem e reenviar, com registro de quem fez e por quê.
Atenção ao SAP ECC e ao S/4HANA
Os objetos e os pontos de extensão citados nos artigos do SAP variam por produto e por versão. Um ponto que existe em um SAP ECC pode ter outro nome, outra forma ou outra liberação em um S/4HANA, e a revisão do código existente é parte da migração para o S/4HANA. A página sobre documentos fiscais eletrônicos trata do ciclo do documento em si.
Cálculo e determinação de imposto: onde mexer com cuidado
- 01
Determinar um imposto é decidir, a cada item de cada documento, qual é a situação tributária, qual é a base, qual é a alíquota e qual é o tratamento especial aplicável.
No SAP, isso acontece em camadas: dados mestres, parametrização, regras de determinação e, quando necessário, código. Cada camada acima da parametrização aumenta o custo de manter.
- 02
A regra de bolso é empurrar a decisão para a camada mais baixa e mais legível.
Uma tabela de decisão que o analista fiscal consegue ler e corrigir vale mais do que uma condição escondida em um método. O SAP tem para isso o BRFplus (Business Rule Framework plus), definido na documentação oficial como uma interface de programação e de usuário para especificar e processar regras de negócio, que permite modelar regras de forma intuitiva e reutilizá-las em aplicações diferentes (Fonte: SAP Help Portal, BRFplus). A mesma documentação descreve funções, expressões, entradas (contexto) e saídas (resultado), e recursos como simulação, rastreamento, transporte e exportação.
- 03
A consequência para o fiscal é concreta.
Com uma regra modelada em BRFplus, a pergunta do auditor, por que este item saiu com esta situação tributária, pode ser respondida por rastreamento e simulação em vez de leitura de código. É uma vantagem que só existe se a regra estiver, de fato, modelada, e se o BRFplus fizer parte da solução fiscal do seu ambiente, o que deve ser confirmado caso a caso.
| Camada | Quem mantém | Mudança de regra | Quando usar |
|---|---|---|---|
| Dado mestre | Fiscal e cadastro | Corrige o cadastro, vale para os próximos documentos | Sempre primeiro: NCM, CFOP, categoria do material, tipo do parceiro |
| Parametrização | Consultoria e Fiscal | Altera tabela de configuração, com transporte | Regra comum a vários casos e prevista no padrão |
| Produto fiscal | Fornecedor do produto | Atualização do produto | Regra de uma família coberta pelo produto |
| Tabela de decisão ou BRFplus | Fiscal com apoio técnico | Edita a regra modelada, com simulação | Regra da empresa, legível e frequente |
| Código ABAP | Equipe técnica | Altera o programa, testa e transporta | Regra que as camadas anteriores não expressam |
A reforma tributária reforça esse cuidado. Com a chegada de novos tributos e de novos campos nos documentos, regras de determinação que hoje são simples tendem a ganhar dimensões novas, e é nesse cenário que uma extensão mal posicionada se torna um problema de manutenção. A página sobre a reforma tributária com CBS e IBS explica o calendário e o que muda; aqui o ponto é que cada ajuste de cálculo em código precisa de um dono e de um plano de revisão a cada ato novo.
Validação de campos e dados: barrar cedo custa menos
A rejeição de um documento pela SEFAZ chega depois da emissão, com mensagem técnica e com tempo perdido. A validação de campo, feita antes, evita esse retorno. É um dos usos mais saudáveis do ABAP fiscal, porque o código é curto, a regra é objetiva e o benefício é visível.
- Formato. Tamanho, composição e dígito de verificação de identificadores como CNPJ, inscrição e NCM, conferidos antes do documento ser gravado.
- Coerência entre campos. Combinações que não podem coexistir, como uma natureza de operação incompatível com o tipo de parceiro ou um código de situação tributária sem a base correspondente.
- Completude para o leiaute. Campos que o leiaute vigente exige em determinada condição e que o processo de origem costuma deixar em branco.
- Compatibilidade com o dado mestre. Divergência entre o que o documento traz e o que o cadastro do material ou do parceiro afirma, que sinaliza erro de um dos lados.
Três cuidados fazem a diferença.
- 01
Primeiro, a mensagem deve dizer ao usuário o que corrigir, em português claro, e não repetir o código técnico.
- 02
Segundo, a validação deve distinguir erro que bloqueia de alerta que informa, porque bloquear demais cria o hábito de contornar.
- 03
Terceiro, a regra deve estar escrita em uma frase que o Fiscal assina: se o Fiscal não reconhece a frase, o código está validando outra coisa.
Validações que dependem de cadastro se apoiam na qualidade dos dados mestres fiscais. Uma validação bem desenhada às vezes revela que o problema não está no documento e sim no cadastro, o que é um bom resultado: o ABAP serviu de sensor e o conserto vai para a camada certa.
Conferência de SPED e de DF-e: o relatório que o analista usa
Programas de conferência são a categoria de ABAP fiscal que mais se aproxima do trabalho diário do analista. Eles não emitem nem escrituram: leem o que o ERP tem, comparam e mostram a diferença. A página sobre SPED detalha cada obrigação acessória, e a de documentos fiscais eletrônicos detalha o ciclo do documento. A conferência fica entre as duas.
| Conferência | O que compara | Quando roda | Saída útil |
|---|---|---|---|
| Nota emitida contra nota lançada | Documentos autorizados contra lançamentos contábeis e de estoque | Diária ou por fechamento | Lista de documentos sem lançamento e de lançamentos sem documento |
| Nota recebida contra pedido | Documentos de entrada contra o que foi comprado e recebido | A cada recebimento | Divergências de quantidade, preço e imposto |
| Apuração contra escrituração | Impostos apurados contra valores do arquivo da obrigação | Antes do envio | Diferenças por imposto, por período e por estabelecimento |
| Arquivo contra origem | Registros do arquivo gerado contra os documentos que os originaram | Antes do envio | Registros sem origem e documentos sem registro |
| Cadastro contra documento | Dado mestre contra o que a nota efetivamente trouxe | Periódica | Cadastros que geram documento com inconsistência |
Duas características distinguem um bom relatório de conferência.
Independência
A primeira é a independência: ele não pode ler o dado da mesma tabela de onde o arquivo foi gerado e declarar que confere, porque isso só prova que a leitura é igual.
Trilha
A segunda é a trilha: cada diferença aponta para o documento de origem, com data, usuário e estado, para que o analista consiga agir sem abrir outra transação.
Quando o ambiente usa o SAP Document and Reporting Compliance (DRC) ou o SAP Tax Declaration Framework (TDF) para gerar a EFD ICMS IPI, o SAP mantém um guia de diagnóstico de problemas frequentes, com seções de visão geral da solução, configuração básica, tabelas de sombra e complementares e problemas comuns, e indica os componentes de suporte para abertura de chamado (FI-LOC-FI-BR-ACR para o DRC Brasil e FIN-TMF-BR para o TDF) (Fonte: SAP KBA 2924049). Antes de qualquer programa próprio que toque esse fluxo, vale consultar esse guia: muitos pedidos de customização se resolvem ali.
Conferir não é corrigir
O relatório mostra a diferença e a origem. A correção do documento, do cadastro ou da escrituração segue o processo fiscal da empresa, com aprovação de quem responde por ele. Programa que corrige sozinho dado fiscal sem trilha e sem aprovação é um risco, não uma economia.
ABAP e Clean Core: o que o SAP publica
O Clean Core é a prática de manter o núcleo do ERP padrão e estável e de colocar as diferenças da empresa em extensões desacopladas.
A página sobre Clean Core trata do tema no seu conjunto; aqui o foco é o que ele significa para quem escreve ABAP fiscal. As afirmações abaixo vêm de material publicado pelo SAP. O SAP descreve duas formas de estender o S/4HANA Cloud: a extensibilidade lado a lado, na SAP BTP (SAP Business Technology Platform), com aplicações escaláveis e desacopladas do núcleo, e a extensibilidade dentro do sistema (on-stack), com ABAP Cloud, em extensões integradas e estáveis nas atualizações. A escolha entre elas deve considerar o caso de uso, aplicando uma estratégia que prioriza a BTP (Fonte: SAP News Center).
O ABAP Cloud, segundo a documentação do SAP, tem como elementos principais:
Core Data Services (CDS) para modelos de dados e análises; o ABAP RESTful Application Programming Model (RAP) para aplicações transacionais; uma linguagem ABAP otimizada para a nuvem, para a lógica de negócio; interfaces públicas e pontos de extensão obrigatórios do SAP; e as ferramentas ABAP Development Tools (ADT) como ambiente de desenvolvimento (Fonte: SAP Help Portal, ABAP Cloud). A garantia de estabilidade vem de um modelo de liberação de interfaces com ciclo de vida público: o código do cliente só usa o que o SAP liberou para isso.
- 01
Usuário-chave (in-app)
Para necessidades simples, como acrescentar um campo, o SAP indica as ferramentas de usuário-chave. As necessidades mais complexas devem usar as ferramentas ABAP de desenvolvimento (Fonte: ABAP Cloud FAQ).
- 02
On-stack com ABAP Cloud
Código do cliente dentro do S/4HANA, acoplado ao processo, usando só objetos liberados. O SAP o recomenda para cenários fortemente acoplados (Fonte: ABAP Cloud FAQ).
- 03
Lado a lado na BTP
Aplicação separada, que conversa com o ERP por interface. Indicada quando o ciclo de vida da extensão não deve depender do ciclo do núcleo (Fonte: SAP News Center).
- 04
ABAP clássico com governança
Nas edições Private Edition e on-premise, também é possível construir extensões compatíveis com o Clean Core usando ABAP clássico, dentro das regras de nível e das verificações do ATC (Fonte: ABAP Cloud FAQ).
Duas observações de versão evitam surpresas.
O ABAP Cloud está disponível em todas as edições do S/4HANA e é recomendado, mas não obrigatório, no Private Edition e no on-premise, e o conteúdo técnico, como as interfaces liberadas, está disponível a partir da versão 2022 do S/4HANA (Fonte: ABAP Cloud FAQ). Em um ambiente anterior, o mesmo princípio vale como boa prática, mas as ferramentas de verificação são outras.
O que fazer quando falta uma interface liberada?
A resposta do SAP para o Private Edition é criar um encapsulador (wrapper) em ABAP clássico sobre uma interface clássica recomendada e liberar o encapsulador para o ABAP Cloud, usando o ATC para governar esse desenvolvimento (Fonte: SAP Community, Classic APIs). Para o caso de visões CDS não públicas, o FAQ do SAP indica que elas precisam ser encapsuladas e liberadas pelo cliente (Fonte: ABAP Cloud FAQ). Um ABAP fiscal bem feito costuma ter um ou dois desses encapsuladores, bem documentados, e nada além disso.
Os níveis A a D aplicados ao fiscal
O SAP evoluiu o seu modelo de três camadas para um conceito de níveis de Clean Core, com quatro níveis (A, B, C e D) segundo a integridade arquitetural, a estabilidade nas atualizações e o alinhamento com os princípios do Clean Core (Fonte: SAP News Center). Os cartões abaixo resumem a definição do SAP e acrescentam a leitura fiscal da DFSpro.
Nível A
Definição do SAP: extensões totalmente compatíveis, só com interfaces públicas e estáveis, lado a lado na BTP ou on-stack com ABAP Cloud.
Nível B
Definição do SAP: compatíveis, usando também as interfaces e as tecnologias clássicas do SAP, documentadas e em geral estáveis.
Nível C
Definição do SAP: em parte compatíveis, mas já tocando objetos internos do SAP.
Nível D
Definição do SAP: não recomendadas, com objetos explicitamente não recomendados, modificações, escrita em tabelas do SAP ou melhorias implícitas.
A utilidade dessa classificação para o Fiscal é de vocabulário. Em vez de discutir se uma extensão é boa ou ruim, a equipe passa a dizer em que nível ela está e o que seria preciso para subir. Um inventário das extensões fiscais do ambiente, cada uma com nível, dono e data de revisão, é um artefato de governança simples e muito útil, e pode nascer de um Diagnóstico Fiscal SAP.
ATC e testes: o que impede a regressão
O que é o ATC
O ABAP Test Cockpit (ATC) é a estrutura de verificação do SAP integrada ao ambiente de desenvolvimento. Segundo a documentação do SAP, ele simplifica o tratamento dos testes durante o desenvolvimento e permite executar verificações como a verificação estendida de programa, testes estáticos de desempenho, testes de módulo com ABAP Unit, testes de usabilidade e verificações de segurança (Fonte: SAP Help Portal, ABAP Test Cockpit).
A regra de liberação
A regra das diretrizes de programação ABAP é direta: se o ATC está disponível, deve-se rodar uma verificação em todos os objetos de desenvolvimento envolvidos e não pode haver mensagens pendentes antes de liberar os objetos para transporte, e a verificação deve estar integrada à liberação do transporte (Fonte: SAP Help Portal, ABAP Test Cockpit). Na prática, isso transforma o ATC de uma ferramenta opcional em uma porta do processo.
ATC e governança de Clean Core
Para o Clean Core, o SAP indica o ATC como a ferramenta de governança no nível do código (Fonte: SAP News Center). O SAP descreve verificações voltadas a esse fim: uso de interfaces liberadas e tecnologias de extensão permitidas, e documenta notas de suporte para habilitar as verificações com o conceito de interfaces clássicas (as SAP Notes 3449860 e 3565942) (Fonte: SAP Community, Classic APIs). O FAQ do SAP acrescenta que as verificações de Clean Core devem ser agendadas regularmente e que as autorizações devem ser configuradas para que os desenvolvedores usem a versão de linguagem ABAP para desenvolvimento em nuvem (Fonte: ABAP Cloud FAQ).
| Camada de teste | O que prova | Quem apoia |
|---|---|---|
| ATC com variante de Clean Core | O código usa só objetos e tecnologias permitidos | Equipe técnica |
| Teste unitário (ABAP Unit) | A regra do método devolve o resultado esperado para entradas conhecidas | Equipe técnica e Fiscal definem os casos |
| Teste com documentos reais anonimizados | A extensão se comporta bem em cenários de verdade, com os dados da empresa | Fiscal e equipe técnica |
| Conferência em homologação do ambiente de emissão | O documento resultante é aceito pelo canal de emissão | Integrador e Fiscal |
| Regressão após atualização | Nada mudou nos casos já aprovados depois de uma SAP Note ou de uma nova versão | Equipe técnica |
O caso de teste é uma frase do Fiscal
Cada teste unitário deve começar como uma frase escrita pelo Fiscal: para um item com esta natureza e este parceiro, o resultado esperado é este. Quando o caso nasce do Fiscal, o teste prova a regra, não só o código. Quando nasce do desenvolvedor, o teste prova que o código faz o que o desenvolvedor entendeu.
Transporte e rastreabilidade
Uma extensão fiscal só é confiável se for possível dizer, para qualquer data, qual versão do código estava ativa em produção e quem a aprovou. É o que o fluxo de transporte do SAP permite quando é usado com disciplina.
- Uma ordem de transporte por mudança com sentido fiscal completo, com descrição que cita a regra e o chamado de origem, e nunca uma ordem genérica que mistura assuntos.
- Liberação do transporte só depois do ATC sem pendências e do teste de homologação aprovado pelo Fiscal.
- Registro, no chamado, de quem pediu, quem definiu a regra, quem desenvolveu, quem testou e quem aprovou, com datas.
- Evidência de teste anexada ao chamado: casos, resultados e capturas do que foi conferido.
- Janela de transporte para produção alinhada ao calendário fiscal, evitando mudar regra no meio de um fechamento.
- Plano de retorno descrito antes da mudança: como reverter e o que fazer com os documentos gerados no intervalo.
A rastreabilidade tem uma finalidade que vai além da auditoria técnica. Quando uma autuação ou uma divergência pergunta por que um imposto foi calculado de determinada forma em determinado mês, a resposta precisa aparecer em minutos, com a regra, a versão e a aprovação. É o que transforma uma customização em um ativo defensável, e não em um risco escondido.
Documentação que sobrevive à equipe
A documentação de uma extensão fiscal tem três leitores: o fiscal que precisa entender a regra, o técnico que precisa mantê-la e o auditor que precisa confiar nela. Um único documento curto, com seções fixas, atende aos três.
- Regra em uma frase. O que a extensão faz, em linguagem fiscal, assinada pelo responsável da regra.
- Base normativa. O ato, o artigo ou a nota técnica que fundamenta a regra, com link, e a data da última conferência.
- Ponto de extensão e nível. Onde o código está plugado, em que nível de Clean Core se enquadra e por quê.
- Entradas, saídas e exceções. Quais dados lê, o que devolve, o que acontece quando o dado falta.
- Casos de teste. A lista de casos aprovados pelo Fiscal, com o resultado esperado de cada um.
- Dono e revisão. Quem responde fiscalmente, quem responde tecnicamente e quando a regra volta a ser revisada.
Documentação que mora fora do sistema envelhece sem aviso.
O ideal é que o identificador da extensão apareça no código, no chamado e no documento, para que os três se encontrem.
E que o documento seja revisado sempre que o código for alterado, como parte do mesmo transporte.
Manutenção em SAP Notes e mudanças de leiaute
Extensão fiscal não é um projeto que termina. O ambiente em que ela vive muda por ao menos três caminhos, e cada um precisa de uma rotina.
SAP Notes e pacotes
O SAP publica correções e adaptações legais por SAP Notes, como no caso das notas técnicas de NF-e em que novos campos aparecem nas estruturas da nota fiscal (Fonte: SAP Community, NT 2023.004). Cada Note aplicada deve passar por uma checagem de impacto sobre as extensões que tocam o mesmo objeto.
Mudança de leiaute e de regra
Uma nota técnica nova, uma portaria ou uma lei como a da reforma tributária altera a regra que a extensão implementa. A rotina é monitorar o ato, abrir um chamado de revisão e testar contra os casos aprovados.
Atualização de versão
A cada versão do S/4HANA ou do produto fiscal, o conjunto de interfaces liberadas muda. O ATC mostra o que deixou de ser permitido, e a regressão mostra o que deixou de funcionar.
Mudança de cadastro
Dados mestres que mudam em volume, como uma reclassificação de NCM, alteram o comportamento da extensão sem que o código mude. Vale ter um teste de sanidade depois de cargas grandes.
Um modelo de operação contínuo ajuda a não deixar essa rotina para a véspera do problema. A página sobre o AMS Fiscal descreve como esse acompanhamento consultivo pode ser organizado, e a de migração para o S/4HANA trata do momento em que o inventário de extensões é decisivo.
Exemplo ilustrativo de código e de teste
Os trechos abaixo são exemplos curtos e fictícios, escritos só para mostrar o formato de uma validação pequena e o caso de teste que a acompanha. Não representam código de nenhum cliente, não foram feitos para uso em produção e não substituem a análise do ponto de extensão do seu ambiente.
METHOD validar_ncm.
" EXEMPLO ILUSTRATIVO E FICTÍCIO. Não usar em produção.
rejeitado = abap_false.
IF strlen( ncm ) <> 8 OR ncm CN '0123456789'.
rejeitado = abap_true.
mensagem = |NCM { ncm } fora do formato de 8 dígitos|.
ENDIF.
ENDMETHOD.Repare no que o exemplo faz e no que ele evita. Faz uma só coisa, com entrada e saída claras. Não lê tabela do SAP, não grava nada e não depende de variável global. A mensagem diz o que está errado. O método cabe em uma tela e pode ser coberto por teste automatizado, e o ponto de extensão onde ele seria chamado é decisão separada, que depende do ambiente.
Item: material com NCM 12345678, natureza de operação X
Regra assinada pelo Fiscal: "para a natureza X, a NCM precisa existir na tabela Z"
Esperado: aceita
Item: material com NCM 1234
Esperado: rejeita com a mensagem "NCM 1234 fora do formato de 8 dígitos"O caso de teste acima nasceu da regra, escrita em português pelo Fiscal, e não do código. Esse é o formato que se quer: a frase do Fiscal vira o teste, o teste vira o critério para aceitar o código.
Roteiro de uma extensão fiscal
O roteiro abaixo resume como uma extensão fiscal deve ser conduzida, do pedido à operação. Ele serve para quem contrata e para quem executa, e é o que a DFSpro usa como referência no recorte fiscal.
- 01
Pedido e regra
O pedido é descrito em termos fiscais, com o cenário, o documento e o resultado esperado. O Fiscal escreve a regra em uma frase e aponta a base normativa.
- 02
Alternativas
Passa-se pelo critério de quando não customizar: dado mestre, parametrização, produto, ponto de extensão publicado. O resultado fica registrado.
- 03
Desenho
Escolhe-se o ponto de extensão, o nível de Clean Core pretendido e o desenho da interface. Define-se o dono fiscal e o dono técnico.
- 04
Casos de teste
Os casos são escritos antes do código, com o Fiscal, incluindo os casos de borda e os casos em que a regra não deve agir.
- 05
Desenvolvimento
O código é feito no menor tamanho possível, com ATC e testes unitários rodando durante o trabalho.
- 06
Homologação
O Fiscal testa em ambiente de homologação com documentos representativos, e a aceitação é registrada.
- 07
Transporte e operação
A ordem de transporte é liberada com a evidência anexa, em janela compatível com o calendário fiscal.
- 08
Revisão periódica
A extensão entra no inventário, com nível, dono e data de revisão, e é revista a cada ato novo ou a cada atualização.
Erros que custam caro em ABAP fiscal
| Erro | Por que acontece | Consequência | Como evitar |
|---|---|---|---|
| Customizar antes de corrigir o cadastro | O sintoma aparece no documento | Código que mascara um dado errado | Revisar dado mestre primeiro |
| Regra sem dono fiscal | O pedido vem da tecnologia | Ninguém sabe se a regra continua válida | Exigir regra em uma frase assinada |
| Ponto de extensão não publicado | É o caminho mais rápido | Quebra em atualização de versão | Usar só pontos publicados e liberados |
| Ler e gravar direto em tabela | Parece mais simples | Estrutura muda e o código quebra ou corrompe dado | Usar interface estável e encapsular |
| Duplicar o produto fiscal | A regra parecia pequena | Duas fontes da verdade | Decisão de comprar ou construir registrada |
| Sem teste de regressão | Prazo curto | A regressão aparece em produção | Casos aprovados e ATC como porta de liberação |
| Sem documentação do ponto e do nível | O desenvolvedor se muda | Ninguém ousa mexer | Documento curto e versionado junto do transporte |
| Mudar regra no meio do fechamento | Urgência | Números do mês mudam no meio | Janela de transporte alinhada ao calendário fiscal |
A maior parte desses erros tem a mesma raiz: tratar a customização como uma decisão técnica quando ela é, antes, uma decisão fiscal. Quando o Fiscal está na mesa desde o pedido, a maioria desaparece.
Como a DFSpro atua
A DFSpro é uma consultoria de Governança Fiscal SAP, de Curitiba, fundada em 2018, e atua na camada fiscal do projeto.
O que a DFSpro faz
- Desenvolve extensões ABAP de recorte fiscal: enhancements, BAdIs, exits, programas e relatórios fiscais, validações, ajustes de cálculo e de determinação, conferência de SPED e de DF-e.
- Conduz o desenvolvimento dentro das regras de Clean Core, com ATC, testes, transporte e documentação.
- Verifica, com o Fiscal, que a regra implementada é a correta e que o valor calculado confere com o cenário real.
O que a DFSpro não faz
- Não substitui o integrador do projeto na arquitetura geral, nas interfaces de infraestrutura nem na plataforma.
- Não faz desenvolvimento genérico sem finalidade fiscal.
- Não decide pela empresa a interpretação fiscal: quem responde pela regra é o Fiscal e o contador dela.
Para o que cabe à configuração e à determinação padronizada, a DFSpro também é Canal Autorizado do GUEPARDO Tax, produto da NTT DATA, e a decisão entre produto e código é parte do critério de quando customizar. Se a dúvida é o estado atual das suas extensões, o Diagnóstico Fiscal SAP é o ponto de partida.
Fontes oficiais com link
As afirmações sobre o modelo de extensão, o ABAP Cloud, o ATC, o BRFplus e os pontos de extensão da nota fiscal vêm de material publicado pelo SAP, listado abaixo. O critério de decisão e o roteiro são a orientação da DFSpro.
SAP
- ABAP Cloud Development Model (ABAP Cloud in a Nutshell)SAP Help Portal.
- How to Extend SAP S/4HANA Cloud the Right Way, 12/08/2025SAP News Center.
- Classic APIs for ABAP Cloud Developments in SAP Cloud ERPPrivate, 28/02/2024. SAP Community.
- ABAP Cloud FAQSAP Community.
- Business Rule Framework plus (BRFplus)SAP Help Portal.
- ABAP Test Cockpit, ABAP Programming GuidelinesSAP Help Portal.
- SAP KBA 2730030, AFRMM Field in Nota Fiscal Writer (J1B1N)SAP Knowledge Base.
- NF-e Technical Note 2023.004 v1.10New Fields Added to Nota Fiscal, 01/03/2024. SAP Community.
- SAP KBA 2924049DRC Brazil and TDF, EFD ICMS IPI Troubleshooting Guide. SAP Knowledge Base.
Perguntas frequentes sobre ABAP e customização fiscal
01A DFSpro desenvolve ABAP?+
Sim, no recorte fiscal: enhancements, BAdIs, exits, programas e relatórios fiscais, validações, ajustes de cálculo e de determinação de imposto e conferência de SPED e de DF-e. Ela não ocupa o lugar do integrador na arquitetura geral do projeto.
02Quando não vale a pena customizar?+
Quando o padrão já resolve e só falta parametrização ou correção de dado mestre, quando um produto fiscal homologado cobre a regra, quando o ponto de extensão não é publicado ou quando ninguém consegue explicar a regra fiscal em uma frase.
03Customização fiscal é compatível com Clean Core?+
Pode ser. O SAP descreve extensões compatíveis, em quatro níveis, e indica o uso de interfaces liberadas e do ATC como governança (fontes na lista abaixo). A compatibilidade depende de como a extensão é feita, não de ela existir.
04O que é ABAP Cloud e eu preciso dele?+
É o modelo de desenvolvimento do SAP que só usa objetos e interfaces liberados. Segundo o FAQ do SAP, nas edições Private Edition e on-premise ele é recomendado, mas não obrigatório, e o conteúdo técnico está disponível a partir da versão 2022 do S/4HANA.
05Quando usar uma extensão de usuário-chave em vez de ABAP?+
Para necessidades simples, como acrescentar um campo, o SAP indica as ferramentas de usuário-chave. Cenários mais complexos pedem as ferramentas de desenvolvimento ABAP.
06O que é uma extensão lado a lado?+
É uma aplicação separada do ERP, geralmente na SAP BTP, que conversa com ele por interface. O SAP indica escolher entre lado a lado e on-stack conforme o caso de uso, priorizando a BTP.
07O que fazer quando falta uma interface liberada?+
Para o Private Edition, o SAP descreve criar um encapsulador em ABAP clássico sobre uma interface clássica recomendada e liberá-lo para o ABAP Cloud, governado pelo ATC. Visões CDS não públicas precisam ser encapsuladas e liberadas pelo cliente.
08O que o ATC verifica?+
Segundo o SAP, uma variedade de testes, como verificação estendida, desempenho estático, ABAP Unit, usabilidade e segurança, e verificações voltadas ao Clean Core, como o uso de interfaces liberadas. As diretrizes do SAP pedem ATC sem pendências antes da liberação do transporte.
09Posso ler e gravar direto nas tabelas da nota fiscal?+
É o caminho mais frágil. As estruturas da nota mudam com as notas técnicas, como mostrou o SAP na NT 2023.004 v1.10, e a escrita direta em tabelas do SAP aparece, no modelo de níveis, entre as práticas não recomendadas (nível D).
10Como mudanças de leiaute afetam as extensões?+
O SAP entrega os campos novos por SAP Notes. Cada Note aplicada exige uma checagem de impacto nas extensões que tocam o mesmo objeto, e cada ato novo exige revisar a regra implementada.
11O BRFplus faz parte da minha solução fiscal?+
Depende do ambiente e do produto. O BRFplus é uma estrutura de regras do SAP, com simulação e rastreamento, e é uma boa forma de manter regras legíveis, mas a sua presença na solução deve ser confirmada caso a caso.
12Como a customização é testada e rastreada?+
Com ATC, testes unitários escritos a partir de frases do Fiscal, homologação com documentos representativos, ordem de transporte descrita, evidência anexada ao chamado e aprovação registrada.
13Quem é o dono de uma extensão fiscal?+
Dois donos: o fiscal, que responde pela regra, e o técnico, que responde pelo código. Extensão sem os dois não deve entrar em produção.
14Customizar é mais barato do que usar o GUEPARDO Tax?+
Não há resposta geral. Reimplementar em código próprio uma regra que um produto cobre cria uma segunda fonte da verdade e uma segunda manutenção. A decisão deve comparar o custo de manter, não só o de construir, e ser registrada.
15A DFSpro faz a revisão de todo o código do meu ambiente?+
O trabalho da DFSpro é o recorte fiscal, e a revisão de qualidade geral do código da equipe técnica não faz parte dele. Um Diagnóstico Fiscal SAP pode mapear as extensões de relevância fiscal e o nível de cada uma.
16Por onde começar?+
Pela lista das extensões fiscais que já existem e pela lista das que estão pedidas, cada uma com a regra em uma frase. Depois, aplicar o critério de quando não customizar. A conversa por contato leva a isso.
Comece pela regra em uma frase
Se você tem uma extensão fiscal pedida, ou um conjunto de extensões antigas que ninguém ousa mexer, o ponto de partida é o mesmo: escrever, em uma frase, a regra fiscal que o código executa. A conversa por contato é o canal para fazer isso junto com a DFSpro.