BAPI_PO_CREATE1

Question:
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.
Answer:
did you fill up the corresponding POITEMX and POSCHEDULEX fields for
those fields
saper
Answer:
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.
Answer:
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.
Answer:
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
Answer:
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
Answer:

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.
Answer:
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

More Articles:

RFC Easy?
To set conversion factor= UOM automatically?
GRID control report in Background-Urgent?
Structure to Tables?
User Exit Not Triggered Unless Transaction Exited.?
How can have trailing Spaces in a Charecter field type?