Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

BAPI_PO_CREATE1 multiple schedule lines cann't create ECC500

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

I guess u need to add

POSCHEDULEX-PO_ITEMX = X.

before appending the table Parameter POSCHEDULEX

One for each append statement on table internal table POSCHEDULEX

Regards

Alok Pathak

1 REPLY 1

Former Member
0 Kudos

I guess u need to add

POSCHEDULEX-PO_ITEMX = X.

before appending the table Parameter POSCHEDULEX

One for each append statement on table internal table POSCHEDULEX

Regards

Alok Pathak