<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comments on: How to delete Outbound Delivery in EWM using ABAP	</title>
	<atom:link href="https://www.sapewmhelp.com/question/how-to-delete-outbound-delivery-in-ewm-using-abap/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.sapewmhelp.com/question/how-to-delete-outbound-delivery-in-ewm-using-abap/</link>
	<description>SAP EWM questions answered by experts — ABAP, S/4HANA, warehouse management</description>
	<lastBuildDate>Fri, 02 Jan 2026 18:01:40 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>
	<item>
		<title>
		By: admin		</title>
		<link>https://www.sapewmhelp.com/question/how-to-delete-outbound-delivery-in-ewm-using-abap/#comment-185</link>

		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 02 Jan 2026 18:01:40 +0000</pubDate>
		<guid isPermaLink="false">https://www.sapewmhelp.com/?question=how-to-delete-outbound-delivery-in-ewm-using-abap#comment-185</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.sapewmhelp.com/question/how-to-delete-outbound-delivery-in-ewm-using-abap/#comment-183&quot;&gt;PrafulAnand&lt;/a&gt;.

Thank you, It worked]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.sapewmhelp.com/question/how-to-delete-outbound-delivery-in-ewm-using-abap/#comment-183">PrafulAnand</a>.</p>
<p>Thank you, It worked</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: PrafulAnand		</title>
		<link>https://www.sapewmhelp.com/question/how-to-delete-outbound-delivery-in-ewm-using-abap/#comment-183</link>

		<dc:creator><![CDATA[PrafulAnand]]></dc:creator>
		<pubDate>Fri, 02 Jan 2026 17:53:13 +0000</pubDate>
		<guid isPermaLink="false">https://www.sapewmhelp.com/?question=how-to-delete-outbound-delivery-in-ewm-using-abap#comment-183</guid>

					<description><![CDATA[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 &#039;/SCDL/S_SP_A_HEAD&#039;.

DATA: lv_aspect_itm TYPE /scmb/sp_aspect VALUE &#039;/SCDL/S_SP_A_ITEM&#039;.

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 = &#039;FDO&#039;.

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=&#062;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=&#062;sc_m_obdlv_change_revgi.
-status = &#039;X&#039;.

ELSEIF -message = /scwm/if_mapping_constants=&#062;sc_m_obdlv_confirm_dec.
-status = &#039;X&#039;.

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 = &#039;E&#039; ]-type OPTIONAL ) NE &#039;E&#039;.

*--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=&#062;sc_doccat_out_fd &quot;sc_doccat_out_prd

iv_mode = /scdl/cl_sp=&#062;sc_mode_classic.

*--Get real warehouse

/scwm/cl_tm=&#062;set_lgnum( iv_lgnum ).

*--Lock dlv

lo_sp-&#062;lock(

EXPORTING

inkeys = lt_key

aspect = /scdl/if_sp_c=&#062;sc_asp_head

lockmode = /scdl/if_sp1_locking=&#062;sc_exclusive_lock

IMPORTING

rejected = lv_rejected

return_codes = DATA(lt_return_codes) ).

*--read item details into buffer

lo_sp-&#062;select(

EXPORTING

inkeys = lt_key_itm

aspect = /scdl/if_sp_c=&#062;sc_asp_item

IMPORTING

outrecords = lt_outrec_itm

rejected = lv_rejected

return_codes = lt_ret ).

*--read header details into buffer

lo_sp-&#062;select(

EXPORTING

inkeys = lt_key

aspect = /scdl/if_sp_c=&#062;sc_asp_head

IMPORTING

outrecords = lt_outrec

rejected = lv_rejected

return_codes = lt_ret ).

*--Delete the FDO

lo_sp-&#062;delete(

EXPORTING

inkeys = lt_key

aspect = /scdl/if_sp_c=&#062;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-&#062;save(

IMPORTING

rejected = lv_rejected ).

*--Commit / rollback based on errors

IF lv_rejected IS INITIAL.

CALL FUNCTION &#039;BAPI_TRANSACTION_COMMIT&#039;

EXPORTING

wait = abap_true.

CALL METHOD lo_sp-&#062;(&#039;CLEANUP&#039;)

EXPORTING

reason = /scmb/if_sp_transaction=&#062;sc_cleanup_commit.

*--Clear buffers and release locks

/scwm/cl_tm=&#062;cleanup( ).

ELSE.

CALL FUNCTION &#039;BAPI_TRANSACTION_ROLLBACK&#039;.

*--Clear buffers and release locks

/scwm/cl_tm=&#062;cleanup( ).

