SAP/ABAP 코드

(ABAP 코드) EWM Header Details

haramang 2022. 10. 29. 14:08

CLASS=/SCWM/CL_DLV_MANAGEMENT_PRD   

 CALL METHOD me->get_header_details
      EXPORTING
        it_sp_k_head        lt_sp_k_head
        io_sp               io_sp
        is_exclude_data     ls_exclude_data
      IMPORTING
        et_a_head_admin     lt_a_head_admin_t
        et_a_head_incoterms lt_a_head_incoterms_t
        et_a_head_addmeas   lt_a_head_addmeas_t
        et_a_head_date      lt_a_head_date_t
        et_a_head_partyloc  lt_a_head_partyloc_t
        et_a_head_refdoc    lt_a_head_refdoc_t
        et_a_head_status    lt_a_head_status_t
        et_a_head_transport lt_a_head_transport_t
        et_a_head_text      lt_a_head_text_t
        et_a_head_textline  lt_a_head_textline_t
        et_a_head_keymap    lt_a_head_keymap_t
        ev_rejected         lv_rejected.
  

 

 

 

 

DATA:
    ls_a_head       TYPE REF TO /scdl/s_sp_a_head,
    lt_return_codes TYPE        /scdl/t_sp_return_code,
    lv_rejected_tmp TYPE        boole_d,
    ls_a_head_text      TYPE REF TO /scwm/s_sp_a_head_text,
    ls_sp_k_head_text TYPE /scwm/s_sp_k_head_text,
    lt_sp_k_head_text TYPE /scwm/t_sp_k_head_text.

  CLEAR et_a_head_admin.
  CLEAR et_a_head_incoterms.
  CLEAR et_a_head_addmeas.
  CLEAR et_a_head_date.
  CLEAR et_a_head_partyloc.
  CLEAR et_a_head_refdoc.
  CLEAR et_a_head_status.
  CLEAR et_a_head_transport.
  CLEAR et_a_head_keymap.
  CLEAR et_a_head_text.
  CLEAR et_a_head_textline.
  CLEAR ev_rejected.


  CHECK it_sp_k_head IS NOT INITIAL.
  check IS_EXCLUDE_DATA-head_all is initial.

IO_SP = /SCDL/CL_SP_PRD_OUT
* get admin
  CLEAR lv_rejected_tmp.
  io_sp->select(
    EXPORTING
      inkeys        it_sp_k_head
      aspect        /scdl/if_sp_c=>sc_asp_head_admin
    IMPORTING
      outrecords    et_a_head_admin
      rejected      lv_rejected_tmp
      return_codes  lt_return_codes
                                  ).

  IF NOT lv_rejected_tmp IS INITIAL.
    ev_rejected lv_rejected_tmp.
  ENDIF.

* get incoterms
  CLEAR lv_rejected_tmp.
  io_sp->select(
    EXPORTING
      inkeys       it_sp_k_head
      aspect       /scdl/if_sp_c=>sc_asp_head_incoterms
    IMPORTING
      outrecords   et_a_head_incoterms
      rejected     lv_rejected_tmp
      return_codes lt_return_codes
                                  ).

  IF NOT lv_rejected_tmp IS INITIAL.
    ev_rejected lv_rejected_tmp.
  ENDIF.


* get addmeas
  CLEAR lv_rejected_tmp.
  IF is_exclude_data-head_addmeas abap_false.
    io_sp->select_by_relation(
      EXPORTING
        relation     /scdl/if_sp_c=>sc_rel_head_to_addmeas
        inrecords    it_sp_k_head
        aspect       /scdl/if_sp_c=>sc_asp_head
      IMPORTING
        outrecords   et_a_head_addmeas
        rejected     lv_rejected_tmp
        return_codes lt_return_codes ).

    IF NOT lv_rejected_tmp IS INITIAL.
      ev_rejected lv_rejected_tmp.
    ENDIF.
  ENDIF.

* get keymap
  CLEAR lv_rejected_tmp.
  IF is_exclude_data-head_keymap abap_false.
    io_sp->select_by_relation(
      EXPORTING
        relation     /scdl/if_sp_c=>sc_rel_head_to_keymap
        inrecords    it_sp_k_head
        aspect       /scdl/if_sp_c=>sc_asp_head
      IMPORTING
        outrecords   et_a_head_keymap
        rejected     lv_rejected_tmp
        return_codes lt_return_codes ).

    IF NOT lv_rejected_tmp IS INITIAL.
      ev_rejected lv_rejected_tmp.
    ENDIF.
  ENDIF.

