*&---------------------------------------------------------------------*
*& Report ZVL02N_CHARGE
*&
*&---------------------------------------------------------------------*
*& 先调用 BAPI_OUTB_DELIVERY_CHANGE 对批次进行拆分(前提是 要拆分的 外向交货单 行项目 批次为 空)
*& 然后 调用 WS_DELIVERY_UPDATE 更新 交货数量和拣配数量
*&---------------------------------------------------------------------*
REPORT ZVL02N_CHARGE.
DATA : HEADER_DATA LIKE BAPIOBDLVHDRCHG. "Delivery header
DATA : HEADER_CONTROL LIKE BAPIOBDLVHDRCTRLCHG. "delivery header control
DATA : I_DELIVERY_NO LIKE BAPIOBDLVHDRCHG-DELIV_NUMB. "deliver number
DATA : TECHN_CONTROL LIKE BAPIDLVCONTROL. "TECHN_CONTROL
DATA : ITEM_DATA LIKE BAPIOBDLVITEMCHG OCCURS 0 WITH HEADER LINE . "ITEM_DATA delivery item
DATA : ITEM_CONTROL LIKE BAPIOBDLVITEMCTRLCHG OCCURS 0 WITH HEADER LINE . "ITEM_CONTROL
DATA : RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE . "Return
*Set Delivery Header data
I_DELIVERY_NO = '0080249529' .
HEADER_DATA-DELIV_NUMB = I_DELIVERY_NO.
TECHN_CONTROL-UPD_IND = 'U' .
HEADER_CONTROL-DELIV_NUMB = I_DELIVERY_NO.
ITEM_DATA-DELIV_NUMB = I_DELIVERY_NO.
ITEM_DATA-DELIV_ITEM = '900001' .
ITEM_DATA-HIERARITEM = '40' . "The batch split record below delivery item hierary
ITEM_DATA-USEHIERITM = '1' .
ITEM_DATA-MATERIAL = 'W065B0X030601002' .
ITEM_DATA-BATCH = 'BCFA2907' .
ITEM_DATA-DLV_QTY = 4 .
*ITEM_DATA-DLV_QTY_IMUNIT = 1000.
ITEM_DATA-FACT_UNIT_NOM = 1 .
ITEM_DATA-FACT_UNIT_DENOM = 1 .
APPEND ITEM_DATA.
CLEAR ITEM_DATA.
ITEM_DATA-DELIV_NUMB = I_DELIVERY_NO.
ITEM_DATA-DELIV_ITEM = '900002' . "The batch split record below delivery item hierary
ITEM_DATA-HIERARITEM = '40' .
ITEM_DATA-USEHIERITM = '1' .
ITEM_DATA-MATERIAL = 'W065B0X030601002' .
ITEM_DATA-BATCH = 'BCFC1802' .
ITEM_DATA-DLV_QTY = 4 .
ITEM_DATA-FACT_UNIT_NOM = 1 .
ITEM_DATA-FACT_UNIT_DENOM = 1 .
APPEND ITEM_DATA.
CLEAR ITEM_DATA.
ITEM_CONTROL-DELIV_NUMB = I_DELIVERY_NO.
ITEM_CONTROL-DELIV_ITEM = '40' .
ITEM_CONTROL-CHG_DELQTY = 'X' .
APPEND ITEM_CONTROL.
CLEAR ITEM_CONTROL.
ITEM_CONTROL-DELIV_NUMB = I_DELIVERY_NO.
ITEM_CONTROL-DELIV_ITEM = '900001' .
ITEM_CONTROL-CHG_DELQTY = 'X' .
APPEND ITEM_CONTROL.
CLEAR ITEM_CONTROL.
ITEM_CONTROL-DELIV_NUMB = I_DELIVERY_NO.
ITEM_CONTROL-DELIV_ITEM = '900002' .
ITEM_CONTROL-CHG_DELQTY = 'X' .
APPEND ITEM_CONTROL.
CLEAR ITEM_CONTROL.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
EXPORTING
HEADER_DATA = HEADER_DATA
HEADER_CONTROL = HEADER_CONTROL
DELIVERY = I_DELIVERY_NO
TECHN_CONTROL = TECHN_CONTROL
TABLES
ITEM_DATA = ITEM_DATA
ITEM_CONTROL = ITEM_CONTROL
RETURN = RETURN .
IF SY-SUBRC EQ 0 .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X' .
ENDIF .
DATA : I_VBKOK LIKE VBKOK. "Delivery header
DATA : I_VBPOK LIKE VBPOK OCCURS 0 WITH HEADER LINE . "Delivery Picking
DATA : V_ERROR.
I_VBKOK-VBELN_VL = '0080000066' .
I_VBKOK-WABUC = 'X' . "Post Good Issue Automatic
I_VBPOK-VBELN_VL = I_VBKOK-VBELN_VL. "Delivery NO
I_VBPOK-POSNR_VL = '900001' . "Delivery Item
I_VBPOK-VBELN = '1000000325' . "Sales Order "You must assign Sales order & Item number
I_VBPOK-POSNN = '10' . "Sales Order item
I_VBPOK-MATNR = 'WY-F-001' .
I_VBPOK-CHARG = '0000000001' .
I_VBPOK-LFIMG = 5 . "Actual quantity delivered (in sales units)
I_VBPOK-LGMNG = 5 . "Actual quantity delivered in stockkeeping units
APPEND I_VBPOK.
I_VBPOK-VBELN_VL = I_VBKOK-VBELN_VL. "Delivery NO
I_VBPOK-POSNR_VL = '900002' . "Delivery Item
I_VBPOK-VBELN = '1000000325' . "Sales Order
I_VBPOK-POSNN = '10' . "Sales Order item
I_VBPOK-MATNR = 'WY-F-001' .
I_VBPOK-CHARG = '0000000002' .
I_VBPOK-LFIMG = 5 . "Actual quantity delivered (in sales units)
I_VBPOK-LGMNG = 5 . "Actual quantity delivered in stockkeeping units
APPEND I_VBPOK.
CALL FUNCTION 'WS_DELIVERY_UPDATE'
EXPORTING
VBKOK_WA = I_VBKOK
DELIVERY = I_VBKOK-VBELN_VL
UPDATE_PICKING = 'X' "Update Picking data
IMPORTING
EF_ERROR_IN_GOODS_ISSUE_0 = V_ERROR
TABLES
VBPOK_TAB = I_VBPOK.
IF SY-SUBRC EQ 0 .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
endif .
*& Report ZVL02N_CHARGE
*&
*&---------------------------------------------------------------------*
*& 先调用 BAPI_OUTB_DELIVERY_CHANGE 对批次进行拆分(前提是 要拆分的 外向交货单 行项目 批次为 空)
*& 然后 调用 WS_DELIVERY_UPDATE 更新 交货数量和拣配数量
*&---------------------------------------------------------------------*
REPORT ZVL02N_CHARGE.
DATA : HEADER_DATA LIKE BAPIOBDLVHDRCHG. "Delivery header
DATA : HEADER_CONTROL LIKE BAPIOBDLVHDRCTRLCHG. "delivery header control
DATA : I_DELIVERY_NO LIKE BAPIOBDLVHDRCHG-DELIV_NUMB. "deliver number
DATA : TECHN_CONTROL LIKE BAPIDLVCONTROL. "TECHN_CONTROL
DATA : ITEM_DATA LIKE BAPIOBDLVITEMCHG OCCURS 0 WITH HEADER LINE . "ITEM_DATA delivery item
DATA : ITEM_CONTROL LIKE BAPIOBDLVITEMCTRLCHG OCCURS 0 WITH HEADER LINE . "ITEM_CONTROL
DATA : RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE . "Return
*Set Delivery Header data
I_DELIVERY_NO = '0080249529' .
HEADER_DATA-DELIV_NUMB = I_DELIVERY_NO.
TECHN_CONTROL-UPD_IND = 'U' .
HEADER_CONTROL-DELIV_NUMB = I_DELIVERY_NO.
ITEM_DATA-DELIV_NUMB = I_DELIVERY_NO.
ITEM_DATA-DELIV_ITEM = '900001' .
ITEM_DATA-HIERARITEM = '40' . "The batch split record below delivery item hierary
ITEM_DATA-USEHIERITM = '1' .
ITEM_DATA-MATERIAL = 'W065B0X030601002' .
ITEM_DATA-BATCH = 'BCFA2907' .
ITEM_DATA-DLV_QTY = 4 .
*ITEM_DATA-DLV_QTY_IMUNIT = 1000.
ITEM_DATA-FACT_UNIT_NOM = 1 .
ITEM_DATA-FACT_UNIT_DENOM = 1 .
APPEND ITEM_DATA.
CLEAR ITEM_DATA.
ITEM_DATA-DELIV_NUMB = I_DELIVERY_NO.
ITEM_DATA-DELIV_ITEM = '900002' . "The batch split record below delivery item hierary
ITEM_DATA-HIERARITEM = '40' .
ITEM_DATA-USEHIERITM = '1' .
ITEM_DATA-MATERIAL = 'W065B0X030601002' .
ITEM_DATA-BATCH = 'BCFC1802' .
ITEM_DATA-DLV_QTY = 4 .
ITEM_DATA-FACT_UNIT_NOM = 1 .
ITEM_DATA-FACT_UNIT_DENOM = 1 .
APPEND ITEM_DATA.
CLEAR ITEM_DATA.
ITEM_CONTROL-DELIV_NUMB = I_DELIVERY_NO.
ITEM_CONTROL-DELIV_ITEM = '40' .
ITEM_CONTROL-CHG_DELQTY = 'X' .
APPEND ITEM_CONTROL.
CLEAR ITEM_CONTROL.
ITEM_CONTROL-DELIV_NUMB = I_DELIVERY_NO.
ITEM_CONTROL-DELIV_ITEM = '900001' .
ITEM_CONTROL-CHG_DELQTY = 'X' .
APPEND ITEM_CONTROL.
CLEAR ITEM_CONTROL.
ITEM_CONTROL-DELIV_NUMB = I_DELIVERY_NO.
ITEM_CONTROL-DELIV_ITEM = '900002' .
ITEM_CONTROL-CHG_DELQTY = 'X' .
APPEND ITEM_CONTROL.
CLEAR ITEM_CONTROL.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
EXPORTING
HEADER_DATA = HEADER_DATA
HEADER_CONTROL = HEADER_CONTROL
DELIVERY = I_DELIVERY_NO
TECHN_CONTROL = TECHN_CONTROL
TABLES
ITEM_DATA = ITEM_DATA
ITEM_CONTROL = ITEM_CONTROL
RETURN = RETURN .
IF SY-SUBRC EQ 0 .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X' .
ENDIF .
DATA : I_VBKOK LIKE VBKOK. "Delivery header
DATA : I_VBPOK LIKE VBPOK OCCURS 0 WITH HEADER LINE . "Delivery Picking
DATA : V_ERROR.
I_VBKOK-VBELN_VL = '0080000066' .
I_VBKOK-WABUC = 'X' . "Post Good Issue Automatic
I_VBPOK-VBELN_VL = I_VBKOK-VBELN_VL. "Delivery NO
I_VBPOK-POSNR_VL = '900001' . "Delivery Item
I_VBPOK-VBELN = '1000000325' . "Sales Order "You must assign Sales order & Item number
I_VBPOK-POSNN = '10' . "Sales Order item
I_VBPOK-MATNR = 'WY-F-001' .
I_VBPOK-CHARG = '0000000001' .
I_VBPOK-LFIMG = 5 . "Actual quantity delivered (in sales units)
I_VBPOK-LGMNG = 5 . "Actual quantity delivered in stockkeeping units
APPEND I_VBPOK.
I_VBPOK-VBELN_VL = I_VBKOK-VBELN_VL. "Delivery NO
I_VBPOK-POSNR_VL = '900002' . "Delivery Item
I_VBPOK-VBELN = '1000000325' . "Sales Order
I_VBPOK-POSNN = '10' . "Sales Order item
I_VBPOK-MATNR = 'WY-F-001' .
I_VBPOK-CHARG = '0000000002' .
I_VBPOK-LFIMG = 5 . "Actual quantity delivered (in sales units)
I_VBPOK-LGMNG = 5 . "Actual quantity delivered in stockkeeping units
APPEND I_VBPOK.
CALL FUNCTION 'WS_DELIVERY_UPDATE'
EXPORTING
VBKOK_WA = I_VBKOK
DELIVERY = I_VBKOK-VBELN_VL
UPDATE_PICKING = 'X' "Update Picking data
IMPORTING
EF_ERROR_IN_GOODS_ISSUE_0 = V_ERROR
TABLES
VBPOK_TAB = I_VBPOK.
IF SY-SUBRC EQ 0 .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
endif .