交货单批次拆分(BAPI_OUTB_DELIVERY_CHANGE )并更改拣配数量,发货过账(WS_DELIVERY_UPDATE)

*&---------------------------------------------------------------------*
*& 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 .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值