Application Development and Automation 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: 
Read only

BAPI_PO_CREATE1 error

Former Member
0 Likes
939

Hi Guru's,

I am encountering problems using BAPI_PO_CREATE1. For background history, my company is transfering from BAPI_PO_CREATE to BAPI_PO_CREATE1. Most of the existing functionalities are working fine with the transition except a few.

One of the errors that i encountered was an error message stating "For items without invoice receipt, please enter price 0". Using the old bapi i didnt hit this problem even though the data that is passed to the old and new BAPI is same.

Another error that I got was "Error on Currency rate" which I didnt encounter using the old BAPI as well. I have debugged both issues and the values that are passed into the BAPI for old and new are the same.

Hope you guys can help me out with this. Thanks in advance.

Anand

1 REPLY 1
Read only

Former Member
0 Likes
683

HI,

See the below program, this may help you

*&---------------------------------------------------------------------* 

REPORT ZBAPI_CREATE_PO . 

*&---------------------------------------------------------------------* 

*DATA DECLARATION 

CONSTANTS : C_X VALUE 'X'. 

*Structures to hold PO header data 

DATA : HEADER LIKE BAPIMEPOHEADER , 

HEADERX LIKE BAPIMEPOHEADERX . 

*Structures to hold PO account data 

DATA : ACCOUNT LIKE BAPIMEPOACCOUNT OCCURS 0 WITH HEADER LINE , 

ACCOUNTX LIKE BAPIMEPOACCOUNTX OCCURS 0 WITH HEADER LINE . 

*Structures to hold PO schedule data 

DATA : ITEMSCHEDULE LIKE BAPIMEPOSCHEDULE OCCURS 0 WITH HEADER LINE , 

ITEMSCHEDULEX LIKE BAPIMEPOSCHEDULX OCCURS 0 WITH HEADER LINE . 

*Structures to hold PO services data 

DATA : SERVICES LIKE BAPIESLLC OCCURS 0 WITH HEADER LINE . 



*Internal Tables to hold PO ITEM DATA 

DATA : ITEM LIKE BAPIMEPOITEM OCCURS 0 WITH HEADER LINE, 

ITEMX LIKE BAPIMEPOITEMX OCCURS 0 WITH HEADER LINE, 

*Internal table to hold messages from BAPI call 

RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. 

data : w_header(40) value 'PO Header', 

PURCHASEORDER LIKE BAPIMEPOHEADER-PO_NUMBER, 

DELIVERY_DATE LIKE BAPIMEPOSCHEDULE-DELIVERY_DATE. 

data : ws_langu like sy-langu. 

*text-001 = 'PO Header' - define as text element 

selection-screen begin of block b1 with frame title text-001. 

parameters : company like header-comp_code default '1000' , 

doctyp like HEADER-DOC_TYPE default 'PM' , 

cdate like HEADER-CREAT_DATE default sy-datum , 

vendor like HEADER-VENDOR default '100006' , 

pur_org like HEADER-PURCH_ORG default '1000' , 

pur_grp like HEADER-PUR_GROUP default '850' , 

sociedad like HEADER-COMP_CODE default '1000' , 

vendedor like HEADER-SALES_PERS default 'Wilda Messina'. 



selection-screen end of block b1. 

selection-screen begin of block b2 with frame title text-002. 

parameters : item_num like ITEM-PO_ITEM default '00010', 

material like ITEM-MATERIAL default 'CRANE' , 

tipo_imp like ITEM-ACCTASSCAT default 'K' , 

pos_doc like ITEM-ITEM_CAT default 'F' , 

shorttxt like ITEM-SHORT_TEXT default 'PRUEBA BAPI' , 

grup_art like ITEM-MATL_GROUP default '350001' , 

plant like ITEM-PLANT default '1000' , 

mpe like ITEM-TRACKINGNO default '9999' , 

contrato like ITEM-AGREEMENT default '4904000003' , 

quantity like ITEM-QUANTITY default 1 . 

* po_unit like ITEM-PO_UNIT default 'UP'. 

selection-screen end of block b2. 

* Parámnetros para los servicios 

selection-screen begin of block b3 with frame title text-003. 

parameters : paquete like SERVICES-PCKG_NO default '956', 

numlinin like SERVICES-LINE_NO default '0000000009' , 

numlinea like SERVICES-EXT_LINE default '10', 

service like SERVICES-SERVICE default '8010', 

