Ir al contenido

Determinação do IVA e outras informações no pedido de frete

24 de junio de 2025 por
Determinação do IVA e outras informações no pedido de frete
eduardo@seinspire.com.br
| Sin comentarios aún

O pedido de serviço de frete criado através do lançamento do documento de faturamento é bloqueado para alterações manuais. Nesse caso precisamos muitas vezes implementar uma badi para ajustar os dados do pedido no momento da criação. Exemplos: ajustar a descrição do item, determinar o IVA (tax code) entre outras informações.


Veja abaixo um exemplo de implementação:


 BAdI /SCMTMS/BADI_MODIFY_PO_DATA.

  METHOD /scmtms/if_sfir_posting~modify_po_creation.

    DATA: lo_post_sfir      TYPE REF TO /scmtms/cl_post_sfir_for_accru,

          lt_sfir_item_data TYPE /scmtms/t_sfir_item_k,

          lt_tor_root_data  TYPE /scmtms/t_tor_root_k,

          lv_transport_mode TYPE /scmtms/trmodcat.

    lo_post_sfir = /scmtms/cl_post_sfir_for_accru=>get_instance( ).

    CALL METHOD lo_post_sfir->get_data

      IMPORTING

*       et_sfir_root_data =

        et_sfir_item_data = lt_sfir_item_data

*       et_charge_item    =

*       et_charge_root    =

*       et_bupa_data      =

*       et_charge_element =

        et_tor_root_data  = lt_tor_root_data

*       et_tor_item_data  =

*       et_ref_sfitm_docref_keylink =

*       et_ref_sfir_itemdocref_data =

*       et_sfir_itmassgnment_data   =

*       et_sfir_item_keys =

*       et_loc_key        =

*       et_tor_stop       =

*       et_postal_addr    =

*       et_formatted_addr =

*       et_tor_charge_item          =

*       et_tor_charge_root          =

*       et_tor_charge_element       =

*       et_sfir_poitm_kl  =

*       et_tor_succ       =

*       et_stage          =

*       et_root_loc_data  =

*       et_item_loc_data  =

*       et_stage_loc_data =

*       et_loc_key2       =

*       et_cca_sfir_ref_key         =

*       et_loc_addr       =

*       et_location_data  =

*       et_fsd_po_item    =

*       et_sfir_mt_tc_chele_da_comm =

*       et_sfir_mt_tc_chele_oth     =

*       ev_package_no     =

*       ev_item_no        =

      .

    READ TABLE lt_sfir_item_data ASSIGNING FIELD-SYMBOL(<ls_sfir_item>) WITH KEY parent_key COMPONENTS parent_key = iv_sfir_key.

    IF sy-subrc = 0.

      READ TABLE lt_tor_root_data ASSIGNING FIELD-SYMBOL(<ls_tor_root>) WITH TABLE KEY key = <ls_sfir_item>-tor_root_key.

      IF sy-subrc = 0.

        lv_transport_mode = <ls_tor_root>-trmodcat.

      ENDIF.

    ENDIF.

    LOOP AT ct_po_items ASSIGNING FIELD-SYMBOL(<ls_po_items>).

      CASE lv_transport_mode.

        WHEN /scmtms/if_common_c=>c_tr_mode_category-air.

          CONCATENATE 'AIR - ' <ls_po_items>-short_text INTO <ls_po_items>-short_text.

        WHEN /scmtms/if_common_c=>c_tr_mode_category-rail.

          CONCATENATE 'RAIL - ' <ls_po_items>-short_text INTO <ls_po_items>-short_text.

        WHEN /scmtms/if_common_c=>c_tr_mode_category-road.

          CONCATENATE 'ROAD - ' <ls_po_items>-short_text INTO <ls_po_items>-short_text.

        WHEN /scmtms/if_common_c=>c_tr_mode_category-sea.

          CONCATENATE 'SEA - ' <ls_po_items>-short_text INTO <ls_po_items>-short_text.

      ENDCASE.

    ENDLOOP.

  ENDMETHOD.


Abraço

Eduardo Chagas

Iniciar sesión para dejar un comentario

Leer siguiente
Classes úteis