DATA:ls_prheader TYPE bapimereqheader,
ls_prheaderx TYPE bapimereqheaderx,
lv_number TYPE bapimereqheader-preq_no,
l_comp TYPE TABLE OF bapimereqcomponent WITH HEADER LINE,
l_compx TYPE TABLE OF bapimereqcomponentx WITH HEADER LINE,
l_pritem TYPE TABLE OF bapimereqitemimp WITH HEADER LINE,
l_pritemx TYPE TABLE OF bapimereqitemx WITH HEADER LINE,
l_pritemtext TYPE TABLE OF bapimereqitemtext WITH HEADER LINE,
l_praccount TYPE TABLE OF bapimereqaccount WITH HEADER LINE,
l_praccountx TYPE TABLE OF bapimereqaccountx WITH HEADER LINE,
* ls_req_item TYPE bapi_te_mereqitem,
ls_req_item TYPE bapi_te_requisition_item,
ls_req_itemx TYPE bapi_te_mereqitemx,
ls_extensionin TYPE bapiparex,
lt_extensionin TYPE STANDARD TABLE OF bapiparex,
l_return TYPE TABLE OF bapiret2 WITH HEADER LINE.
IF <l_data>-zrwl IS NOT INITIAL.
ls_req_item-zrwl = <l_data>-zrwl.
ls_req_itemx-zrwl = 'X'.
ENDIF.
CLEAR ls_extensionin.
ls_extensionin-STRUCTURE = 'BAPI_TE_MEREQITEM'.
PERFORM transfer_to_extensionin USING ls_req_item CHANGING ls_extensionin.
APPEND ls_extensionin TO lt_extensionin.
CLEAR ls_extensionin.
ls_extensionin-STRUCTURE = 'BAPI_TE_MEREQITEMX'.
PERFORM transfer_to_extensionin USING ls_req_itemx CHANGING ls_extensionin.
APPEND ls_extensionin TO lt_extensionin.
CALL FUNCTION 'BAPI_PR_CREATE'
EXPORTING
prheader = ls_prheader
prheaderx = ls_prheaderx
* testrun = p_test
IMPORTING
number = lv_number
TABLES
return = l_return
pritem = l_pritem[]
pritemx = l_pritemx[]
extensionin = lt_extensionin
prcomponents = l_comp[]
prcomponentsx = l_compx[]
* praccount = l_praccount[]
* praccountx = l_praccountx[]
.
CLEAR l_return.
LOOP AT l_return WHERE type = 'E' OR type = 'A'.
PERFORM frm_error_add USING l_return-message CHANGING lv_msg.
ENDLOOP.
IF lv_msg IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
lv_light = 1.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
lv_light = 3.
lv_msg = 'ok.'.
ENDIF.
FORM transfer_to_extensionin USING is_bapi_extensionin TYPE any
CHANGING cs_bapiparex TYPE bapiparex.
DATA l_distance_characters TYPE i.
FIELD-SYMBOLS <any> TYPE any.
DESCRIBE DISTANCE BETWEEN cs_bapiparex-structure
AND cs_bapiparex-valuepart1
INTO l_distance_characters IN CHARACTER MODE.
ASSIGN cs_bapiparex+l_distance_characters(*) TO <any>
CASTING LIKE is_bapi_extensionin.
<any> = is_bapi_extensionin.
ENDFORM.
上面代码仅供参考,根据实际情况调整参数