srv_cant like SERVICES-quantity default '5' , 

precio like SERVICES-GR_PRICE default '300' , 

impuesto like SERVICES-TAX_CODE default 'i2' . 

selection-screen end of block b3. 

* Parámnetros de imputación 

selection-screen begin of block b4 with frame title text-004. 

parameters : centro like ACCOUNT-COSTCENTER default '120100', 

cuenta like ACCOUNT-GL_ACCOUNT default '6301002000' , 

num_pos like ACCOUNT-PO_ITEM default '10' , 

serial like ACCOUNT-SERIAL_NO default '10' , 

ind_imp like ACCOUNT-TAX_CODE default 'I2' . 

selection-screen end of block b4. 



*&---------------------------------------------------------------------* 

START-OF-SELECTION. 

*&---------------------------------------------------------------------* 

*DATA POPULATION 

*&---------------------------------------------------------------------* 

ws_langu = sy-langu. "Language variable 

*POPULATE HEADER DATA FOR PO 

HEADER-COMP_CODE = sociedad . 

HEADER-DOC_TYPE = doctyp . 

HEADER-VENDOR = vendor . 

HEADER-CREAT_DATE = cdate . 

HEADER-CREATED_BY = 'TD17191' . 

HEADER-PURCH_ORG = pur_org . 

HEADER-PUR_GROUP = pur_grp . 

HEADER-COMP_CODE = company . 

HEADER-LANGU = ws_langu . 

HEADER-SALES_PERS = vendedor . 

HEADER-CURRENCY = 'DOP' . 

*HEADER-ITEM_INTVL = 10 . 

*HEADER-PMNTTRMS = 'N30' . 

*HEADER-EXCH_RATE = 1 . 



*&---------------------------------------------------------------------* 

*POPULATE HEADER FLAG. 

*&---------------------------------------------------------------------* 

HEADERX-comp_code = c_x. 

HEADERX-doc_type = c_x. 

HEADERX-vendor = c_x. 

HEADERX-creat_date = c_x. 

HEADERX-created_by = c_x. 

HEADERX-purch_org = c_x. 

HEADERX-pur_group = c_x. 

HEADERX-langu = c_x. 

HEADERX-sales_pers = c_x. 

HEADER-CURRENCY = c_x. 

*HEADER-ITEM_INTVL = c_x. 

*HEADER-PMNTTRMS = c_x. 

*HEADER-EXCH_RATE = c_x. 

*HEADER-EXCH_RATE = c_x. 

*&---------------------------------------------------------------------* 

*POPULATE ITEM DATA. 

*&---------------------------------------------------------------------* 

ITEM-PO_ITEM = item_num . 

*ITEM-MATERIAL = material . 

ITEM-SHORT_TEXT = shorttxt . 

ITEM-TAX_CODE = 'I2'. 

ITEM-ACCTASSCAT = tipo_imp . 

ITEM-ITEM_CAT = pos_doc . 

ITEM-MATL_GROUP = grup_art . 

ITEM-PLANT = plant . 

ITEM-TRACKINGNO = mpe . 

ITEM-AGREEMENT = contrato . 

ITEM-AGMT_ITEM = '10' . 

*ITEM-QUANTITY = quantity . 

*ITEM-PO_UNIT = po_unit . 

APPEND ITEM. CLEAR ITEM. 

*&---------------------------------------------------------------------* 

*POPULATE ITEM FLAG TABLE 

*&---------------------------------------------------------------------* 

ITEMX-PO_ITEM = item_num. 

ITEMX-PO_ITEMX = c_x. 

*ITEMX-MATERIAL = C_X. 

ITEMX-SHORT_TEXT = C_X. 

ITEMX-TAX_CODE = C_X. 

ITEMX-ACCTASSCAT = C_X. 

ITEMX-ITEM_CAT = c_x. 

ITEMX-MATL_GROUP = C_X. 

ITEMX-PLANT = C_X. 

ITEMX-TRACKINGNO = C_X. 

ITEMX-AGREEMENT = C_X. 

ITEMX-AGMT_ITEM = c_x. 

ITEMX-STGE_LOC = C_X. 

*ITEMX-QUANTITY = C_X. 

*ITEMX-PO_UNIT = C_X. 

APPEND ITEMX. CLEAR ITEMX. 

*&---------------------------------------------------------------------* 

*POPULATE ITEM SCHEDULE DATA. 

*&---------------------------------------------------------------------* 

