1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
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. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/5154.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。