Financial Management Blogs by SAP
Get financial management insights from blog posts by SAP experts. Find and share tips on how to increase efficiency, reduce risk, and optimize working capital.
cancel
Showing results for 
Search instead for 
Did you mean: 
Renan_Correa
Active Contributor
29,586

Olá Pessoal,

A SAP liberou hoje a nota "2112507 - Additional Data x Mapping BAdI Enablement" que permite a utilização de ambas as BAdI's da NF-e simultaneamente.

Esta flexibilização foi desenvolvida para facilitar a transição da BAdI de mapeamento clássica (CL_NFE_PRINT) para a BAdI de persistência (J_1BNF_ADD_DATA).


A decisão de qual BAdI será executada para um determinado documento será feita com base na implementação e utilização de ambas as BAdI's em tempo de execução dos programas.


Por exemplo, se a BAdI J_1BNF_ADD_DATA está ativa e as estruturas de exportação foram modificadas na execução do código implementado em um método (ADD_DATA por exemplo), então o sistema irá assumir que esta BAdI foi utilizada e não executará os métodos equivalentes da BAdI CL_NFE_PRINT ( FILL_HEADER e FILL_ITEM ).

Se nenhuma ativação foi encontrada e/ou nenhuma mudança ocorreu, então a BAdI CL_NFE_PRINT será chamada.

Abaixo criei um exemplo para mostrar que agora é possível implementar o método ADD_DATA da BAdI J_1BNF_ADD_DATA, verificar o NF type e baseado nisso você pode decidir se um determinado NF type utilizará a BAdI nova ou a antiga. No meu exemplo estou usando NF Type, porém nos cenários de vocês podem ser utilizados outros parâmetros.

-Exemplo utilizando o método ADD_DATA e um cenário a partir da fatura de SD via VF01:

Ao salvar a fatura o programa irá passar pela BAdI nova:

Na minha implementação do método (uma simplificação apenas para exemplo) eu adicionei um check por NF Type, desta maneira a BAdI só irá fazer a alteração do ID_DEST para as notas fiscais com NF type NE.

Após a execução do método ADD_DATA, da BAdI J_1BNF_ADD_DATA, há um método standard que verifica se houve alteração entre os parâmetros antes e depois do método ADD_DATA.

     Nos casos em que houve alteração o programa preenche o campo IND_BADI_CTRL com o X.

  Essa informação é persistida na tabela J_1BNFDOC para o documento que foi criado.

   No meu exemplo a numeração e envio foram feitos manualmente na J1BNFE:

Neste momento o programa irá realizar o mapeamento dos dados da NFe para as estruturas que serão passadas via RFC para a mensageria.

Notem que o programa irá verificar se o campo IND_BADI_CTRL está preenchido na tabela J_1BNFDOC.

Neste momento se este campo estiver preenchido o programa irá limpar o parâmetro obj_ref.

O parâmetro obj_ref será verificado antes da execução dos métodos FILL_HEADER e FILL_ITEM da CL_NFE_PRINT. Se ele estiver vazio então o programa não entrará na execução desses métodos.

att,

Renan Correa

25 Comments