on 09-18-2015 7:46 PM
Olá pessoal, boa tarde.
Estamos com uma dúvida na utilização da J_1BNF_ADD_DATA (BAdI Nova para NFe). O entendimento inicial era que a BAdI nova viria para substituir a antiga e que, uma vez ativada, o standard não realizaria a chamada dos desenvolvimentos presentes na CL_NFE_PRINT, e que deve-se iniciar uma migração dos desenvolvimentos. Porém, com as mudanças desenvolvidas pela nota 2112507 - Additional Data x Mapping BAdI Enablement, permite-se a chamada das BAdI simultaneamente, auxiliando na migração.
Imaginando uma situação onde nenhuma das BAdIs estão implementadas (instalação nova, por exemplo), o caminho natural seria a utilização da BAdI nova. Porém, apenas os campos adicionais estão disponíveis para modificação (parâmetro Changing). Como poderíamos modificar o conteúdo dos demais campos?
Por exemplo: EXTIPI. Neste caso, ele somente existe no XML, não foi incluído na estrutura de item da nota fiscal (J_1BNFLIN) tampouco na de Additional Item Fields. Entendo que ele está contemplado no próprio campo NCM, mas gostaríamos de usar outra regra para sua utilização.
Em outras situações, implementaria a CL_NFE_PRINT-FILL_ITEM conforme a necessidade, porém como pretendemos usar apenas a nova, como poderíamos fazer? Lembrando que a pergunta não é específica deste campo, mas para qualquer outro. Toda a ajuda ou exemplo será bem vinda.
Obrigado pela atenção.
Alexandre,
Esse gap entre a BAdI nova e velha é de matar mesmo. Como solução, sugiro o bom e velho Dirty-assign.
Exemplo, no método IF_J_1BNF_ADD_DATA~FILL_EXPARAMETERS, alterando a tabela LIN
FIELD-SYMBOLS: <fs_lin> TYPE j_1bnflin.
ASSIGN ('(SAPLJ_1B_NFE)WK_ITEM') TO <fs_lin>.
IF <fs_lin> IS ASSIGNED.
"Altero qualquer campo da LIN
<fs_lin>-docref = '123456789'.
ENDIF.
Você pode ver o que você quer alterar(variavel, estrutura, tabela) dando uma olhada nos includes que chamam a nova BAdI. Vá na SE24 e veja o where-used list da interface IF_J_1BNF_ADD_DATA. Exemplo: Include LJ_1B_NFEF45 ou LJ1BIF27.
[]'s
JN
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Alexandre,
Com a técnica do dirty-assign você consegue alterar a maioria das variaveis, estruturas ou tabelas do programa, basta você saber usá-la e encontrar o momento oportuno para isso.
Vamos ao seu exemplo: Campo EXTIPI - ele é preenchido no FORM map_xmli_tab. A tabela é a xmli_tab (guarde esse nome). Após esse form ser chamado, o FORM call_badis_310. é executado. PRONTO! Encontramos o momento oportuno.
Usando a BAdI nova ou velha, o método a ser implementado é o FILL_AUTXML.
Lá dentro, coloque o código abaixo:
FIELD-SYMBOLS: <fs_xmli_tab> TYPE j_1b_nf_xml_item_tab,
<fs_xmli> TYPE j_1b_nf_xml_item.
ASSIGN ('(SAPLJ_1B_NFE)XMLI_TAB') TO <fs_xmli_tab>.
IF <fs_xmli_tab> IS ASSIGNED.
LOOP AT <fs_xmli_tab> ASSIGNING <fs_xmli>.
<fs_xmli>-extipi = lv_valor.
ENDLOOP.
ENDIF.
Se mesmo assim você achar que não está de bom tamanho... Implicit Enhancement Point: How To Do Implicit Enhancement - ABAP Development - SCN Wiki
[]'s
JN
Olá Alexandre.
Existe uma intenção de que a maior parte (senão todos) dos campos seja suportado na BADI nova.
O que a BADI nova não vai permitir de forma geral é a alteração de campos que podem ser determinados pelo sistema.
Se existe um campo que não é suportado em nenhum ponto eu sugiro que também sempre entre em contato com a SAP através de um chamado para questionar se existe algo oficial ou se não é algo que foi esquecido.
O gap pode não ser intencional.
abs
André
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
6 | |
5 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.