Create an Inbound Delivery (VL31N) by BAPI BBP_INB_DELIVERY_CREATE

DATAls_inb_delivery_header LIKE  bbp_inbd_l,
lv_ib                  LIKE  likpvbeln,
lt_inb_delivery_detail TYPE STANDARD TABLE OF bbp_inbd_d,
ls_inb_delivery_detail LIKE LINE OF lt_inb_delivery_detail,
lt_return              TYPE STANDARD TABLE OF bapireturn.

CLEAR ls_inb_delivery_header.
REFRESH lt_inb_delivery_detail[].
REFRESH lt_return[].

SELECT
*
INTO TABLE @DATA(lt_po)
FROM ekpo
WHERE ebeln = ‘…’.

LOOP AT lt_po INTO DATA(ls_po).
CLEAR ls_inb_delivery_detail.
ls_inb_delivery_detailmaterial ls_pomatnr.
ls_inb_delivery_detailmatl_desc ls_potxz01.
ls_inb_delivery_detaildeliv_qty = ls_po-menge.
ls_inb_delivery_detailunit ls_pomeins.
ls_inb_delivery_detailpo_number ls_poebeln.
ls_inb_delivery_detailpo_item ls_poebelp.
APPEND ls_inb_delivery_detail TO lt_inb_delivery_detail.
ENDLOOP.

ls_inb_delivery_headerdeliv_date sydatum.
ls_inb_delivery_headerdeliv_time syuzeit.

CALL FUNCTION ‘BBP_INB_DELIVERY_CREATE’
EXPORTING
is_inb_delivery_header ls_inb_delivery_header
IMPORTING
ef_delivery            lv_ib
TABLES
it_inb_delivery_detail lt_inb_delivery_detail
return                 lt_return.

LOOP AT lt_return INTO DATA(ls_returnWHERE type ‘A’ OR type ‘E’ OR type ‘X’.
EXIT.
ENDLOOP.

IF sysubrc 0.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait ‘X’.
IF lv_ib IS INITIAL.
SELECT SINGLE
vbeln
INTO lv_ib
FROM ekes
WHERE ebeln ls_poebeln
AND ebtyp ‘LA’.“Inbound Delivery
ENDIF.
ENDIF.