Sign up to join our community!
Please sign in to your account!
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
How to delete Outbound Delivery in EWM using ABAP
DATA: lo_spfd TYPE REF TO /scdl/cl_sp_fd_out. DATA: lt_key TYPE /scdl/t_sp_k_head. DATA: lt_key_itm TYPE /scdl/t_sp_k_item. DATA: lv_aspect TYPE /scmb/sp_aspect VALUE '/SCDL/S_SP_A_HEAD'. DATA: lv_aspect_itm TYPE /scmb/sp_aspect VALUE '/SCDL/S_SP_A_ITEM'. DATA: lv_rejected TYPE abap_bool. DATA: lt_rRead more
DATA: lo_spfd TYPE REF TO /scdl/cl_sp_fd_out.
DATA: lt_key TYPE /scdl/t_sp_k_head.
DATA: lt_key_itm TYPE /scdl/t_sp_k_item.
DATA: lv_aspect TYPE /scmb/sp_aspect VALUE ‘/SCDL/S_SP_A_HEAD’.
DATA: lv_aspect_itm TYPE /scmb/sp_aspect VALUE ‘/SCDL/S_SP_A_ITEM’.
DATA: lv_rejected TYPE abap_bool.
DATA: lt_ret TYPE /scdl/t_sp_return_code.
DATA: lt_return TYPE bapiret2_t.
DATA: lv_msg TYPE msgtx.
DATA: lt_outrec TYPE /scdl/t_sp_a_head.
DATA: lt_outrec_itm TYPE /scdl/t_sp_a_item.
DATA: lt_docid TYPE /scwm/dlv_docid_item_tab.
DATA: lt_key_docid TYPE /scdl/t_sp_k_head.
DATA: lo_sp TYPE REF TO /scdl/cl_sp_prd_out.
DATA: lo_dlv TYPE REF TO /scwm/cl_dlv_management_prd.
DATA: lt_sp_k_head TYPE /scdl/t_sp_k_head.
DATA: lt_sp_k_item TYPE /scdl/t_sp_k_item.
DATA: lt_a_head_eew TYPE /scdl/t_sp_a_head_eew_prd.
*–Append messaage for queue start
MESSAGE s171 INTO lv_msg.
PERFORM add_message TABLES lt_return
USING lv_msg.
CREATE OBJECT lo_spfd.
*–Get OD
SELECT docid,
itemid
FROM /scdl/db_dlvi_o
INTO TABLE @lt_key_itm
FOR ALL ENTRIES IN @it_docid
WHERE refdocid = @it_docid-docid.
IF sy-subrc = 0.
lt_key = CORRESPONDING #( lt_key_itm MAPPING
docid = docid ).
*–Fetch corresponding FDO Details
SELECT docid,
itemid,
doccat
INTO TABLE @lt_docid
FROM /scdl/db_dlvi_o
FOR ALL ENTRIES IN @it_docid
WHERE refdocid = @it_docid-docid.
IF lt_docid[] IS NOT INITIAL.
lt_key_docid = CORRESPONDING #( lt_docid MAPPING
docid = docid ).
ENDIF.
DO 5 TIMES.
SELECT *
INTO TABLE @DATA(lt_msl)
FROM /scwm/messagelog
FOR ALL ENTRIES IN @lt_key
WHERE docid EQ @lt_key-docid
AND doccat = ‘FDO’.
IF sy-subrc EQ 0 AND lt_msl IS NOT INITIAL.
READ TABLE lt_msl INTO DATA(ls_msl)
WITH KEY message = /scwm/if_mapping_constants=>sc_m_obdlv_change_revgi.
IF sy-subrc NE 0.
WAIT UP TO 2 SECONDS.
CONTINUE.
ELSE.
LOOP AT lt_msl ASSIGNING FIELD-SYMBOL().
IF -message = /scwm/if_mapping_constants=>sc_m_obdlv_change_revgi.
-status = ‘X’.
ELSEIF -message = /scwm/if_mapping_constants=>sc_m_obdlv_confirm_dec.
-status = ‘X’.
ENDIF.
ENDLOOP.
MODIFY /scwm/messagelog FROM TABLE lt_msl.
COMMIT WORK AND WAIT.
MESSAGE s167 INTO lv_msg.
PERFORM add_message TABLES lt_return
USING lv_msg.
ENDIF.
ENDIF.
ENDDO.
*–Check for errors
IF VALUE #( lt_return[ type = ‘E’ ]-type OPTIONAL ) NE ‘E’.
*–create service provider
DATA(lo_message_box) = NEW /scdl/cl_sp_message_box( ).
*–Create object to instantiate
CREATE OBJECT lo_sp
EXPORTING
io_message_box = lo_message_box
iv_doccat = /scdl/if_dl_doc_c=>sc_doccat_out_fd “sc_doccat_out_prd
iv_mode = /scdl/cl_sp=>sc_mode_classic.
*–Get real warehouse
/scwm/cl_tm=>set_lgnum( iv_lgnum ).
*–Lock dlv
lo_sp->lock(
EXPORTING
inkeys = lt_key
aspect = /scdl/if_sp_c=>sc_asp_head
lockmode = /scdl/if_sp1_locking=>sc_exclusive_lock
IMPORTING
rejected = lv_rejected
return_codes = DATA(lt_return_codes) ).
*–read item details into buffer
lo_sp->select(
EXPORTING
inkeys = lt_key_itm
aspect = /scdl/if_sp_c=>sc_asp_item
IMPORTING
outrecords = lt_outrec_itm
rejected = lv_rejected
return_codes = lt_ret ).
*–read header details into buffer
lo_sp->select(
EXPORTING
inkeys = lt_key
aspect = /scdl/if_sp_c=>sc_asp_head
IMPORTING
outrecords = lt_outrec
rejected = lv_rejected
return_codes = lt_ret ).
*–Delete the FDO
lo_sp->delete(
EXPORTING
inkeys = lt_key
aspect = /scdl/if_sp_c=>sc_asp_head
IMPORTING
rejected = lv_rejected
return_codes = lt_ret
).
*–Check if any error occurred
IF line_exists( lt_return_codes[ failed = abap_true ] ) OR lv_rejected EQ abap_true.
*–Error to fail queue
ELSE.
lo_sp->save(
IMPORTING
rejected = lv_rejected ).
*–Commit / rollback based on errors
IF lv_rejected IS INITIAL.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = abap_true.
CALL METHOD lo_sp->(‘CLEANUP’)
EXPORTING
reason = /scmb/if_sp_transaction=>sc_cleanup_commit.
*–Clear buffers and release locks
/scwm/cl_tm=>cleanup( ).
ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
*–Clear buffers and release locks
/scwm/cl_tm=>cleanup( ).
ENDIF.
ENDIF.
See less