• 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.

   
    

Kishore Thutaram

SAP Solution Architect | 16+ Years' Experience in SAP | Sharing Practical SAP Knowledge | Engineering Graduate with Expertise in SAP Architecture

https://fiowelt.com