sexta-feira, 3 de maio de 2019

NFE NT 2018.005 - Erro no técnico responsável não passa na CL_NFE_PRINT

Talvez a SAP já tenha corrigido isso, mas quem implementou as notas para a NT 2018.005 que inclui o responsável técnico e umas outras funcionalidades.

Depois de implementado as notas parou de passar pela BADI CL_NFE_PRINT, no meu post anterior falei sobre a BADI ...ADD_DATA que marca o flag na J_1BFNDOC, eis que fui verificar e após aplicação das notas essa campo IND_BADI_CTRL da .j_1bnfdoc começou a ficar marcado, aí fui debugar e vi que mesmo não alterando nada na BADI ...ADD_DATA, a nota ficava como tivesse sido modificada na BADI marcando o campo.
Aí vi que após a ADD_DATA tem um método novo para o técnico responsável.(abaixo)

" Technical responsible has only the DocNum as Primary Key.
" Therefore it should be a structure during the badi fields editing (there will be only 1 entry per document)
    lo_nfe_persist_badi->tec_resp_move_str_to_table(        "2747190
      EXPORTING                                             "2747190
        is_tec_resp ls_tec_resp                           "2747190
      IMPORTING                                             "2747190
        et_tec_resp wnftec_resp[]                         "2747190
    ).                                                      "2747190

Dentro desse método mesmo que a estrutura LS_TEC_RESP estiver vazia ele grava em branco na tabela interna WNFTEC_RESP, aí fudeu !!!  logo depois qdo ele compara a estrutura.

   "Check if BAdI is active.                             "2112507
    CALL METHOD                                           "2112507
      lo_nfe_persist_badi->is_add_data_changed            "2112507
....
 p_tec_resp     wnftec_resp[]                    "2747190

Fica como se tivesse sido modificado pq tem uma linha em branco na tabela interna.

Acho q a SAP deve corrigir,  a principio coloquei um enhancement para resolver por hora.

  METHOD tec_resp_move_str_to_table.
ENHANCEMENT 1  ZSD_NFE_TEC_RESP.    "active version
    CHECK is_tec_resp IS NOT INITIAL.
ENDENHANCEMENT.
    " Method delivered by note 2747190
    CLEAR et_tec_resp[].
    APPEND is_tec_resp TO et_tec_resp.
  ENDMETHOD.

Um comentário:

  1. Suzuki, parabéns pelo seu blog cara, sensacional! rsrsrs... Sou um Consultor MM que gosta de dar uma fuçada nos códigos ABAPs (já fui programador COBOL) e com suas dicas você me deu uma baita luz sobre esse tema... Além de parabenizá-lo pelo blog, gostaria de informar que a SAP já lançou uma nota pra corrigir o defeito que você mencionou acima (nota SAP 2781881). Abraços! Eder Rodrigues

    ResponderExcluir