Requirement:
Create Warehouse Task/TO number using Function Modules /SCWM/TO_CREATESolution:
Custom data types:
Structure: LTY_TR
Steps:
- Read Outbound DO table /SCDL/DB_PROCI_O with keys Document Number (DOCNO) and Item Number (ITEMNO)
- Populate structure LT_CREATE
- Call function /SCWM/TO_INIT_NEW to initiate WH process. Allocating memory by Warehouse
- Call function /SCWM/TO_CREATE to create WT/TO
- If creation process is successful, Call statement COMMIT WORK AND WAIT or Call function BAPI_TRANSACTION_COMMIT
- If Fails, Call statement ROLLBACK or Call function BAPI_TRANSACTION_ROLLBACK
- Flush/clean up memory using FM /SCWM/GM_CLEANUP.
Codes:
FUNCTION zfm_ewm_wt_create_obd.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IV_LGNUM) TYPE /SCWM/LGNUM OPTIONAL
*" CHANGING
*" VALUE(CV_TANUM) TYPE /SCWM/TANUM OPTIONAL
*" VALUE(CT_TR) TYPE ANY TABLE OPTIONAL
*" VALUE(CT_LTAP_VB) TYPE /SCWM/TT_LTAP_VB OPTIONAL
*" VALUE(CT_RETURN) TYPE BAPIRET2_T OPTIONAL
*"----------------------------------------------------------------------
DATA: BEGIN OF lty_tr,
docno TYPE /scdl/dl_docno_int,
itemno TYPE /scdl/dl_itemno,
matnr TYPE matnr,
charg TYPE charg_d,
nsolm TYPE /scwm/ltap_nsolm,
END OF lty_tr.
##NEEDED
DATA: lt_create TYPE /scwm/tt_to_create_int,
ls_create TYPE /scwm/s_to_create_int,
lv_docno TYPE /scdl/dl_docno_int,
li_tr LIKE STANDARD TABLE OF lty_tr, "ty_ms2,
li_tr_grp LIKE STANDARD TABLE OF lty_tr, "ty_ms2,
ls_tr LIKE ty_ms2,
ls_matid_charg TYPE /scwm/s_matid_charg.
li_tr[] = ct_tr[].
li_tr_grp[] = li_tr[].
CHECK li_tr[] IS NOT INITIAL.
SORT li_tr_grp BY docno.
DELETE ADJACENT DUPLICATES FROM li_tr_grp COMPARING docno.
"get delivery
SELECT * FROM /scdl/db_proci_o
INTO TABLE @DATA(lt_proci)
FOR ALL ENTRIES IN @li_tr
WHERE docno EQ @li_tr-docno
AND itemno EQ @li_tr-itemno
ORDER BY PRIMARY KEY.
CHECK lt_proci[] IS NOT INITIAL.
"Create warehouse task
REFRESH lt_create.
LOOP AT li_tr_grp INTO DATA(ls_tr_grp).
CLEAR ls_create.
LOOP AT li_tr ASSIGNING FIELD-SYMBOL(<ls_tr>)
WHERE docno = ls_tr_grp-docno.
READ TABLE lt_proci INTO DATA(ls_proci)
WITH KEY docno = <ls_tr>-docno
itemno = <ls_tr>-itemno.
CHECK sy-subrc IS INITIAL.
ls_create-procty = ls_proci-/scwm/procty. "Process type
ls_create-rdoccat = ls_proci-doccat. "Doc Category
ls_create-rdocid = ls_proci-docid. "Ref doc
ls_create-ritmid = ls_proci-itemid. "Ref doc item
ls_create-altme = ls_proci-uom. "Alternative UoM for Stockkeeping Unit
ls_create-owner = ls_proci-stock_owner. "Owner
ls_create-owner_role = ls_proci-stock_owner_role. "Owner_role
ls_create-entitled = ls_proci-entitled. "Entitled
ls_create-entitled_role = ls_proci-entitled_role. "Entitled_role
ls_create-single_to = abap_true. "Create Single WTs
ls_create-cat = ls_proci-stock_category. "Stock Type
ls_create-anfme = <ls_tr>-nsolm.
"Material ID
CALL FUNCTION 'CONVERSION_EXIT_MDLPD_INPUT'
EXPORTING
input = <ls_tr>-matnr
IMPORTING
output = ls_create-matid.
"Batch ID
TRY.
ls_matid_charg-matid = ls_create-matid.
ls_matid_charg-charg = <ls_tr>-charg.
CALL METHOD /scwm/cl_batch_appl=>get_batchid_by_no
EXPORTING
iv_lgnum = iv_lgnum
is_matid_charg = ls_matid_charg
IMPORTING
ev_batchid = ls_create-batchid.
CATCH /scwm/cx_batch_precheck.
"Continue
ENDTRY.
APPEND ls_create TO lt_create.
ENDLOOP.
CALL FUNCTION '/SCWM/TO_INIT_NEW'
EXPORTING
iv_lgnum = iv_lgnum.
CALL FUNCTION '/SCWM/TO_CREATE'
EXPORTING
iv_lgnum = iv_lgnum
it_create = lt_create
IMPORTING
ev_tanum = cv_tanum
et_ltap_vb = ct_ltap_vb
et_bapiret = ct_return.
LOOP AT ct_return INTO DATA(ls_return)
WHERE type CA 'AXE'.
EXIT.
ENDLOOP.
IF ls_return IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
CALL FUNCTION '/SCWM/GM_CLEANUP'
EXPORTING
iv_save = abap_true.
ENDLOOP.
ENDFUNCTION.