BAPI_PO_CREATE1
Ive been trying to get this BAPI to work for some time now.
The error messages I get are :
'Please enter order unit' : Yet this is definatly in POITEM
and
'Please enter a delivery date' : I assume this goes in BAPIMEPOSCHEDULE
Whatever, I cant find where else it might need to be.
Can anyone help?......please.
did you fill up the corresponding POITEMX and POSCHEDULEX fields for
those fields
saper
Thanks for the quick reply.
Yes the corresponing X entries were filled.
I used data from an already existing PO and deliberatly left data out to check the error messages. These are the only ons left.
If I remember correctly, I believe the quantities with respective units must also be in the POITEMSCHEDULE table. There can be more than 1 delivery date for an item in the case of split delivery.
Also check format of the delivery date. I am not at work now so I cannot check it, but I remember that ONE of the dates in this BAPI must be in DD.MM.YYYY format, as opposed to all the other date fields. (Why do they do it? ) If the date-field is char(10) then it is this field. I know have this BAPI working on 4.6C, including delivery dates...
_________________
Morten
Back at work. Yes, it was delivery date that must have date format.
(Could it be default date format for the user )
Snip from working test-code:
* Delivery date:
bapi_poschedule-po_item = bapi_poitem-po_item.
bapi_poschedulex-po_item = bapi_poitem-po_item.
bapi_poschedulex-po_itemx = 'X'.
bapi_poschedule-sched_line = 1.
bapi_poschedulex-sched_line = 1.
bapi_poschedulex-sched_linex = 'X'.
MOVE '31.05.2003' TO bapi_poschedule-delivery_date.
bapi_poschedulex-delivery_date = 'X'.
APPEND bapi_poschedule.
APPEND bapi_poschedulex.
_________________
Morten
You guys are ace! Yes it was the date format.
Its a shame that the documentaion that comes with SAP isnt as good as it might be or this problem would have been avoided.
Many thanks to all for your input.
Hi all,
This is very urgent and I do hope you guys will help me out. I am using BAPI_PO_CREATE1 Function. In this I am trying to create an STO from a stock tranfer requisition. Although I can do this easily in the Function module test environment, passing the same parameters to the FM via a program gives me various errors namely that the PO_item table is still faulty and that the PO could not be created via the Enjoy transaction.
The code I am using is pasted below. Please do help me out on this.
Regards,
Quo
LOOP AT T_REQUISITION_ITEMS.
UNPACK T_REQUISITION_ITEMS-PREQ_NO TO T_REQUISITION_ITEMS-PREQ_NO.
* Process PO Header
SELECT SINGLE BUKRS INTO WA_PO_HDR-COMP_CODE
FROM T024E
WHERE EKORG = T_REQUISITION_ITEMS-PURCH_ORG.
IF ( SY-SUBRC NE 0 OR WA_PO_HDR-COMP_CODE IS INITIAL ).
WA_PO_HDR-COMP_CODE = '2200' .
ENDIF.
WA_PO_HDRX-COMP_CODE = C_YES.
WA_PO_HDR-DOC_TYPE = T_REQUISITION_ITEMS-DOC_TYPE.
IF ( WA_PO_HDR-DOC_TYPE IS INITIAL ).
WA_PO_HDR-DOC_TYPE = 'NB'.
ENDIF.
WA_PO_HDRX-DOC_TYPE = C_YES.
WA_PO_HDR-CREAT_DATE = SY-DATUM.
WA_PO_HDRX-CREAT_DATE = C_YES.
WA_PO_HDR-CREATED_BY = SY-UNAME.
WA_PO_HDRX-CREATED_BY = C_YES.
* WA_PO_HDR-ITEM_INTVL = '00010'.
* WA_PO_HDRX-ITEM_INTVL = C_YES.
*
WA_PO_HDR-VENDOR = T_REQUISITION_ITEMS-SUPPL_PLNT.
WA_PO_HDRX-VENDOR = C_YES.
WA_PO_HDR-LANGU = WA_PO_HDR-LANGU_ISO = SY-LANGU.
WA_PO_HDRX-LANGU = WA_PO_HDRX-LANGU_ISO = C_YES.
WA_PO_HDR-PURCH_ORG = T_REQUISITION_ITEMS-PURCH_ORG.
WA_PO_HDRX-PURCH_ORG = C_YES.
WA_PO_HDR-PUR_GROUP = T_REQUISITION_ITEMS-PUR_GROUP.
WA_PO_HDRX-PUR_GROUP = C_YES.
WA_PO_HDR-CURRENCY = T_REQUISITION_ITEMS-CURRENCY.
IF ( WA_PO_HDR-CURRENCY IS INITIAL ).
WA_PO_HDR-CURRENCY = 'GBP'.
ENDIF.
WA_PO_HDRX-CURRENCY = C_YES.
WA_PO_HDR-CURRENCY_ISO = T_REQUISITION_ITEMS-CURRENCY_ISO.
IF ( WA_PO_HDR-CURRENCY_ISO IS INITIAL ).
WA_PO_HDR-CURRENCY_ISO = 'GBP'.
ENDIF.
WA_PO_HDRX-CURRENCY_ISO = C_YES.
WA_PO_HDR-DOC_DATE = SY-DATUM.
WA_PO_HDRX-DOC_DATE = C_YES.
WA_PO_HDR-SUPPL_PLNT = T_REQUISITION_ITEMS-SUPPL_PLNT.
WA_PO_HDRX-SUPPL_PLNT = C_YES.
* Completed Header Processing.
* Start Item Processing
MOVE-CORRESPONDING T_REQUISITION_ITEMS TO T_PO_ITM.
T_PO_ITM-PO_ITEM = T_REQUISITION_ITEMS-PREQ_ITEM.
T_PO_ITMX-PO_ITEMX = C_YES.
T_PO_ITMX-PO_ITEM = T_REQUISITION_ITEMS-PREQ_ITEM.
T_PO_ITMX-PO_ITEMX = C_YES.
T_PO_ITM-PLANT = T_REQUISITION_ITEMS-PLANT.
T_PO_ITMX-PLANT = C_YES.
T_PO_ITM-MATERIAL = T_PO_ITM-MATERIAL_EXTERNAL = T_PO_ITM-VEND_MAT =
T_REQUISITION_ITEMS-MATERIAL.
T_PO_ITMX-MATERIAL = T_PO_ITMX-MATERIAL_EXTERNAL =
T_PO_ITMX-VEND_MAT = C_YES.
T_PO_ITM-QUANTITY = T_REQUISITION_ITEMS-QUANTITY.
T_PO_ITMX-QUANTITY = C_YES.
T_PO_ITM-PO_UNIT = T_REQUISITION_ITEMS-UNIT.
T_PO_ITMX-PO_UNIT = C_YES.
T_PO_ITM-PO_UNIT_ISO = T_REQUISITION_ITEMS-UNIT.
T_PO_ITMX-PO_UNIT_ISO = C_YES.
T_PO_ITM-ORDERPR_UN = T_REQUISITION_ITEMS-UNIT.
T_PO_ITMX-ORDERPR_UN = C_YES.
T_PO_ITM-ORDERPR_UN_ISO = T_REQUISITION_ITEMS-UNIT.
T_PO_ITMX-ORDERPR_UN_ISO = C_YES.
T_PO_ITM-REF_DOC = T_REQUISITION_ITEMS-PREQ_NO.
T_PO_ITMX-REF_DOC = C_YES.
T_PO_ITM-REF_ITEM = T_REQUISITION_ITEMS-PREQ_ITEM.
T_PO_ITMX-REF_ITEM = C_YES.
T_PO_ITM-PREQ_NO = T_REQUISITION_ITEMS-PREQ_NO.
T_PO_ITMX-PREQ_NO = C_YES.
T_PO_ITM-PREQ_ITEM = T_REQUISITION_ITEMS-PREQ_ITEM.
T_PO_ITMX-PREQ_ITEM = C_YES.
T_PO_ITM-NET_PRICE = T_REQUISITION_ITEMS-C_AMT_BAPI.
T_PO_ITMX-NET_PRICE = C_YES.
* Schedule line entries.
T_PO_SCH-PO_ITEM = T_REQUISITION_ITEMS-PREQ_ITEM.
T_PO_SCHX-PO_ITEM = T_REQUISITION_ITEMS-PREQ_ITEM.
T_PO_SCHX-PO_ITEMX = C_YES.
V_SCH_ITM = T_REQUISITION_ITEMS-PREQ_ITEM / 10.
T_PO_SCH-SCHED_LINE = V_SCH_ITM.
T_PO_SCHX-SCHED_LINE = V_SCH_ITM.
T_PO_SCHX-SCHED_LINEX = C_YES.
CLEAR V_SCH_ITM.
T_PO_SCH-PREQ_NO = T_REQUISITION_ITEMS-PREQ_NO.
T_PO_SCHX-PREQ_NO = C_YES.
T_PO_SCH-PREQ_ITEM = T_REQUISITION_ITEMS-PREQ_ITEM.
T_PO_SCHX-PREQ_ITEM = C_YES.
T_PO_SCH-PO_DATE = SY-DATUM.
T_PO_SCHX-PO_DATE = C_YES.
WRITE: T_REQUISITION_ITEMS-DELIV_DATE TO LV_DATE.
MOVE LV_DATE TO T_PO_SCH-DELIVERY_DATE.
* MOVE T_REQUISITION_ITEMS-DELIV_DATE TO T_PO_SCH-DELIVERY_DATE.
T_PO_SCHX-DELIVERY_DATE = C_YES.
APPEND T_PO_ITM.
APPEND T_PO_ITMX.
APPEND T_PO_SCH.
APPEND T_PO_SCHX.
AT END OF PREQ_NO.
PERFORM CREATE_STO_FROM_STR.
IF ( GV_IS_ERROR_GENERATED = C_NO ).
T_STO = V_PURCHASE_ORDER.
APPEND T_STO.
ELSE.
V_IS_ERROR_GENERATED = GV_IS_ERROR_GENERATED.
ENDIF.
CLEAR: WA_PO_HDR, T_PO_ITM, T_PO_SCH.
REFRESH: T_PO_ITM, T_PO_SCH.
REFRESH: T_PO_ITMX, T_PO_SCHX.
ENDAT.
CLEAR T_REQUISITION_ITEMS.
ENDLOOP.
FREE T_REQUISITION_ITEMS.
ENDFUNCTION.
* Subroutines
*&---------------------------------------------------------------------*
*& Form create_STO_from_STR
*&---------------------------------------------------------------------*
* Create STO from the STR Data.
*----------------------------------------------------------------------*
FORM CREATE_STO_FROM_STR.
DATA: LT_RETURN LIKE BAPIRET2 OCCURS 1 WITH HEADER LINE.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
POHEADER = WA_PO_HDR
POHEADERX = WA_PO_HDRX
* POADDRVENDOR =
* TESTRUN =
* MEMORY_UNCOMPLETE =
* MEMORY_COMPLETE =
* NO_MESSAGING =
* NO_MESSAGE_REQ =
* NO_AUTHORITY =
* NO_PRICE_FROM_PO =
IMPORTING
EXPPURCHASEORDER = V_PURCHASE_ORDER
* EXPHEADER =
TABLES
RETURN = LT_RETURN
POITEM = T_PO_ITM
POITEMX = T_PO_ITMX
* POADDRDELIVERY =
POSCHEDULE = T_PO_SCH
POSCHEDULEX = T_PO_SCHX
* POACCOUNT =
* POACCOUNTPROFITSEGMENT =
* POACCOUNTX =
* POCONDHEADER =
* POCONDHEADERX =
* POCOND =
* POCONDX =
* POLIMITS =
* POCONTRACTLIMITS =
* POSERVICES =
* POSRVACCESSVALUES =
* POSERVICESTEXT =
* EXTENSIONIN =
* EXTENSIONOUT =
* POTEXTHEADER =
* POTEXTITEM =
* POPARTNER =
.
ENDFORM. " create_STO_from_STR
*EJECT