Dear all:
I want to use BAPI_PO_CREATE1 to create more than one purchase order schedule item for a purchase order item .However, the system either posts the first purchase order schedule line or the BAPI terminates the posting with an error message. I have found SAP NOTES (828582) try to solve the problem . But it was no use.
My SAP system component information is SAP_APPL 500 0012 SAPKH50012 .
I attach test program as follows:
REPORT ZPO_CREATE.
DATA: HEADER LIKE BAPIMEPOHEADER,
HEADERX LIKE BAPIMEPOHEADERX,
EXPHEADER LIKE BAPIMEPOHEADER,
TESTRUN LIKE BAPIFLAG-BAPIFLAG,
ITEM LIKE BAPIMEPOITEM OCCURS 0 WITH HEADER LINE,
ITEMX LIKE BAPIMEPOITEMX OCCURS 0 WITH HEADER LINE,
POSCHEDULE LIKE BAPIMEPOSCHEDULE OCCURS 0 WITH HEADER LINE,
POSCHEDULEX LIKE BAPIMEPOSCHEDULX OCCURS 0 WITH HEADER LINE,
POTEXTHEADER LIKE BAPIMEPOTEXTHEADER OCCURS 0 WITH HEADER LINE,
POTEXTITEM LIKE BAPIMEPOTEXT OCCURS 0 WITH HEADER LINE,
RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
*<<<< HEADER
HEADER-COMP_CODE = '1000'.
HEADER-DOC_TYPE = 'NB'.
HEADER-CREAT_DATE = SY-DATUM.
HEADER-CREATED_BY = SY-UNAME.
HEADER-VENDOR = '0000000063'.
HEADER-LANGU = SY-LANGU.
HEADER-PURCH_ORG = '1000'.
HEADER-PUR_GROUP = '100'.
HEADER-CURRENCY = 'RMB'.
HEADER-DOC_DATE = SY-DATUM.
HEADERX-COMP_CODE = 'X'.
HEADERX-DOC_TYPE = 'X'.
HEADERX-CREAT_DATE = 'X'.
HEADERX-CREATED_BY = 'X'.
HEADERX-VENDOR = 'X'.
HEADERX-LANGU = 'X'.
HEADERX-PURCH_ORG = 'X'.
HEADERX-PUR_GROUP = 'X'.
HEADERX-CURRENCY = 'X'.
HEADERX-DOC_DATE = 'X'.
<<<< ITEM
CLEAR ITEM.
ITEM-PO_ITEM = '00010'.
ITEM-MATERIAL = 'K01060'.
ITEM-PLANT = '1000'.
ITEM-QUANTITY = 20.
ITEM-PO_UNIT = 'LIN'.
ITEM-NET_PRICE = 310.
ITEM-TAX_CODE = 'J2'.
ITEM-PO_PRICE = 1.
ITEM-FINAL_INV = 'X'.
ITEM-IR_IND = 'X'.
APPEND ITEM.
ITEMX-PO_ITEM = '00010'.
ITEMX-MATERIAL = 'X'.
ITEMX-PLANT = 'X'.
ITEMX-QUANTITY = 'X'.
ITEMX-PO_UNIT = 'X'.
ITEMX-NET_PRICE = 'X'.
ITEMX-TAX_CODE = 'X'.
ITEMx-PO_PRICE = 'X'.
ITEMX-FINAL_INV = 'X'.
ITEMX-IR_IND = 'X'.
APPEND ITEMX.
**************schedule lines doesn't effect or make error when post po
POSCHEDULE-PO_ITEM = 10 .
POSCHEDULE-SCHED_LINE = 1.
POSCHEDULE-DELIVERY_DATE = SY-DATUM .
POSCHEDULE-QUANTITY = 5 .
APPEND POSCHEDULE.
POSCHEDULE-PO_ITEM = 10 .
POSCHEDULE-SCHED_LINE = 2 .
POSCHEDULE-DELIVERY_DATE = SY-DATUM .
POSCHEDULE-QUANTITY = 15 .
APPEND POSCHEDULE.
POSCHEDULEX-PO_ITEM = 10 .
POSCHEDULEX-SCHED_LINE = 1.
POSCHEDULEX-DELIVERY_DATE = 'X' .
POSCHEDULEX-QUANTITY = 'X' .
APPEND POSCHEDULEX.
POSCHEDULEX-PO_ITEM = 10 .
POSCHEDULEX-SCHED_LINE = 2.
POSCHEDULEX-DELIVERY_DATE = 'X' .
POSCHEDULEX-QUANTITY = 'X' .
APPEND POSCHEDULEX.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
POHEADER = HEADER
POHEADERX = HEADERX
NO_PRICE_FROM_PO = 'X'
IMPORTING
EXPHEADER = EXPHEADER
TABLES
RETURN = RETURN
POITEM = ITEM
POITEMX = ITEMX
POSCHEDULE = POSCHEDULE
POSCHEDULEX = POSCHEDULEX
.
LOOP AT RETURN .
WRITE : / RETURN-TYPE,
RETURN-ID,
RETURN-NUMBER,
RETURN-MESSAGE.
CLEAR RETURN.
ENDLOOP.
IF NOT EXPHEADER IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
ENDIF.
I am full of grateful for you can solve my problem . Thanks a lot!
Best regards.
Daniel fu 2006-08-27