- April 6, 2026
- Kishore Thutaram
-
- 0
Create Split/Outbound Delivery by Using BAPI_OUTB_DELIVERY_SPLIT_DEC
Business requirement – Create split/child delivery from the main delivery
This logic can be implemented in a program/FM/class/user exit based on the requirement.
Implement the logic below:
Constants : lc_17 TYPE inri-nrrangenr VALUE '17',
lc_beleg TYPE inri-object VALUE 'RV_BELEG'.
data : lv_newdelivery TYPE fsh_master_ord,
lv_delivery_ori TYPE bapiobdlvhdrdsp-delivery,
lv_deliverynew TYPE bapiobdlvhdrdsp-deliverynew,
lt_itemdata TYPE STANDARD TABLE OF bapiobdlvitemdsp,
lt_return TYPE STANDARD TABLE OF bapiret2,
tables : likp.
parameters : p_del type likp-vbeln.
lv_delivery_ori = p_del. " Existing delivery num
" Get the new Delivery Number to create the splitting Delivery
CLEAR lv_newdelivery.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = lc_17
object = lc_beleg
IMPORTING
number = lv_newdelivery
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
IF sy-subrc NE 0.
RETURN.
ENDIF.
lv_deliverynew = lv_newdelivery. " New Delivery number
" Get all Line items
SELECT *
FROM lips
INTO TABLE @DATA(lt_lips)
WHERE vbeln = @p_delivery. " Existing delivery num.
loop at lt_lips into data(ls_lips)
" Add the Item details for the Splitting Delivery
APPEND VALUE #( deliv_numb = lv_newdelivery deliv_item = ls_lips-posnr curr_qty = 'B' dlv_qty = lv_new_qty
sales_unit = ls_lips-vrkme dlv_qty_stock = ls_lips-lfimg base_uom = ls_lips-meins base_uom_iso = ls_lips-meins
) TO lt_itemdata.
endloop.
" To create the Split/Child OB Delivery
CALL FUNCTION 'BAPI_OUTB_DELIVERY_SPLIT_DEC'
EXPORTING
delivery = lv_delivery_ori
deliverynew = lv_deliverynew
deliveryitemsbelongto = 'N'
businessprocess = '0003'
TABLES
itemdata = lt_itemdata[]
return = lt_return[]
EXCEPTIONS ##FM_SUBRC_OK
OTHERS = 1.






























