2008 Apr 23 7:37 AM
Hi All,
I have to create a Purchase order using BAPI's.Could you please let me know the steps to be followed?
What all the difficulties we've to face while creating P.O ?
If u have the code pls send it to me with all the explanation.It will be more helpfulto me.
Which function module should i've to use BAPI_PO_CREATE or BAPI_PO_CREATE1 ?
Thanking You.
Regards,
Nagarjuna.
2008 Apr 23 7:42 AM
&----
*& Report ZBAPI_CREATE_PO *
*& *
&----
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.
data: V_EXPPURCHASEORDER like BAPIMEPOHEADER-PO_NUMBER.
*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 'NB' ,
cdate like HEADER-CREAT_DATE default sy-datum ,
vendor like HEADER-VENDOR default 'RAJ',
pur_org like HEADER-PURCH_ORG default '0001' ,
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 '00020',
material like ITEM-MATERIAL default 'M-127' ,
plant like ITEM-PLANT default '0001' ,
quantity like ITEM-QUANTITY default 200.
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 = V_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 / v_EXPPURCHASEORDER.
*ENDLOOP.
cheers,
&----
*& Report ZBAPI_CREATE_PO *
*& *
&----
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.
data: V_EXPPURCHASEORDER like BAPIMEPOHEADER-PO_NUMBER.
*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 'NB' ,
cdate like HEADER-CREAT_DATE default sy-datum ,
vendor like HEADER-VENDOR default 'RAJ',
pur_org like HEADER-PURCH_ORG default '0001' ,
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 '00020',
material like ITEM-MATERIAL default 'M-127' ,
plant like ITEM-PLANT default '0001' ,
quantity like ITEM-QUANTITY default 200.
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 = V_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 / v_EXPPURCHASEORDER.
*ENDLOOP.
cheers,
2008 Apr 23 7:42 AM
&----
*& Report ZBAPI_CREATE_PO *
*& *
&----
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.
data: V_EXPPURCHASEORDER like BAPIMEPOHEADER-PO_NUMBER.
*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 'NB' ,
cdate like HEADER-CREAT_DATE default sy-datum ,
vendor like HEADER-VENDOR default 'RAJ',
pur_org like HEADER-PURCH_ORG default '0001' ,
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 '00020',
material like ITEM-MATERIAL default 'M-127' ,
plant like ITEM-PLANT default '0001' ,
quantity like ITEM-QUANTITY default 200.
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 = V_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 / v_EXPPURCHASEORDER.
*ENDLOOP.
cheers,
2008 Apr 23 7:43 AM
BAPI_PO_CREATE is for normal tcode me21
BAPI_PO_CREATE1 is for njoy tcodes me21n.
CALL FUNCTION 'BAPI_PO_CREATE'
EXPORTING
PO_HEADER = PO_HEADER
PO_HEADER_ADD_DATA = PO_HEADER_ADD_DATA
HEADER_ADD_DATA_RELEVANT = HEADER_ADD_DATA_RELEVANT
PO_ADDRESS = PO_ADDRESS
SKIP_ITEMS_WITH_ERROR = SKIP_ITEMS_WITH_ERROR
ITEM_ADD_DATA_RELEVANT = ITEM_ADD_DATA_RELEVANT
IMPORTING
PURCHASEORDER = PURCHASEORDER
TABLES
PO_ITEMS = PO_ITEMS
PO_ITEM_ADD_DATA = PO_ITEM_ADD_DATA
PO_ITEM_SCHEDULES = PO_ITEM_SCHEDULES
PO_ITEM_ACCOUNT_ASSIGNMENT = PO_ITEM_ACCOUNT_ASSIGNMENT
PO_ITEM_TEXT = PO_ITEM_TEXT
RETURN = RETURN
PO_LIMITS = PO_LIMITS
PO_CONTRACT_LIMITS = PO_CONTRACT_LIMITS
PO_SERVICES = PO_SERVICES
PO_SRV_ACCASS_VALUES = PO_SRV_ACCASS_VALUES
PO_SERVICES_TEXT = PO_SERVICES_TEXT
PO_BUSINESS_PARTNER = PO_BUSINESS_PARTNER
EXTENSIONIN = EXTENSIONIN
POADDRDELIVERY = POADDRDELIVERY
EXCEPTIONS
OTHERS = 1.
Reward if useful.
Dara.
2008 Apr 23 7:46 AM
Hi ,
Please refer the coding below.
PO header
WA_POHEADER-COMP_CODE = C_CODE.
WA_POHEADER-DOC_TYPE = C_DTYP.
WA_POHEADER-VENDOR = WA_HEADER_PO-LIFNR.
WA_POHEADER-PURCH_ORG = C_ORG.
WA_POHEADER-PUR_GROUP = C_GRP.
WA_POHEADER-REF_1 = WA_HEADER_PO-TRCNO.
WA_POHEADER-SALES_PERS = WA_HEADER_PO-DRVER.
PO Header update
WA_POHEADERX-COMP_CODE = C_ATX.
WA_POHEADERX-DOC_TYPE = C_ATX.
WA_POHEADERX-VENDOR = C_ATX.
WA_POHEADERX-PURCH_ORG = C_ATX.
WA_POHEADERX-PUR_GROUP = C_ATX.
WA_POHEADERX-REF_1 = C_ATX.
WA_POHEADERX-SALES_PERS = C_ATX.
PO Item
WA_POITEM-PO_ITEM = C_ITEM.
WA_POITEM-MATERIAL = C_MATL.
WA_POITEM-PLANT = C_PLNT.
WA_POITEM-QUANTITY = C_QTY.
WA_POITEM-NET_PRICE = C_NPR.
WA_POITEM-ACCTASSCAT = C_ASI.
APPEND WA_POITEM TO T_POITEM.
PO item update
WA_POITEMX-PO_ITEM = C_ITEM.
WA_POITEMX-PO_ITEMX = C_ATX.
WA_POITEMX-MATERIAL = C_ATX.
WA_POITEMX-PLANT = C_ATX.
WA_POITEMX-QUANTITY = C_ATX.
WA_POITEMX-NET_PRICE = C_ATX.
WA_POITEMX-ACCTASSCAT = C_ATX.
APPEND WA_POITEMX TO T_POITEMX.
PO schdule item
WA_POSCHEDULE-PO_ITEM = C_ITEM.
WA_POSCHEDULE-SCHED_LINE = C_SCLN.
WA_POSCHEDULE-QUANTITY = C_QTY.
APPEND WA_POSCHEDULE TO T_POSCHEDULE.
PO schdule item update
WA_POSCHEDULX-PO_ITEM = C_ITEM.
WA_POSCHEDULX-SCHED_LINE = C_SCLN.
WA_POSCHEDULX-PO_ITEMX = C_ATX.
WA_POSCHEDULX-SCHED_LINEX = C_ATX.
WA_POSCHEDULX-QUANTITY = C_ATX.
APPEND WA_POSCHEDULX TO T_POSCHEDULX.
PO condition
WA_POCOND-ITM_NUMBER = C_ITEM.
WA_POCOND-COND_ST_NO = C_COIT.
WA_POCOND-COND_TYPE = C_CTYP.
WA_POCOND-COND_VALUE = C_NPR.
APPEND WA_POCOND TO T_POCOND.
PO condition update
WA_POCONDX-ITM_NUMBER = C_ITEM.
WA_POCONDX-COND_ST_NO = C_COIT.
WA_POCONDX-ITM_NUMBERX = C_ATX.
WA_POCONDX-COND_ST_NOX = C_ATX.
WA_POCONDX-COND_TYPE = C_ATX.
WA_POCONDX-COND_VALUE = C_ATX.
APPEND WA_POCONDX TO T_POCONDX.
PO account
WA_POACCOUNT-PO_ITEM = C_ITEM.
WA_POACCOUNT-COSTCENTER = C_CCTR.
APPEND WA_POACCOUNT TO T_POACCOUNT.
PO account update
WA_POACCOUNTX-PO_ITEM = C_ITEM.
WA_POACCOUNTX-COSTCENTER = C_ATX.
APPEND WA_POACCOUNTX TO T_POACCOUNTX.
PERFORM CREATE_PO.
CLEAR : WA_POHEADER,
WA_POHEADERX,
WA_POITEM,
WA_POITEMX,
WA_POSCHEDULE,
WA_POSCHEDULX,
WA_POACCOUNT,
WA_POACCOUNTX.
CLEAR : T_POHEADER,
T_POHEADERX,
T_POITEM,
T_POITEMX,
T_POSCHEDULE,
T_POSCHEDULX,
T_POACCOUNT,
T_POACCOUNTX.
ENDLOOP.
ENDFORM. " POPULATE
&----
*& Form CREATE_PO
&----
text
----
--> p1 text
<-- p2 text
----
FORM CREATE_PO .
Create PO with the combination of vendor and truck number
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
POHEADER = WA_POHEADER
POHEADERX = WA_POHEADERX
IMPORTING
EXPPURCHASEORDER = EX_PO_NUMBER
TABLES
RETURN = T_RETURN
POITEM = T_POITEM
POITEMX = T_POITEMX
POSCHEDULE = T_POSCHEDULE
POSCHEDULEX = T_POSCHEDULX
POCONDHEADER = T_POCONDHEADER
POCONDHEADERX = T_POCONDHEADERX
POCOND = T_POCOND
POCONDX = T_POCONDX
POACCOUNT = T_POACCOUNT
POACCOUNTX = T_POACCOUNTX
.
IF EX_PO_NUMBER IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
IF DETAIL EQ 'X'.
PERFORM SHOW_RESULT.
ELSE.
WRITE 😕 'THE PURCHASE ORDER DOCUMENT IS : ', EX_PO_NUMBER.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
IF DETAIL EQ 'X'.
PERFORM SHOW_RESULT.
ELSE.
WRITE 😕 'THE PURCHASE ORDER DOCUMENT IS NOT GENERATED '.
ENDIF.
ENDIF.
ENDFORM. " CREATE_PO
Regards
Raj.K
2008 Apr 23 8:00 AM
Hi,
Refer the blog
/people/sap.user72/blog/2005/03/22/sample-code-to-create-purchase-order-using-bapi-in-r3
Regards
Kiran Sure
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |