FUNCTION ZMMK_BAPI_PR_CREATE.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(ACCTASSCAT) LIKE BAPIMEREQITEMIMP-ACCTASSCAT
*" REFERENCE(MATERIAL) LIKE BAPIMEREQITEMIMP-MATERIAL
*" REFERENCE(SHORT_TEXT) LIKE BAPIMEREQITEMIMP-SHORT_TEXT
*" REFERENCE(QUANTITY) LIKE BAPIMEREQITEMIMP-QUANTITY
*" REFERENCE(UNIT) LIKE BAPIMEREQITEMIMP-UNIT
*" REFERENCE(DELIV_DATE) LIKE BAPIMEREQITEMIMP-DELIV_DATE
*" REFERENCE(PLANT) LIKE BAPIMEREQITEMIMP-PLANT
*" REFERENCE(ORDERID) LIKE BAPIMEREQACCOUNT-ORDERID
*" REFERENCE(PREQ_PRICE) LIKE BAPIMEREQITEMIMP-PREQ_PRICE
*" REFERENCE(PREQ_ITEM) LIKE BAPIMEREQITEMIMP-PREQ_ITEM
*" EXPORTING
*" VALUE(NUMBER) LIKE BAPIMEREQHEADER-PREQ_NO
*" REFERENCE(GV_RESULT) TYPE CHAR1
*" REFERENCE(GV_MESSAGE) TYPE BAPI_MSG
*" TABLES
*" RETURN STRUCTURE BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------
DATA : S_HEADER LIKE BAPIMEREQHEADER OCCURS 0 WITH HEADER LINE.
S_HEADER-PR_TYPE = 'NB'.
* S_HEADER-CTRL_IND = 'X'.
* S_HEADER-GENERAL_RELEASE = 'X'.
* S_HEADER-CREATE_IND = 'B'.
APPEND S_HEADER.
DATA : S_HEADERX LIKE BAPIMEREQHEADERX OCCURS 0 WITH HEADER LINE.
S_HEADERX-PR_TYPE = 'X'.
* S_HEADER-CTRL_IND = 'X'.
* S_HEADER-GENERAL_RELEASE = 'X'.
* S_HEADERX-CREATE_IND = 'X'.
APPEND S_HEADERX.
DATA : S_ITEM LIKE BAPIMEREQITEMIMP OCCURS 0 WITH HEADER LINE.
S_ITEM-PREQ_ITEM = PREQ_ITEM.
S_ITEM-ACCTASSCAT = 'Z'.
S_ITEM-MATERIAL = MATERIAL.
S_ITEM-SHORT_TEXT = SHORT_TEXT.
S_ITEM-QUANTITY = QUANTITY.
S_ITEM-UNIT = UNIT.
S_ITEM-DELIV_DATE = DELIV_DATE.
S_ITEM-PLANT = PLANT.
S_ITEM-PREQ_PRICE = PREQ_PRICE.
APPEND S_ITEM.
DATA : S_ITEMX LIKE BAPIMEREQITEMX OCCURS 0 WITH HEADER LINE.
S_ITEMX-PREQ_ITEM = PREQ_ITEM.
S_ITEMX-PREQ_ITEMX = 'X'.
S_ITEMX-ACCTASSCAT = 'X'.
S_ITEMX-MATERIAL = 'X'.
S_ITEMX-SHORT_TEXT = 'X'.
S_ITEMX-QUANTITY = 'X'.
S_ITEMX-UNIT = 'X'.
S_ITEMX-DELIV_DATE = 'X'.
S_ITEMX-PLANT = 'X'.
S_ITEMX-PREQ_PRICE = 'X'.
APPEND S_ITEMX.
DATA : S_ITEMEXP LIKE BAPIMEREQITEM OCCURS 0 WITH HEADER LINE.
S_ITEMEXP-PREQ_ITEM = PREQ_ITEM.
*S_ITEMEXP-DOC_TYPE = 'NB'.
APPEND S_ITEMEXP.
DATA : S_ACCOUNT LIKE BAPIMEREQACCOUNT OCCURS 0 WITH HEADER LINE.
S_ACCOUNT-PREQ_ITEM = PREQ_ITEM.
S_ACCOUNT-SERIAL_NO = '01'.
S_ACCOUNT-ORDERID = ORDERID.
S_ACCOUNT-QUANTITY = QUANTITY.
APPEND S_ACCOUNT.
DATA : S_ACCOUNTX LIKE BAPIMEREQACCOUNTX OCCURS 0 WITH HEADER LINE.
S_ACCOUNTX-PREQ_ITEM = PREQ_ITEM.
S_ACCOUNTX-SERIAL_NO = '01'.
S_ACCOUNTX-PREQ_ITEMX = 'X'.
S_ACCOUNTX-ORDERID = 'X'.
S_ACCOUNTX-QUANTITY = 'X'.
APPEND S_ACCOUNTX.
CALL FUNCTION 'BAPI_PR_CREATE'
EXPORTING
PRHEADER = S_HEADER
PRHEADERX = S_HEADERX
* VERSIONS =
* TESTRUN =
IMPORTING
NUMBER = NUMBER
* PRHEADEREXP =
TABLES
RETURN = RETURN
PRITEM = S_ITEM
PRITEMX = S_ITEMX
PRITEMEXP = S_ITEMEXP
PRACCOUNT = S_ACCOUNT
PRACCOUNTX = S_ACCOUNTX .
IF RETURN[] IS INITIAL.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
TYPE = SY-MSGTY
CL = SY-MSGID
NUMBER = SY-MSGNO
PAR1 = SY-MSGV1
PAR2 = SY-MSGV2
PAR3 = SY-MSGV3
PAR4 = SY-MSGV4
IMPORTING
RETURN = RETURN
EXCEPTIONS
OTHERS = 1.
ENDIF.
READ TABLE RETURN WITH KEY TYPE = 'S'.
IF sy-subrc <> 0.
READ TABLE return WITH KEY type = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
GV_RESULT = RETURN-TYPE.
GV_MESSAGE = RETURN-MESSAGE.
ENDFUNCTION.