Pular para o conteúdo
Especialidade · ABAP fiscal e customização

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.

Mapa de leitura

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.

Resposta direta

O que é ABAP fiscal e o que ele não é

Em uma frase

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.

Decisão

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.

01

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.

02

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.

03

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.

04

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.

05

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.

Escopo

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ãoPara que servePonto de extensão típicoRisco típico
Enhancement e BAdIInserir 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árioPontos 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 campoBloquear 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çãoAlterar 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 fiscalConferir, 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-eComparar 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 leiauteAcrescentar 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

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.

  1. 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.

  2. 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.

  3. 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

Cálculo e determinação de imposto: onde mexer com cuidado

  1. 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.

  2. 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.

  3. 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.

CamadaQuem mantémMudança de regraQuando usar
Dado mestreFiscal e cadastroCorrige o cadastro, vale para os próximos documentosSempre primeiro: NCM, CFOP, categoria do material, tipo do parceiro
ParametrizaçãoConsultoria e FiscalAltera tabela de configuração, com transporteRegra comum a vários casos e prevista no padrão
Produto fiscalFornecedor do produtoAtualização do produtoRegra de uma família coberta pelo produto
Tabela de decisão ou BRFplusFiscal com apoio técnicoEdita a regra modelada, com simulaçãoRegra da empresa, legível e frequente
Código ABAPEquipe técnicaAltera o programa, testa e transportaRegra 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

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.

  1. 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.

  2. 02

    Segundo, a validação deve distinguir erro que bloqueia de alerta que informa, porque bloquear demais cria o hábito de contornar.

  3. 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

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ênciaO que comparaQuando rodaSaída útil
Nota emitida contra nota lançadaDocumentos autorizados contra lançamentos contábeis e de estoqueDiária ou por fechamentoLista de documentos sem lançamento e de lançamentos sem documento
Nota recebida contra pedidoDocumentos de entrada contra o que foi comprado e recebidoA cada recebimentoDivergências de quantidade, preço e imposto
Apuração contra escrituraçãoImpostos apurados contra valores do arquivo da obrigaçãoAntes do envioDiferenças por imposto, por período e por estabelecimento
Arquivo contra origemRegistros do arquivo gerado contra os documentos que os originaramAntes do envioRegistros sem origem e documentos sem registro
Cadastro contra documentoDado mestre contra o que a nota efetivamente trouxePeriódicaCadastros 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.

Clean Core

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.

  1. 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).

  2. 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).

  3. 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).

  4. 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.

Níveis

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.

A

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.

Leitura fiscal: destino desejável para toda regra nova, o que pede interface liberada para o dado e para o ponto de extensão.
B

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.

Leitura fiscal: realista para muitos casos no Private Edition, com encapsulador e ATC.
C

Nível C

Definição do SAP: em parte compatíveis, mas já tocando objetos internos do SAP.

Leitura fiscal: aceitável como transição, com o motivo registrado, um dono e um plano de saída.
D

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.

Leitura fiscal: evitar, sendo a escrita direta em tabela fiscal do SAP o exemplo mais perigoso.

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.

Teste

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 testeO que provaQuem apoia
ATC com variante de Clean CoreO código usa só objetos e tecnologias permitidosEquipe técnica
Teste unitário (ABAP Unit)A regra do método devolve o resultado esperado para entradas conhecidasEquipe técnica e Fiscal definem os casos
Teste com documentos reais anonimizadosA extensão se comporta bem em cenários de verdade, com os dados da empresaFiscal e equipe técnica
Conferência em homologação do ambiente de emissãoO documento resultante é aceito pelo canal de emissãoIntegrador e Fiscal
Regressão após atualizaçãoNada mudou nos casos já aprovados depois de uma SAP Note ou de uma nova versãoEquipe 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

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

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

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.

01

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.

02

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.

03

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.

04

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

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.

Método

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 05

    Desenvolvimento

    O código é feito no menor tamanho possível, com ATC e testes unitários rodando durante o trabalho.

  6. 06

    Homologação

    O Fiscal testa em ambiente de homologação com documentos representativos, e a aceitação é registrada.

  7. 07

    Transporte e operação

    A ordem de transporte é liberada com a evidência anexa, em janela compatível com o calendário fiscal.

  8. 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

Erros que custam caro em ABAP fiscal

ErroPor que aconteceConsequênciaComo evitar
Customizar antes de corrigir o cadastroO sintoma aparece no documentoCódigo que mascara um dado erradoRevisar dado mestre primeiro
Regra sem dono fiscalO pedido vem da tecnologiaNinguém sabe se a regra continua válidaExigir regra em uma frase assinada
Ponto de extensão não publicadoÉ o caminho mais rápidoQuebra em atualização de versãoUsar só pontos publicados e liberados
Ler e gravar direto em tabelaParece mais simplesEstrutura muda e o código quebra ou corrompe dadoUsar interface estável e encapsular
Duplicar o produto fiscalA regra parecia pequenaDuas fontes da verdadeDecisão de comprar ou construir registrada
Sem teste de regressãoPrazo curtoA regressão aparece em produçãoCasos aprovados e ATC como porta de liberação
Sem documentação do ponto e do nívelO desenvolvedor se mudaNinguém ousa mexerDocumento curto e versionado junto do transporte
Mudar regra no meio do fechamentoUrgênciaNúmeros do mês mudam no meioJanela 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.

DFSpro

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.

Perguntas frequentes

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.

Próximos passos

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.