SAP/ABAP 코드

(ABAP 코드) GET_ADDMEASE

haramang 2022. 9. 4. 20:17


SELECT dociditemidproductno
  FROM /scdl/db_proci_o
  WHERE docid '42010A02B0231EECBFD32CA4C3AAFAFA'
  INTO TABLE @DATA(lt_doc).


DATAlo_outb          TYPE REF TO /scdl/cl_sp_prd_out.
DATAlt_sp_k_item      TYPE /scdl/t_sp_k_item_addmeas,
      l_wa_sp_k_item    TYPE /scdl/s_sp_k_item_addmeas,
      lt_a_item_addmeas TYPE /scdl/t_sp_a_item_addmeas,
      lv_rejected       TYPE boole_d,
      lt_return_codes   TYPE /scdl/t_sp_return_code.


  TYPESBEGIN OF gty_items,
           productno TYPE /scdl/dl_productno,
           qty   TYPE /scwm/ltap_vsolm,
         END OF gty_items,
         gtt_items TYPE TABLE OF gty_items WITH DEFAULT KEY.
  DATAlt_curr_items TYPE gtt_items,
        ls_curr_items TYPE gty_items.


LOOP AT lt_doc INTO DATA(ls_doc_q).

  l_wa_sp_k_item-docid        ls_doc_q-docid.
  l_wa_sp_k_item-itemid       ls_doc_q-itemid.
  l_wa_sp_k_item-qty_role     /scdl/if_dl_addmeas_c=>sc_qtyrole_pick.
  l_wa_sp_k_item-qty_category /scdl/if_dl_addmeas_c=>sc_qtycat_request .
  APPEND l_wa_sp_k_item TO lt_sp_k_item.

  l_wa_sp_k_item-docid        ls_doc_q-docid.
  l_wa_sp_k_item-itemid       ls_doc_q-itemid.
  l_wa_sp_k_item-qty_role     /scdl/if_dl_addmeas_c=>sc_qtyrole_pick.
  l_wa_sp_k_item-qty_category /scdl/if_dl_addmeas_c=>sc_qtycat_open .
  APPEND l_wa_sp_k_item TO lt_sp_k_item.

  l_wa_sp_k_item-docid        ls_doc_q-docid.
  l_wa_sp_k_item-itemid       ls_doc_q-itemid.
  l_wa_sp_k_item-qty_role     /scdl/if_dl_addmeas_c=>sc_qtyrole_pick.
  l_wa_sp_k_item-qty_category /scdl/if_dl_addmeas_c=>sc_qtycat_complete .
  APPEND l_wa_sp_k_item TO lt_sp_k_item.

ENDLOOP.


TRY.
  CREATE OBJECT lo_outb.

  lo_outb->selectEXPORTING inkeys        lt_sp_k_item
                             aspect        /scdl/if_sp_c=>sc_asp_item_addmeas
                   IMPORTING outrecords    lt_a_item_addmeas
                             rejected      lv_rejected
                             return_codes  lt_return_codes ).

ENDTRY.

IF lt_a_item_addmeas[] IS NOT INITIAL.
  LOOP AT lt_a_item_addmeas INTO DATA(ls_item_addmeas).
    READ TABLE lt_doc INTO DATA(ls_doc_rWITH KEY docid  ls_item_addmeas-docid
                                                   itemid ls_item_addmeas-itemid.

    IF sy-subrc EQ 0.
      ls_curr_items-productno ls_doc_r-productno.
      ls_curr_items-qty       ls_item_addmeas-qty.
      COLLECT ls_curr_items INTO lt_curr_items.
    ENDIF.

  ENDLOOP.
ENDIF.