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: 

Need help on BAPI_PO_CREATE and BAPI_PO_CREATE1

Former Member
0 Kudos

Hi,

Trying to create simple PO using BAPI_PO_CREATE.

Filling up all necessary details about header , item and delivery schedule.

In return message is shown as

'In case of ERS procedure, please enter terms of payment'.

I couldn't find what to do with ZTERM through bapi_po_create.

Can any one give sample code to create PO using

BAPI_PO_CREATE

and BAPI_PO_CREATE1

Madhura Nadgauda

1 ACCEPTED SOLUTION

Former Member
0 Kudos

&----


*& Report ZBAPI_CREATE_PO *

*& *

&----


*& Program demonstrates the BAPI call to create Purchase Order *

*& Minimum required parameters are used are as per the current *

*& system configuration *

&----


REPORT ZBAPI_CREATE_PO .

&----


*DATA DECLARATION

CONSTANTS : C_X VALUE 'X'.

*Structures to hold PO header data

DATA : HEADER LIKE BAPIMEPOHEADER ,

HEADERX LIKE BAPIMEPOHEADERX .

*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'.

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 '2700' ,

doctyp like HEADER-DOC_TYPE default 'NB' ,

cdate like HEADER-CREAT_DATE default sy-datum ,

vendor like HEADER-VENDOR default '0010000023',

pur_org like HEADER-PURCH_ORG default '2700' ,

pur_grp like HEADER-PUR_GROUP default '001' .

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 '00001',

material like ITEM-MATERIAL default 'CRANE' ,

plant like ITEM-PLANT default '2700' ,

quantity like ITEM-QUANTITY default 100.

selection-screen end of block b2.

&----


START-OF-SELECTION.

&----


*DATA POPULATION

&----


ws_langu = sy-langu. "Language variable

*POPULATE HEADER DATA FOR PO

HEADER-COMP_CODE = company .

HEADER-DOC_TYPE = doctyp .

HEADER-CREAT_DATE = cdate .

HEADER-VENDOR = vendor .

HEADER-LANGU = ws_langu .

HEADER-PURCH_ORG = pur_org .

HEADER-PUR_GROUP = pur_grp .

&----


*POPULATE HEADER FLAG.

&----


HEADERX-comp_code = c_x.

HEADERX-doc_type = c_x.

HEADERX-creat_date = c_x.

HEADERX-vendor = c_x.

HEADERX-langu = c_x.

HEADERX-purch_org = c_x.

HEADERX-pur_group = c_x.

HEADERX-doc_date = c_x.

&----


*POPULATE ITEM DATA.

&----


ITEM-PO_ITEM = item_num.

ITEM-MATERIAL = material.

ITEM-PLANT = plant.

ITEM-QUANTITY = quantity.

APPEND ITEM.

&----


*POPULATE ITEM FLAG TABLE

&----


ITEMX-PO_ITEM = item_num.

ITEMX-MATERIAL = C_X.

ITEMX-PLANT = C_X .

ITEMX-STGE_LOC = C_X .

ITEMX-QUANTITY = C_X .

ITEMX-TAX_CODE = C_X .

ITEMX-ITEM_CAT = C_X .

ITEMX-ACCTASSCAT = C_X .

APPEND ITEMX.

&----


*BAPI CALL

&----


CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = HEADER

POHEADERX = HEADERX

  • POADDRVENDOR =

  • TESTRUN =

  • IMPORTING

  • EXPPURCHASEORDER =

  • EXPHEADER =

  • EXPPOEXPIMPHEADER =

TABLES

RETURN = RETURN

POITEM = ITEM

POITEMX = ITEMX.

&----


*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.

________________________________________________________________

<b> Create a purchase order with configuration using the BAPI</b>

This took some time to figure out how to setup. It may be useful.

call function 'BAPI_CFG_CREATE'

exporting

object_id = 'MYMATCODE'

root_type = 'MARA'

root_name = 'MYMATCODE'

plant = 'MYPLANT'

importing

cfg_handle = l_handle

root_instance = l_instance

exceptions

error = 1

others = 2.

l_characts_vals-atnam = 'WIDTH'.

l_characts_vals-atwtb = '500'.

append l_characts_vals to it_characts_vals.

call function 'BAPI_CFGINST_CHARCS_VALS_SET'

exporting

object_id = 'MYMATCODE'

instance = l_instance

tables

characts_vals = it_characts_vals

characts_vals_err = it_characts_vals_err.

call function 'CE_C_SET_CBASE'.

...

l_poitem-int_obj_no = l_handle.

...

call function 'BAPI_PO_CREATE1'

exporting

poheader = l_poheader

poheaderx = l_poheaderx

importing

expheader = l_expheader

exppurchaseorder = l_exppurchaseorder

tables

poitem = lt_poitem

poitemx = lt_poitemx

poschedule = lt_poschedule

poschedulex = lt_poschedulex

return = lt_return.

call function 'BAPI_TRANSACTION_COMMIT'.

