無名经验总结与分享(SAP)            十年树木,百年树人

WMS函数组: 7.交货单行项目除

FUNCTION ZRFC_WMS_DELIVERY_DELETE.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  TABLES
*"      ITAB_DETAIL STRUCTURE  ZVBPOK OPTIONAL
*"      ITAB_RETURN STRUCTURE  ZINTERFACE_RETURN OPTIONAL
*"      ET_LOG STRUCTURE  BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------




   DATA: WA_HDATA    LIKE BAPIOBDLVHDRCHG,
         WA_HCONT    LIKE BAPIOBDLVHDRCTRLCHG,
         D_DELIVY    LIKE BAPIOBDLVHDRCHG-DELIV_NUMB,
         ITEMCTRL LIKE BAPIOBDLVITEMCTRLCHG OCCURS 0 WITH HEADER LINE,
         ITEMDATA LIKE  BAPIOBDLVITEMCHG OCCURS 0 WITH HEADER LINE,
         IT_BAPIRET2 LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.




   DATA: ITAB_HEADER LIKE ZVBKOK OCCURS 0 WITH HEADER LINE,
         ITH LIKE ITAB_HEADER ,
         TBL_ITEMS LIKE ITAB_DETAIL,
         IP_VBELN TYPE VBELN,
         VIP TYPE VBELN,
         IP_POSNR TYPE POSNR.


*--------------------CHA JWY_20170811
   SORT ITAB_DETAIL.
*--------------------CHA JWY_20170811
   LOOP AT ITAB_DETAIL.
     MOVE ITAB_DETAIL-VBELN TO ITAB_HEADER-VBELN.
    MOVE ITAB_DETAIL-VBELN TO ITAB_HEADER-WMS_NO.

    MOVE ITAB_DETAIL-VBELN TO IP_VBELN.
     PERFORM F_ADD_ZERO USING IP_VBELN.

     MOVE ITAB_DETAIL-POSNR TO IP_POSNR.
     PERFORM F_ADD_ZERO USING IP_POSNR.

     SELECT SINGLE VBELN INTO VIP FROM LIPS WHERE VBELN = IP_VBELN AND POSNR = IP_POSNR.
     IF SY-SUBRC = 0.
      COLLECT ITAB_HEADER.
    ELSE.
       ITAB_RETURN-BILLNO = ITAB_DETAIL-VBELN.
      ITAB_RETURN-SAPNO = ITAB_DETAIL-POSNR.
      ITAB_RETURN-SUBRC = -1.
       ITAB_RETURN-MSG = '交货项目不存在'.
      APPEND ITAB_RETURN.
    ENDIF.
  ENDLOOP.

*--------------------CHA JWY_20170811
   SORT ITAB_HEADER.
  SORT ITAB_DETAIL.
*--------------------CHA JWY_20170811
   LOOP AT  ITAB_HEADER INTO ITH.

     CLEAR: WA_HDATA, WA_HCONT, D_DELIVY, IT_BAPIRET2.
     WA_HDATA-DELIV_NUMB = ITH-VBELN.
     WA_HCONT-DELIV_NUMB = ITH-VBELN.

     LOOP AT ITAB_DETAIL INTO TBL_ITEMS WHERE VBELN = ITH-VBELN .
      ITEMCTRL-DELIV_NUMB = ITH-VBELN.
       ITEMCTRL-DELIV_ITEM = TBL_ITEMS-POSNR.
      ITEMCTRL-DEL_ITEM = 'X'.
       APPEND ITEMCTRL.
       ITEMDATA-DELIV_NUMB = ITH-VBELN.
       ITEMDATA-DELIV_ITEM = TBL_ITEMS-POSNR.
      ITEMDATA-FACT_UNIT_NOM = 1.
       ITEMDATA-FACT_UNIT_DENOM = 1.
      APPEND ITEMDATA.
    ENDLOOP.


     CLEAR IT_BAPIRET2[].
*     *---DELETING DELIVERY DOC (VL02N)
     CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
       EXPORTING
         HEADER_DATA    = WA_HDATA
         HEADER_CONTROL = WA_HCONT
         DELIVERY       = WA_HDATA-DELIV_NUMB
       TABLES
         ITEM_CONTROL   = ITEMCTRL
         ITEM_DATA      = ITEMDATA
         RETURN         = IT_BAPIRET2.

     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         WAIT = 'X'.


    MOVE SY-SUBRC TO ITAB_RETURN-SUBRC.

    IF SY-SUBRC  = 0.
       APPEND LINES OF IT_BAPIRET2 TO  ET_LOG.
       ITAB_RETURN-MSG = '成功'.
    ELSE.
       ITAB_RETURN-MSG = '失败'.
    ENDIF.

*--------------------CHA JWY_20170811
     SORT ITEMDATA.
*--------------------CHA JWY_20170811
     LOOP AT ITEMDATA.
       ITAB_RETURN-BILLNO = ITEMDATA-DELIV_NUMB.
      ITAB_RETURN-SAPNO = ITEMDATA-DELIV_ITEM.
       APPEND ITAB_RETURN.
     ENDLOOP.

    CLEAR VIP.
     SELECT SINGLE VBELN INTO VIP FROM LIPS WHERE VBELN = WA_HDATA-DELIV_NUMB.
    IF SY-SUBRC > 0. "删除空交货单
      WA_HCONT-DLV_DEL    = 'X'.
      CLEAR IT_BAPIRET2[].
*---Deleting delivery doc (VL02n)
       CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
         EXPORTING
           HEADER_DATA    = WA_HDATA
           HEADER_CONTROL = WA_HCONT
           DELIVERY       = WA_HDATA-DELIV_NUMB
         TABLES
           RETURN         = IT_BAPIRET2.
*---commit
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
         EXPORTING
           WAIT = 'X'.

    ENDIF.



   ENDLOOP.
ENDFUNCTION.
 

image

image

image

posted @ 2021-01-22 23:24  無名  阅读(89)  评论(0编辑  收藏  举报
Twttafku@163.com
十年树木,百年树人