DATA: it_soitem TYPE TABLE OF bapidlvreftosalesorder,
is_soitem TYPE bapidlvreftosalesorder,
it_return TYPE TABLE OF bapiret2,
is_return TYPE bapiret2,
l_dn TYPE bapishpdelivnumb-deliv_numb.
DATA: l_date TYPE bapidlvcreateheader-due_date.
l_date = '99991231'.
LOOP AT gt_out INTO gs_out WHERE vbeln = ls_so-vbeln AND street = ls_so-street AND check_box = 'X' AND text = ''.
is_soitem-ref_doc = gs_out-vbeln.
is_soitem-ref_item = gs_out-posnr.
is_soitem-dlv_qty = gs_out-pikmg.
is_soitem-sales_unit = gs_out-meins.
APPEND is_soitem TO it_soitem.
ENDLOOP.
IF it_soitem IS NOT INITIAL.
CLEAR l_dn.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
EXPORTING
due_date = l_date
IMPORTING
delivery = l_dn
* NUM_DELIVERIES =
TABLES
sales_order_items = it_soitem
* SERIAL_NUMBERS =
* EXTENSION_IN =
* DELIVERIES =
created_items = lt_create
* EXTENSION_OUT =
return = it_return.
CLEAR lv_message.
LOOP AT it_return INTO is_return WHERE type = 'E' OR type = 'A'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = is_return-id
msgnr = is_return-number
msgv1 = is_return-message_v1
msgv2 = is_return-message_v2
msgv3 = is_return-message_v3
msgv4 = is_return-message_v4
IMPORTING
message_text_output = lv_message.
CONCATENATE gs_out-text lv_message ';' INTO gs_out-text.
ENDLOOP.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
MODIFY gt_out FROM gs_out TRANSPORTING text
WHERE check_box = 'X' AND vbeln = ls_so-vbeln .
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
Endif.