‎2008 Mar 07 7:39 AM
Hi Friends,
I am trying to BAPI_OUTB_DELIVERY_CHANGE that to update the batch split but have been unsuccessful.
I'm used BAPI_DELIVERYPROCESSING_EXEC to create the delivery , then used BAPI_OUTB_DELIVERY_CHANGE to update the batch split. but the actual main item does not split.
Can anyone please suggest how to add line items to Change Delivery update the batch split?
Pls Give me a sample code for this .
thanks !!
‎2008 Mar 07 8:13 AM
Hi
Hope this code will help you.
Please Reward If help.
Regards
Deepanker.
DATA: LWA_HEADER_DATA LIKE BAPIOBDLVHDRCHG,
LWA_HEADER_CONTROL LIKE BAPIOBDLVHDRCTRLCHG,
LT_ITEM_DATA LIKE TABLE OF BAPIOBDLVITEMCHG,
LWA_ITEM_DATA LIKE LINE OF LT_ITEM_DATA,
LV_OLD_DELIV LIKE GWA_SD_DOCUMENT-VBELN,
LV_NEW_DELIV LIKE GWA_SD_DOCUMENT-VBELN,
LV_OLD_MATNR LIKE GWA_SD_DOCUMENT-MATNR,
LV_NEW_MATNR LIKE GWA_SD_DOCUMENT-MATNR,
LV_OLD_SHIP LIKE GWA_SD_DOCUMENT-TKNUM,
LWA_TECHN LIKE BAPIDLVCONTROL,
LT_ITEM_CONTROL LIKE TABLE OF BAPIOBDLVITEMCTRLCHG,
LWA_ITEM_CONTROL LIKE LINE OF LT_ITEM_CONTROL,
LV_NEW_SHIP LIKE GWA_SD_DOCUMENT-TKNUM,
LT_RETURN LIKE TABLE OF BAPIRET2.
*Local data --> End
LWA_TECHN-UPD_IND = GC_DEFAULT.
LOOP AT GT_SD_DOCUMENT INTO GWA_SD_DOCUMENT.
LWA_ITEM_DATA-DELIV_NUMB = GWA_SD_DOCUMENT-VBELN.
LWA_ITEM_DATA-DELIV_ITEM = GWA_SD_DOCUMENT-POSNR.
LWA_ITEM_DATA-MATERIAL = GWA_SD_DOCUMENT-MATNR.
LWA_ITEM_DATA-DLV_QTY = GWA_SD_DOCUMENT-LFIMG_R.
LWA_ITEM_DATA-DLV_QTY_IMUNIT = GWA_SD_DOCUMENT-LFIMG_R.
LWA_ITEM_DATA-SALES_UNIT = GWA_SD_DOCUMENT-VRKME.
LWA_ITEM_DATA-BASE_UOM = GWA_SD_DOCUMENT-MEINS.
APPEND LWA_ITEM_DATA TO LT_ITEM_DATA.
LWA_ITEM_CONTROL-DELIV_NUMB = GWA_SD_DOCUMENT-VBELN.
LWA_ITEM_CONTROL-DELIV_ITEM = GWA_SD_DOCUMENT-POSNR.
LWA_ITEM_CONTROL-CHG_DELQTY = GC_DEFAULT.
APPEND LWA_ITEM_CONTROL TO LT_ITEM_CONTROL.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
EXPORTING
HEADER_DATA = LWA_HEADER_DATA
HEADER_CONTROL = LWA_HEADER_CONTROL
DELIVERY = LV_OLD_DELIV
TABLES
ITEM_DATA = LT_ITEM_DATA
ITEM_CONTROL = LT_ITEM_CONTROL
RETURN = LT_RETURN.
ENDLOOP.
‎2008 Mar 09 11:42 AM
too bad, help me
Any idea how to perform the following using a BAPI or function call with regards to updating a Delivery (VL02/VL02N)?
1) Enter or update a storage location on a delivery item?
2) Batch split a delivery item to give multiple batch numbers. For example if delivery item is '101' then after batch split additional delivery items with batch number assigned will appear as '900001', '900002', '900003', etc Entering a single batch number is straight forward and can be done using BAPI_OUTB_DELIVERY_CHANGE
Do not wish to use BDC . Any help appreciated.
‎2008 Apr 23 1:05 PM
I haven't tried update LGORT, but tried batch split.
internal table ITEM_DATA contains two parts - Original Items, Sub Items.
you can pass multiple sub items for one original item by using a same ITEM_DATA-HIERARITEM.
Thanks.
Legend.
‎2008 Jun 02 11:09 AM
Hi !
Batch Split can be done using BAPI_OUTB_DELIVERY_CHANGE. Just remember the following points:
1. item_data contains all your batches.
for example you want 2 batches B1 & B2 for material M1 which is item '0010' in the delivery DN
item_data-material = 'M1'
item_data-batch = 'B1'
item_data-hieraritem = '0010'
item_data-usehieritm = '1'
append item_data.Similarly build the item_data for B2.
item_data-material = 'M1'
item_data-batch = 'B2'
item_data-hieraritem = '0010'
item_data-usehieritm = '1'
append item_data.2. If you want to change the delivery quantity as well then build item_control as follows
item_control-deliv_numb = 'DN'
item_control-deliv_item = '0010'
item_control-chg_delqty = 'X'.
append item_control.3. Exporting header_data and header_control is optional but do export
delivery = 'DN'Note that this BAPI does not have any option to change the storage location(LGORT).
I am also looking for any BAPI that does the following:
1. Batch Split
2. Quantity Update and
3. Change/Update the Storage Location of batches.
Let me know if you/anyone else knows about such a BAPI that changes the Storage Location of batches as well as does the batch split.
Regards,
Firoz Ashraf
‎2009 Sep 18 1:36 PM
>
> Hi Friends,
> I am trying to BAPI_OUTB_DELIVERY_CHANGE that to update the batch split but have been unsuccessful.
>
> I'm used BAPI_DELIVERYPROCESSING_EXEC to create the delivery , then used BAPI_OUTB_DELIVERY_CHANGE to update the batch split. but the actual main item does not split.
>
> Can anyone please suggest how to add line items to Change Delivery update the batch split?
> Pls Give me a sample code for this .
>
> thanks !!
Hi all,
BAPI_OUTB_DELIVERY_CHANGE can be used to do batch split and updating storage loaction against each item of an outbond delivey.
I have done that in the folllowing way:
1 > Firstly i have updated the storage location for each delivery item using 'BAPI_OUTB_DELIVERY_CHANGE' passing some mininal parameters.
Fetch the item details from LIPS table based on the outbound delivery and pass the corresponding fields to item_data, item_control and item_data_spl parameters and passed into intenal table li_lips.
Loop at li_lips inti lw_lips.
lw_item_data-deliv_numb = lw_lips-vbeln.
lw_item_data-deliv_item = lw_lips-posnr.
lw_item_data-material = lw_lips-matnr.
lw_item_data-fact_unit_nom = lw_lips-umvkz.
lw_item_data-fact_unit_denom = lw_lips-umvkn.
lw_item_data-base_uom = lw_lips-meins.
lw_item_data-sales_unit = lw_lips-vrkme.
lw_item_control-deliv_numb = lw_lips-vbeln.
lw_item_control-deliv_item = lw_lips-posnr.
lw_item_data_spl-deliv_numb = lw_lips-vbeln.
lw_item_data_spl-deliv_item = lw_lips-posnr.
lw_item_data_spl-pick_denial = 'X'.
lw_item_data_spl-stge_loc = v_lgort.
"(This would be your Storage Location which you want to be updated)
Appending work areas into internal table to pass as parameter
APPEND lw_item_data_lgort TO li_item_data_lgort .
Appending work areas into internal table to pass as parameter
APPEND lw_item_control_lgort TO li_item_control_lgort.
Appending work areas into internal table to pass as parameter
APPEND lw_item_data_spl_lgort TO li_item_data_spl_lgort.
endloop.
Passing the delivery no in the work area of header data
lw_header_data-deliv_numb = v_delivery_no.
lw_header_control-deliv_numb = v_delivery_no.
lw_header_tech_control-upd_ind = 'U'.
Calling BAPI to change the Storage location
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
EXPORTING
header_data = lw_header_data
header_control = lw_header_control
delivery = v_delivery_no
techn_control = lw_header_tech_control
TABLES
item_data = li_item_data
item_control = li_item_control
return = li_return_change
item_data_spl = li_item_data_spl.
Calling BAPI to committ the task
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
2> Then i have used the same BAPI again 'BAPI_OUTB_DELIVERY_CHANGE' to do the batch split/update batch only(if required) and change the Actual Delivered Quantity.
Here you have to pass the same thing along with actual delivery qauntity and different batches to do batch split.
Here it is assumed that Batch numbers, actual delivered quantity are coming from an internal table i_lqua.
Looping through Internal table to get Bin details
LOOP AT i_lqua INTO w_lqua .
Clearing work area before use
CLEAR : lw_item_data, lw_lips, lw_item_control, lw_item_data_spl.
Reading table comparing metrial number
READ TABLE li_lips INTO lw_lips
WITH KEY matnr = w_lqua-matnr BINARY SEARCH.
If read is successful, passing values from table
IF sy-subrc EQ 0.
Passing the delivery details into Item level table
lw_item_data-deliv_numb = lw_lips-vbeln.
lw_item_data-deliv_item = lw_lips-posnr.
lw_item_data-material = lw_lips-matnr.
lw_item_data-batch = w_lqua-charg.
lw_item_data-dlv_qty = w_lqua-verme.
lw_item_data-dlv_qty_imunit = w_lqua-verme.
lw_item_data-base_uom = w_lqua-meins.
lw_item_data-hieraritem = lw_lips-posnr.
lw_item_data-usehieritm = 1.
lw_item_data-fact_unit_nom = lw_lips-umvkz.
lw_item_data-fact_unit_denom = lw_lips-umvkn.
lw_item_data-sales_unit = lw_lips-vrkme.
lw_item_control-deliv_numb = lw_lips-vbeln.
lw_item_control-deliv_item = lw_lips-posnr.
lw_item_control-chg_delqty = 'X'.
lw_item_data_spl-deliv_numb = lw_lips-vbeln.
lw_item_data_spl-deliv_item = lw_lips-posnr.
lw_item_data_spl-stge_loc = w_lqua-lgort.
lw_item_data_spl-pick_denial = 'X'
Appending work area into internal table to pass as parameter
APPEND lw_item_data TO li_item_data.
Appending work area into internal table to pass as parameter
APPEND lw_item_control TO li_item_control.
Appending work area into internal table to pass as parameter
APPEND lw_item_data_spl TO li_item_data_spl.
Clearing work areas after use
CLEAR : lw_item_data, w_lqua,lw_item_data_spl,lw_item_control,
lw_vbpok, lw_lips.
ENDIF.
ENDLOOP.
Passing the delivery no in the work area of header data
lw_header_data-deliv_numb = v_delivery_no.
lw_header_control-deliv_numb = v_delivery_no.
lw_header_tech_control-upd_ind = 'U'.
Calling BAPI to change the Batch/Batch-Split/Delivery Quantity
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
EXPORTING
header_data = lw_header_data
header_control = lw_header_control
delivery = v_delivery_no
techn_control = lw_header_tech_control
TABLES
item_data = li_item_data
item_control = li_item_control
return = li_return_change
item_data_spl = li_item_data_spl.
Calling BAPI to committ the task
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
This is the only way which i found as better way to do the Batch split and updating storage location togetherly.
I hope this code will help you.
Edited by: Prasanta Acharjee on Sep 18, 2009 2:37 PM