Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Help in BAPI_OUTB_DELIVERY_CHANGE(batch-split)

Former Member
0 Likes
5,836

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 !!

5 REPLIES 5
Read only

Former Member
0 Likes
2,180

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.

Read only

Former Member
0 Likes
2,180

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.

Read only

0 Likes
2,180

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.

Read only

0 Likes
2,180

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

Read only

Former Member
0 Likes
2,180

>

> 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