segunda-feira, 19 de janeiro de 2026

TM - Método para Atualização de status do transporte manual

  METHOD tm_shipping_event.
    DATA: lt_stop TYPE /scmtms/t_tor_stop_k.
    CLEAR rs_return.
    DATA(lo_srv_mgr) = /bobf/cl_tra_serv_mgr_factory=>get_service_manager( /scmtms/if_tor_c=>sc_bo_key ).
    DATA(lv_bo_name) = /scmtms/if_tor_c=>sc_bo_name.
    DATA(lv_attname) =  /scmtms/if_tor_c=>sc_query_attribute-root-planning_attributes-tor_id.
*"Selection Parameters
    DATA(lt_selpar) = VALUE /bobf/t_frw_query_selparam( ( attribute_name = lv_attname
                                                          sign = 'I'
                                                          option = 'EQ'
                                                          low = iv_freight_order ) ).
    DATA lt_key TYPE /bobf/t_frw_key.
    DATA lt_docref TYPE /scmtms/t_tor_root_k.
    "Execução da query
    lo_srv_mgr->query( EXPORTING iv_query_key = /scmtms/if_tor_c=>sc_query-root-planning_attributes
                                 it_selection_parameters = lt_selpar
                                 iv_fill_data = abap_true
                       IMPORTING "eo_message = DATA(lo_message)
                          et_key = lt_key
                          et_data = lt_docref
                          ).
    IF lt_key[] IS INITIAL.
      rs_return = VALUE #( id = 'ZJLTM' type = 'E' number = '002' message_v1 = iv_freight_order
                           message = cl_bs_soa_message_container=>get_msg_text( is_applmsg = VALUE #( type = 'E'
                                                                                                     id    = 'ZJLTM'
                                                                                                     number = '002'
                                                                                                     message_v1 = iv_freight_order
                                                                                               ) ) ) .
      RETURN.
    ENDIF.
    "get first location
    lo_srv_mgr->retrieve_by_association(
      EXPORTING
            iv_node_key             = /scmtms/if_tor_c=>sc_node-root
            it_key                  = lt_key
            iv_fill_data            = abap_true
            iv_association          = /scmtms/if_tor_c=>sc_association-root-stop_first
      IMPORTING
            eo_message              = DATA(lo_message)
            et_data                 = lt_stop
            et_failed_key           = DATA(lt_failed_key) ).

    rs_return = get_tm_message( lo_message ).
    CHECK rs_return IS INITIAL.
    DATA(lt_stop_key) = VALUE  /bobf/t_frw_key_link( FOR ls_stop IN lt_stop
                                                       ( target_key = ls_stop-key
                                                         source_key = ls_stop-root_key )
                                                      ).
    IF lt_docref[ 1 ]-execution =  c_tm_exec_status.
      rs_return = tm_call_report_event(
                                            EXPORTING
                                              iv_event    = c_tm_events-ready
                                              iv_eventdate = iv_eventdate
                                              it_root_key = lt_key
                                              it_stop     = lt_stop_key  ).
      CHECK rs_return IS INITIAL.
    ENDIF.
    rs_return = tm_call_report_event(
                                          EXPORTING
                                            iv_event    = iv_event
                                            iv_eventdate = iv_eventdate
                                            it_root_key = lt_key
                                            it_stop     = lt_stop_key ).
    IF rs_return IS INITIAL.
      rs_return = VALUE #( id = 'ZJLTM' type = 'S' number = '003' ) .
    ENDIF.
  ENDMETHOD.

 

Nenhum comentário:

Postar um comentário