======= ESSE TEXTO PODE NÃO SER 100% =======================
Peguei casos em q as 2 estão ativas e funcionando
============================================================
Voltei a ativa e já peguei um pepino..
Li umas notas e tal sobre esse caso, foi bem porque eu tinha um método para modificar um XML na BADI NFE_PRINT e tinha um código nessa outra BADI ADD_DATA, aí tava vendo uns blogs e tal e falaram que se uma estivesse implementada a outra não funcionaria, fui nessa direção querendo passar tudo que tava numa para outra, mas aí reparei que não é bem assim, as duas podem estar ativadas e só é desconsiderado a NFE_PRINT se alguma alteração na estrutura for feita na ADD_DATA, ou seja mesmo as 2 ativadas se não tiver alteração nenhuma na ADD_DATA vai passar pela NFE_PRINT.
Existe um código logo após a ADD_DATA que verifica se houve modificação nos dados do que entrou para o que saiu da BADI, quando isso acontece que é no momento de criar a nota, fica um flag na J_1BNFDOC campo IND_BADI_CTRL que fica marcado, e é esse flag que ele verifica quando vai criar o XML e passa na NFE_PRINT, se estiver vazio passa na BADI se estiver marcado ele ignora.
==> CÓDIGO QUE ESTÁ NO MOMENTO DO XML
IF obj_ref IS BOUND AND "2112507
wk_header-ind_badi_ctrl = 'X' AND "2112507
wk_header-cnpj_bupla IS NOT INITIAL. "transitional phase 1844621
lo_obj_ref = obj_ref. "1844621
CLEAR obj_ref. "save for later use "1844621
ENDIF.
==> CÓDIGO QUE ESTÁ NA CRIAÇÃO DA NF - LOGO APÓS PASSAR NA BADI ADD_DATA
METHOD is_add_data_changed.
IF mr_header <> p_header OR
mt_item[] <> p_item[] OR
mt_transvol[] <> p_transvol[] OR
mt_trailer[] <> p_trailer[] OR
mt_tradenotes[] <> p_tradenotes[] OR
mt_refproc[] <> p_refproc[] OR
mt_add_info[] <> p_add_info[] OR
mt_sugarsuppl[] <> p_sugarsuppl[] OR
mt_sugardeduc[] <> p_sugardeduc[] OR
mt_pharmaceut[] <> p_pharmaceut[] OR
mt_vehicle[] <> p_vehicle[] OR
mt_fuel[] <> p_fuel[] OR
mt_export[] <> p_export[] OR
mt_import_adi[] <> p_import_adi[] OR
mt_import_di[] <> p_import_di[] OR
mt_nve[] <> p_nve[] OR "2459713
mt_traceability[] <> p_traceability[] OR "2459713
mt_pharma[] <> p_pharma[] OR "2459713
mt_payment[] <> p_payment[] OR "2747190
mt_tec_resp[] <> p_tec_resp[]. "2747190
"2459713
rv_flag = abap_true. "2459713
ENDIF.
ENDMETHOD.
==> RETORNO DO MÉTODO IS_ADD_DATA_CHANGED acima
.....
RECEIVING "2112507
rv_flag = wnfdoc-ind_badi_ctrl. "2112507
.......
Nenhum comentário:
Postar um comentário