cancel
Showing results for 
Search instead for 
Did you mean: 

Dados da fatura J_1BNF_ADD_DATA~ADD_DATA

Former Member
0 Kudos

Preciso conseguir ler textos adicionais dos itens e header da fatura durante a gravação da VF01.

Acontece que quando este método é invocado, a fatura não foi criada fisicamente em banco e o READ_TEXT pela Fatura, item fica impossível.

Alguém já passou por isso?

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Olá André,

Acredito que ja passei por isso, em uma implementação que fiz nós utilizavamos a numeração automática da NF-e (Assim que a NF-e é criada ela ja é numerada e enviada), neste contexto o SAP só realiza o COMMIT nas tabelas do sistema depois de enviar a nota, o que gera este problema, pois o READ_TEXT não consegue achar nada nas tabelas.

Existem duas formas de resolver:

1 - Configure a forma de numeração e envio da NF-e através de Batch Job, desta forma o sistema irá salvar a NF-e primeiro (realizando o COMMIT nas tabelas) e enviará a NF-e depois.

O caminho do SPRO é este (Campo RFC Exec.):

SPRO> Cross-Application Components > General Application Functions > Nota fiscal > Output > Assign Numbering and Printing Parameters

Nesta forma o READ_TEXT na Badi deve funcionar.

2 - A segunda forma é realizar um enhancement no momento da criação da fatura, este enhancement deverá extrair os textos da fatura no momento de salvar e colocá-los em uma variável de memória que será utilizada na Badi da NF-e. Deve-se tomar cuidado com esta solução, pois caso a NF-e seja rejeitada e tenha de ser reenviada, a Badi deve estar preparada para pegar os textos das tabelas standard e não da variável de  memória. Infelizmente não lembro qual foi o local exato do enhancement.

Espero ter ajudado,

Daniel Zambrini

former_member182503
Active Contributor
0 Kudos

Daniel,

O método ADD_DATA da BAdI nova é chamado ao salvar a VF01, independente do decouple. O que impede que os textos do faturamento sejam lidos durante a BAdI é o fato que a função COMMIT_TEXT ser executada pelo standard ANTES da BAdI.

Aqui eu fiz como você sugeriu, porém, fiz usando a exit RV60AFZZ subrotina  USEREXIT_SAVE_DOCUMENT_PREPARE.

Aqui, dei um loop na XTHEAD, chamando a função READ_TEXT com os dados da linha da XTHEAD, guardando os textos relevantes em uma tabela interna e depois exportando para a memória.

Na BAdI ADD_DATA, apenas importava essa tabela da memoria.

[]'s

JN

Former Member
0 Kudos

Obrigado pelo esclarecimento !