"bapi参数
DATA: lv_vbeln TYPE bapishpdelivnumb-deliv_numb,
lv_ship_point TYPE bapidlvcreateheader-ship_point,
lt_dlv_items TYPE TABLE OF bapidlvreftosto,
lt_return TYPE bapiret2_t.
if zlx = 'STO'.
"根据采购订单获取明细
DO 6 TIMES.
SELECT a~ebeln, a~ebelp, a~meins, a~menge,b~reswk
INTO TABLE @DATA(lt_ekpo)
FROM ekpo AS a
INNER JOIN ekko AS b ON a~ebeln = b~ebeln
WHERE a~ebeln = @ps_ref->zsto_no.
IF sy-subrc NE 0.
WAIT UP TO '0.2' SECONDS.
ELSE.
EXIT.
ENDIF.
ENDDO.
lt_dlv_items = VALUE #( ( ref_doc = ps_ref->zsto_no ) ).
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO'
EXPORTING
ship_point = lv_ship_point
** DUE_DATE =
** DEBUG_FLG =
** NO_DEQUEUE = ' '
IMPORTING
delivery = lv_vbeln
** NUM_DELIVERIES =
TABLES
stock_trans_items = lt_dlv_items
** SERIAL_NUMBERS =
** EXTENSION_IN =
** DELIVERIES =
** CREATED_ITEMS =
** EXTENSION_OUT =
return = lt_return.
ELSEIF ZLX = 'SO'.
"根据销售订单获取明细
DO 6 TIMES.
SELECT a~vbeln, a~posnr
INTO TABLE @DATA(lt_vbap)
FROM vbap AS a
WHERE a~vbeln = @ps_ref->zso_no1.
IF sy-subrc NE 0.
WAIT UP TO '0.2' SECONDS.
ELSE.
EXIT.
ENDIF.
ENDDO.
lt_dlv_items = VALUE #( ( ref_doc = ps_ref->zso_no1 ) ).
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
* EXPORTING
* SHIP_POINT =
* DUE_DATE =
* DEBUG_FLG =
* NO_DEQUEUE = ' '
IMPORTING
delivery = lv_vbeln
* NUM_DELIVERIES =
TABLES
sales_order_items = lt_dlv_items
* SERIAL_NUMBERS =
* EXTENSION_IN =
* DELIVERIES =
* CREATED_ITEMS =
* EXTENSION_OUT =
return = lt_return.
ENDIF.
DO 1 TIMES.
LOOP AT lt_return TRANSPORTING NO FIELDS WHERE type CA 'AEX'.
EXIT.
ENDLOOP.
CHECK sy-subrc NE 0.