REPORT zdelete_sales_order.
TABLES vbak.
DATA: itab_vbak LIKE TABLE OF vbak.
DATA: itab_vbap LIKE TABLE OF vbap.
DATA: itab_vbkd LIKE TABLE OF vbkd.
DATA: wa_vbak LIKE vbak.
DATA: wa_vbap LIKE vbap.
DATA: wa_vbkd LIKE vbkd.
DATA: lt_order_header_in LIKE bapisdh1,
lt_order_header_inx LIKE bapisdh1x,
lt_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
lt_order_item_in LIKE bapisditm OCCURS 0 WITH HEADER LINE,
lt_order_item_inx LIKE bapisditmx OCCURS 0 WITH HEADER LINE.
DATA lt_vbak LIKE TABLE OF vbak WITH HEADER LINE.
SELECT-OPTIONS s_vbeln FOR vbak-vbeln OBLIGATORY.
*SELECT * INTO TABLE itab_vbak FROM vbak WHERE vbeln IN s_vbeln.
*SELECT * INTO TABLE itab_vbap FROM vbap WHERE vbeln IN s_vbeln.
*SELECT * INTO TABLE itab_vbkd FROM vbkd WHERE vbeln IN s_vbeln.
SELECT vbeln INTO CORRESPONDING FIELDS OF TABLE lt_vbak
FROM vbak
WHERE vbeln IN s_vbeln.
LOOP AT lt_vbak.
lt_order_header_inx-updateflag = 'D'.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = lt_vbak-vbeln
* ORDER_HEADER_IN = LT_ORDER_HEADER_IN
order_header_inx = lt_order_header_inx
TABLES
return = lt_return.
LOOP AT lt_return WHERE type = 'E' OR type = 'A'.
ENDLOOP.
IF sy-subrc = 0.
ROLLBACK WORK.
WRITE:lt_vbak-vbeln,' E'.
ELSE.
COMMIT WORK AND WAIT.
WRITE:lt_vbak-vbeln,' S'.
ENDIF.
ENDLOOP.
*LOOP AT ITAB_VBAK INTO WA_VBAK.
*
* DELETE FROM VBAK WHERE VBELN = WA_VBAK-VBELN.
* DELETE FROM VBAP WHERE VBELN = WA_VBAK-VBELN.
* DELETE FROM VBKD WHERE VBELN = WA_VBAK-VBELN.
* DELETE FROM VBEP WHERE VBELN = WA_VBAK-VBELN.
* DELETE FROM VBPA WHERE VBELN = WA_VBAK-VBELN.
*
*ENDLOOP.