DATA: ls_inb_delivery_header LIKE bbp_inbd_l,
lv_ib LIKE likp–vbeln,
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_detail–material = ls_po–matnr.
ls_inb_delivery_detail–matl_desc = ls_po–txz01.
ls_inb_delivery_detail–deliv_qty = ls_po-menge.
ls_inb_delivery_detail–unit = ls_po–meins.
ls_inb_delivery_detail–po_number = ls_po–ebeln.
ls_inb_delivery_detail–po_item = ls_po–ebelp.
APPEND ls_inb_delivery_detail TO lt_inb_delivery_detail.
ENDLOOP.
ls_inb_delivery_header–deliv_date = sy–datum.
ls_inb_delivery_header–deliv_time = sy–uzeit.
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_return) WHERE type = ‘A’ OR type = ‘E’ OR type = ‘X’.
EXIT.
ENDLOOP.
IF sy–subrc = 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_po–ebeln
AND ebtyp = ‘LA’.“Inbound Delivery
ENDIF.
ENDIF.