ENDIF.

ENDIF.]]></description>
			<content:encoded><![CDATA[<p>DATA: lo_spfd TYPE REF TO /scdl/cl_sp_fd_out.</p>
<p>DATA: lt_key TYPE /scdl/t_sp_k_head.</p>
<p>DATA: lt_key_itm TYPE /scdl/t_sp_k_item.</p>
<p>DATA: lv_aspect TYPE /scmb/sp_aspect VALUE &#8216;/SCDL/S_SP_A_HEAD&#8217;.</p>
<p>DATA: lv_aspect_itm TYPE /scmb/sp_aspect VALUE &#8216;/SCDL/S_SP_A_ITEM&#8217;.</p>
<p>DATA: lv_rejected TYPE abap_bool.</p>
<p>DATA: lt_ret TYPE /scdl/t_sp_return_code.</p>
<p>DATA: lt_return TYPE bapiret2_t.</p>
<p>DATA: lv_msg TYPE msgtx.</p>
<p>DATA: lt_outrec TYPE /scdl/t_sp_a_head.</p>
<p>DATA: lt_outrec_itm TYPE /scdl/t_sp_a_item.</p>
<p>DATA: lt_docid TYPE /scwm/dlv_docid_item_tab.</p>
<p>DATA: lt_key_docid TYPE /scdl/t_sp_k_head.</p>
<p>DATA: lo_sp TYPE REF TO /scdl/cl_sp_prd_out.</p>
<p>DATA: lo_dlv TYPE REF TO /scwm/cl_dlv_management_prd.</p>
<p>DATA: lt_sp_k_head TYPE /scdl/t_sp_k_head.</p>
<p>DATA: lt_sp_k_item TYPE /scdl/t_sp_k_item.</p>
<p>DATA: lt_a_head_eew TYPE /scdl/t_sp_a_head_eew_prd.</p>
<p>*&#8211;Append messaage for queue start</p>
<p>MESSAGE s171 INTO lv_msg.</p>
<p>PERFORM add_message TABLES lt_return</p>
<p>USING lv_msg.</p>
<p>CREATE OBJECT lo_spfd.</p>
<p>*&#8211;Get OD</p>
<p>SELECT docid,</p>
<p>itemid</p>
<p>FROM /scdl/db_dlvi_o</p>
<p>INTO TABLE @lt_key_itm</p>
<p>FOR ALL ENTRIES IN @it_docid</p>
<p>WHERE refdocid = @it_docid-docid.</p>
<p>IF sy-subrc = 0.</p>
<p>lt_key = CORRESPONDING #( lt_key_itm MAPPING</p>
<p>docid = docid ).</p>
<p>*&#8211;Fetch corresponding FDO Details</p>
<p>SELECT docid,</p>
<p>itemid,</p>
<p>doccat</p>
<p>INTO TABLE @lt_docid</p>
<p>FROM /scdl/db_dlvi_o</p>
<p>FOR ALL ENTRIES IN @it_docid</p>
<p>WHERE refdocid = @it_docid-docid.</p>
<p>IF lt_docid[] IS NOT INITIAL.</p>
<p>lt_key_docid = CORRESPONDING #( lt_docid MAPPING</p>
<p>docid = docid ).</p>
<p>ENDIF.</p>
<p>DO 5 TIMES.</p>
<p>SELECT *</p>
<p>INTO TABLE @DATA(lt_msl)</p>
<p>FROM /scwm/messagelog</p>
<p>FOR ALL ENTRIES IN @lt_key</p>
<p>WHERE docid EQ @lt_key-docid</p>
<p>AND doccat = &#8216;FDO&#8217;.</p>
<p>IF sy-subrc EQ 0 AND lt_msl IS NOT INITIAL.</p>
<p>READ TABLE lt_msl INTO DATA(ls_msl)</p>
<p>WITH KEY message = /scwm/if_mapping_constants=&gt;sc_m_obdlv_change_revgi.</p>
<p>IF sy-subrc NE 0.</p>
<p>WAIT UP TO 2 SECONDS.</p>
<p>CONTINUE.</p>
<p>ELSE.</p>
<p>LOOP AT lt_msl ASSIGNING FIELD-SYMBOL().</p>
<p>IF -message = /scwm/if_mapping_constants=&gt;sc_m_obdlv_change_revgi.<br />
-status = &#8216;X&#8217;.</p>
<p>ELSEIF -message = /scwm/if_mapping_constants=&gt;sc_m_obdlv_confirm_dec.<br />
-status = &#8216;X&#8217;.</p>
<p>ENDIF.</p>
<p>ENDLOOP.</p>
<p>MODIFY /scwm/messagelog FROM TABLE lt_msl.</p>
<p>COMMIT WORK AND WAIT.</p>
<p>MESSAGE s167 INTO lv_msg.</p>
<p>PERFORM add_message TABLES lt_return</p>
<p>USING lv_msg.</p>
<p>ENDIF.</p>
<p>ENDIF.</p>
<p>ENDDO.</p>
<p>*&#8211;Check for errors</p>
<p>IF VALUE #( lt_return[ type = &#8216;E&#8217; ]-type OPTIONAL ) NE &#8216;E&#8217;.</p>
<p>*&#8211;create service provider</p>
<p>DATA(lo_message_box) = NEW /scdl/cl_sp_message_box( ).</p>
<p>*&#8211;Create object to instantiate</p>
<p>CREATE OBJECT lo_sp</p>
<p>EXPORTING</p>
<p>io_message_box = lo_message_box</p>
<p>iv_doccat = /scdl/if_dl_doc_c=&gt;sc_doccat_out_fd &#8220;sc_doccat_out_prd</p>
<p>iv_mode = /scdl/cl_sp=&gt;sc_mode_classic.</p>
<p>*&#8211;Get real warehouse</p>
<p>/scwm/cl_tm=&gt;set_lgnum( iv_lgnum ).</p>
<p>*&#8211;Lock dlv</p>
<p>lo_sp-&gt;lock(</p>
<p>EXPORTING</p>
<p>inkeys = lt_key</p>
<p>aspect = /scdl/if_sp_c=&gt;sc_asp_head</p>
<p>lockmode = /scdl/if_sp1_locking=&gt;sc_exclusive_lock</p>
<p>IMPORTING</p>
<p>rejected = lv_rejected</p>
<p>return_codes = DATA(lt_return_codes) ).</p>
<p>*&#8211;read item details into buffer</p>
<p>lo_sp-&gt;select(</p>
<p>EXPORTING</p>
<p>inkeys = lt_key_itm</p>
<p>aspect = /scdl/if_sp_c=&gt;sc_asp_item</p>
<p>IMPORTING</p>
<p>outrecords = lt_outrec_itm</p>
<p>rejected = lv_rejected</p>
<p>return_codes = lt_ret ).</p>
<p>*&#8211;read header details into buffer</p>
<p>lo_sp-&gt;select(</p>
<p>EXPORTING</p>
<p>inkeys = lt_key</p>
<p>aspect = /scdl/if_sp_c=&gt;sc_asp_head</p>
<p>IMPORTING</p>
<p>outrecords = lt_outrec</p>
<p>rejected = lv_rejected</p>
<p>return_codes = lt_ret ).</p>
<p>*&#8211;Delete the FDO</p>
<p>lo_sp-&gt;delete(</p>
<p>EXPORTING</p>
<p>inkeys = lt_key</p>
<p>aspect = /scdl/if_sp_c=&gt;sc_asp_head</p>
<p>IMPORTING</p>
<p>rejected = lv_rejected</p>
<p>return_codes = lt_ret</p>
<p>).</p>
<p>*&#8211;Check if any error occurred</p>
<p>IF line_exists( lt_return_codes[ failed = abap_true ] ) OR lv_rejected EQ abap_true.</p>
<p>*&#8211;Error to fail queue</p>
<p>ELSE.</p>
<p>lo_sp-&gt;save(</p>
<p>IMPORTING</p>
<p>rejected = lv_rejected ).</p>
<p>*&#8211;Commit / rollback based on errors</p>
<p>IF lv_rejected IS INITIAL.</p>
<p>CALL FUNCTION &#8216;BAPI_TRANSACTION_COMMIT&#8217;</p>
<p>EXPORTING</p>
<p>wait = abap_true.</p>
<p>CALL METHOD lo_sp-&gt;(&#8216;CLEANUP&#8217;)</p>
<p>EXPORTING</p>
<p>reason = /scmb/if_sp_transaction=&gt;sc_cleanup_commit.</p>
<p>*&#8211;Clear buffers and release locks</p>
<p>/scwm/cl_tm=&gt;cleanup( ).</p>
<p>ELSE.</p>
<p>CALL FUNCTION &#8216;BAPI_TRANSACTION_ROLLBACK&#8217;.</p>
<p>*&#8211;Clear buffers and release locks</p>
<p>/scwm/cl_tm=&gt;cleanup( ).</p>
<p>ENDIF.</p>
<p>ENDIF.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