* get date
  CLEAR lv_rejected_tmp.
  IF is_exclude_data-head_date abap_false.
    io_sp->select_by_relation(
      EXPORTING
        relation      /scdl/if_sp_c=>sc_rel_head_to_date
        inrecords     it_sp_k_head
        aspect        /scdl/if_sp_c=>sc_asp_head
      IMPORTING
        outrecords    et_a_head_date
        rejected      lv_rejected_tmp
        return_codes  lt_return_codes ).

    IF NOT lv_rejected_tmp IS INITIAL.
      ev_rejected lv_rejected_tmp.
    ENDIF.
  ENDIF.

* get partylocs
  IF is_exclude_data-head_partyloc abap_false.
    CLEAR lv_rejected_tmp.
    io_sp->select_by_relation(
      EXPORTING
        relation     /scdl/if_sp_c=>sc_rel_head_to_partyloc
        inrecords    it_sp_k_head
        aspect       /scdl/if_sp_c=>sc_asp_head
      IMPORTING
        outrecords   et_a_head_partyloc
        rejected     lv_rejected_tmp
        return_codes lt_return_codes ).

    IF NOT lv_rejected_tmp IS INITIAL.
      ev_rejected lv_rejected_tmp.
    ENDIF.
  ENDIF.

* get refdoc
  IF is_exclude_data-head_refdoc abap_false.
    CLEAR lv_rejected_tmp.
    io_sp->select_by_relation(
      EXPORTING
        relation     /scdl/if_sp_c=>sc_rel_head_to_refdoc
        inrecords    it_sp_k_head
        aspect       /scdl/if_sp_c=>sc_asp_head
      IMPORTING
        outrecords   et_a_head_refdoc
        rejected     lv_rejected_tmp
        return_codes lt_return_codes ).

    IF NOT lv_rejected_tmp IS INITIAL.
      ev_rejected lv_rejected_tmp.
    ENDIF.
  ENDIF.

* get status
  IF is_exclude_data-head_status abap_false.
    CLEAR lv_rejected_tmp.
    io_sp->select_by_relation(
      EXPORTING
        relation     /scdl/if_sp_c=>sc_rel_head_to_status
        inrecords    it_sp_k_head
        aspect       /scdl/if_sp_c=>sc_asp_head
      IMPORTING
        outrecords   et_a_head_status
        rejected     lv_rejected_tmp
        return_codes lt_return_codes ).

    IF NOT lv_rejected_tmp IS INITIAL.
      ev_rejected lv_rejected_tmp.
    ENDIF.
  ENDIF.

* get transport
  IF is_exclude_data-head_transport abap_false.
    CLEAR lv_rejected_tmp.
    io_sp->select_by_relation(
      EXPORTING
        relation     /scdl/if_sp_c=>sc_rel_head_to_transport
        inrecords    it_sp_k_head
        aspect       /scdl/if_sp_c=>sc_asp_head
      IMPORTING
        outrecords   et_a_head_transport
        rejected     lv_rejected_tmp
        return_codes lt_return_codes ).

    IF NOT lv_rejected_tmp IS INITIAL.
      ev_rejected lv_rejected_tmp.
    ENDIF.
  ENDIF.

* get text
  IF is_exclude_data-head_text abap_false.
    CLEAR lv_rejected_tmp.
    io_sp->select_by_relationEXPORTING
      relation /scwm/if_sp_c=>sc_rel_head_to_text
      inrecords it_sp_k_head
      aspect        /scdl/if_sp_c=>sc_asp_head
*  OPTIONS
      IMPORTING
      outrecords et_a_head_text
      rejected lv_rejected_tmp
      return_codes lt_return_codes ).
    IF NOT lv_rejected_tmp IS INITIAL.
      ev_rejected lv_rejected_tmp.
    ENDIF.

* get textline
    IF is_exclude_data-head_textline abap_false OR is_exclude_data-head_text abap_false.
      CLEAR lt_sp_k_head_text.
      LOOP AT et_a_head_text REFERENCE INTO ls_a_head_text.
        MOVE-CORRESPONDING ls_a_head_text->TO ls_sp_k_head_text.
        APPEND ls_sp_k_head_text TO lt_sp_k_head_text.
      ENDLOOP.
      CLEAR et_a_head_text.

      CLEAR lv_rejected_tmp.
      IF NOT lt_sp_k_head_text IS INITIAL.
        io_sp->selectEXPORTING
          inkeys     lt_sp_k_head_text
          aspect /scwm/if_sp_c=>sc_asp_head_textline
*  OPTIONS
          IMPORTING
          outrecords et_a_head_textline
          rejected        lv_rejected_tmp
          return_codes lt_return_codes ).
        IF NOT lv_rejected_tmp IS INITIAL.
          ev_rejected lv_rejected_tmp.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.