ITEMSCHEDULE-PO_ITEM = '00010'. 

*ITEMSCHEDULE-DELIVERY_DATE = '08/04/2005'. "sy-datum . 

*ITEM_SCHEDULE-QUANTITY = '1'. "ITDETALLE-CANTIDAD. 

APPEND ITEMSCHEDULE. 

CLEAR ITEMSCHEDULE. 

*&---------------------------------------------------------------------* 

*POPULATE ITEM FLAG FOR SCHEDULE TABLE. 

*&---------------------------------------------------------------------* 

ITEMSCHEDULEX-PO_ITEM = '10'. 

ITEMSCHEDULEX-PO_ITEMX = c_x . 

ITEMSCHEDULEX-DELIVERY_DATE = c_x . 

*ITEMSCHEDULEX-QUANTITY = '1' . "ITDETALLE-CANTIDAD. 

APPEND ITEMSCHEDULEX. 

CLEAR ITEMSCHEDULEX. 



*&---------------------------------------------------------------------* 

*POPULATE ACCOUNT DATA. 

*&---------------------------------------------------------------------* 

ACCOUNT-PO_ITEM = '10' . 

ACCOUNT-SERIAL_NO = serial . 

ACCOUNT-CREAT_DATE = sy-datum . 

ACCOUNT-COSTCENTER = centro . 

ACCOUNT-GL_ACCOUNT = cuenta . 

ACCOUNT-CO_AREA = '1000' . 

ACCOUNT-TAX_CODE = 'I2' . 

APPEND ACCOUNT. CLEAR ACCOUNT. 

*&---------------------------------------------------------------------* 

*POPULATE ACCOUNT FLAG TABLE. 

*&---------------------------------------------------------------------* 

ACCOUNTX-PO_ITEM = '10' . 

ACCOUNTX-PO_ITEMX = c_x . 

ACCOUNTX-SERIAL_NO = serial . 

ACCOUNTX-SERIAL_NOX = c_x . 

ACCOUNTX-CREAT_DATE = c_x . 

ACCOUNTX-COSTCENTER = c_x . 

ACCOUNTX-GL_ACCOUNT = c_x . 

ACCOUNTX-CO_AREA = c_x . 

ACCOUNTX-TAX_CODE = c_x . 

APPEND ACCOUNTX. CLEAR ACCOUNTX. 



*&---------------------------------------------------------------------* 

*POPULATE SERVICES DATA. 

*&---------------------------------------------------------------------* 

SERVICES-PCKG_NO = paquete . 

*SERVICES-LINE_NO = numlinin . 

SERVICES-EXT_LINE = numlinea . 

SERVICES-SERVICE = service . 

SERVICES-QUANTITY = srv_cant . 

SERVICES-GR_PRICE = precio . 

SERVICES-TAX_CODE = impuesto . 

APPEND SERVICES. CLEAR SERVICES . 



*&---------------------------------------------------------------------* 

*BAPI CALL 

*&---------------------------------------------------------------------* 

CALL FUNCTION 'BAPI_PO_CREATE1' 

EXPORTING 

POHEADER = HEADER 

POHEADERX = HEADERX 

* POADDRVENDOR = 

* TESTRUN = 

IMPORTING 

EXPPURCHASEORDER = PURCHASEORDER 

* EXPHEADER = 

* EXPPOEXPIMPHEADER = 

TABLES 

RETURN = RETURN 

POITEM = ITEM 

POITEMX = ITEMX 

POSCHEDULE = ITEMSCHEDULE 

POSCHEDULEX = ITEMSCHEDULEX 

POACCOUNT = ACCOUNT 

POACCOUNTX = ACCOUNTX 

POSERVICES = SERVICES. 

*&---------------------------------------------------------------------* 

*Confirm the document creation by calling database COMMIT 

*&---------------------------------------------------------------------* 

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' 

EXPORTING 

WAIT = 'X' 

* IMPORTING 

* RETURN = 

. 

end-of-selection. 

*&---------------------------------------------------------------------* 

*Output the messages returned from BAPI call 

*&---------------------------------------------------------------------* 

LOOP AT RETURN. 

WRITE / RETURN-MESSAGE. 

ENDLOOP. 

see the below link for a blog which explains about this BAPI with an example

/people/sap.user72/blog/2005/03/22/sample-code-to-create-purchase-order-using-bapi-in-r3

mark all the helpful answers

Regards

Sudheer