also

<a href="http://www.erpgenie.com/phpBB2/viewtopic.php?p=15525&sid=ea0812d14d0cbffb804e18d34040d521">refer</a>

regards,

srinivas

<b>*reward for useful answers*</b>

2 REPLIES 2

Former Member
0 Kudos

&----


*& Report ZBAPI_CREATE_PO *

*& *

&----


*& Program demonstrates the BAPI call to create Purchase Order *

*& Minimum required parameters are used are as per the current *

*& system configuration *

&----


REPORT ZBAPI_CREATE_PO .

&----


*DATA DECLARATION

CONSTANTS : C_X VALUE 'X'.

*Structures to hold PO header data

DATA : HEADER LIKE BAPIMEPOHEADER ,

HEADERX LIKE BAPIMEPOHEADERX .

*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'.

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 '2700' ,

doctyp like HEADER-DOC_TYPE default 'NB' ,

cdate like HEADER-CREAT_DATE default sy-datum ,

vendor like HEADER-VENDOR default '0010000023',

pur_org like HEADER-PURCH_ORG default '2700' ,

pur_grp like HEADER-PUR_GROUP default '001' .

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 '00001',

material like ITEM-MATERIAL default 'CRANE' ,

plant like ITEM-PLANT default '2700' ,

quantity like ITEM-QUANTITY default 100.

selection-screen end of block b2.

&----


START-OF-SELECTION.

&----


*DATA POPULATION

&----


ws_langu = sy-langu. "Language variable

*POPULATE HEADER DATA FOR PO

HEADER-COMP_CODE = company .

HEADER-DOC_TYPE = doctyp .

HEADER-CREAT_DATE = cdate .

HEADER-VENDOR = vendor .

HEADER-LANGU = ws_langu .

HEADER-PURCH_ORG = pur_org .

HEADER-PUR_GROUP = pur_grp .

&----


*POPULATE HEADER FLAG.

&----


HEADERX-comp_code = c_x.

HEADERX-doc_type = c_x.

HEADERX-creat_date = c_x.

HEADERX-vendor = c_x.

HEADERX-langu = c_x.

HEADERX-purch_org = c_x.

HEADERX-pur_group = c_x.

HEADERX-doc_date = c_x.

&----


*POPULATE ITEM DATA.

&----


ITEM-PO_ITEM = item_num.

ITEM-MATERIAL = material.

ITEM-PLANT = plant.

ITEM-QUANTITY = quantity.

APPEND ITEM.

&----


*POPULATE ITEM FLAG TABLE

&----


ITEMX-PO_ITEM = item_num.

ITEMX-MATERIAL = C_X.

ITEMX-PLANT = C_X .

ITEMX-STGE_LOC = C_X .

ITEMX-QUANTITY = C_X .

ITEMX-TAX_CODE = C_X .

ITEMX-ITEM_CAT = C_X .

ITEMX-ACCTASSCAT = C_X .

APPEND ITEMX.

&----


*BAPI CALL

&----


CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = HEADER

POHEADERX = HEADERX

  • POADDRVENDOR =

  • TESTRUN =

  • IMPORTING

  • EXPPURCHASEORDER =

  • EXPHEADER =

  • EXPPOEXPIMPHEADER =

TABLES

RETURN = RETURN

POITEM = ITEM

POITEMX = ITEMX.

&----


*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.

________________________________________________________________

<b> Create a purchase order with configuration using the BAPI</b>

This took some time to figure out how to setup. It may be useful.

call function 'BAPI_CFG_CREATE'

exporting

object_id = 'MYMATCODE'

root_type = 'MARA'

root_name = 'MYMATCODE'

plant = 'MYPLANT'

importing

cfg_handle = l_handle

root_instance = l_instance

exceptions

error = 1

others = 2.

l_characts_vals-atnam = 'WIDTH'.

l_characts_vals-atwtb = '500'.

append l_characts_vals to it_characts_vals.

call function 'BAPI_CFGINST_CHARCS_VALS_SET'

exporting

object_id = 'MYMATCODE'

instance = l_instance

tables

characts_vals = it_characts_vals

characts_vals_err = it_characts_vals_err.

call function 'CE_C_SET_CBASE'.

...

l_poitem-int_obj_no = l_handle.

...

call function 'BAPI_PO_CREATE1'

exporting

poheader = l_poheader

poheaderx = l_poheaderx

importing

expheader = l_expheader

exppurchaseorder = l_exppurchaseorder

tables

poitem = lt_poitem

poitemx = lt_poitemx

poschedule = lt_poschedule

poschedulex = lt_poschedulex

return = lt_return.

call function 'BAPI_TRANSACTION_COMMIT'.

also

<a href="http://www.erpgenie.com/phpBB2/viewtopic.php?p=15525&sid=ea0812d14d0cbffb804e18d34040d521">refer</a>

regards,

srinivas

<b>*reward for useful answers*</b>

Former Member
0 Kudos

thank you .