‎2007 Dec 07 10:59 AM
hi experts,
can anyone please give me an example of step by step creation of BAPI?
regards,
vitish
‎2007 Dec 07 11:15 AM
hi vitish,
Just try this pgm for creating purchase order using bapi,
REPORT ZGPO_CREATION_BAPI.
DATA : GT_HEADER TYPE STANDARD TABLE OF BAPIMEPOHEADER,
GW_HEADER TYPE BAPIMEPOHEADER,
GT_HEADERX TYPE STANDARD TABLE OF BAPIMEPOHEADERX,
GW_HEADERX TYPE BAPIMEPOHEADERX,
GT_ITEM TYPE STANDARD TABLE OF BAPIMEPOITEM,
GW_ITEM TYPE BAPIMEPOITEM,
GT_ITEMX TYPE STANDARD TABLE OF BAPIMEPOITEMX,
GW_ITEMX TYPE BAPIMEPOITEMX,
GT_RETURN TYPE STANDARD TABLE OF BAPIRET2,
GW_RETURN TYPE BAPIRET2,
GW_LANGU TYPE SY-LANGU,
A TYPE BAPIRET2,
V_PONUMBER TYPE BAPIMEPOHEADER-PO_NUMBER. " Internal table and work area declaration for PO header and PO item
TYPES:BEGIN OF PO_STR,
COMPANY TYPE BAPIMEPOHEADER-COMP_CODE,
DOCTYPE TYPE BAPIMEPOHEADER-DOC_TYPE,
CDATE TYPE BAPIMEPOHEADER-CREAT_DATE,
VENDOR TYPE BAPIMEPOHEADER-VENDOR,
PUR_ORG TYPE BAPIMEPOHEADER-PURCH_ORG,
PUR_GRP TYPE BAPIMEPOHEADER-PUR_GROUP,
ITEM_NUM TYPE BAPIMEPOITEM-PO_ITEM,
MATERIAL TYPE BAPIMEPOITEM-MATERIAL,
PLANT TYPE BAPIMEPOITEM-PLANT,
QUANTITY(13) TYPE C,
END OF PO_STR. "Structure declaration
DATA :GT_POSTR TYPE STANDARD TABLE OF PO_STR,
GW_POSTR TYPE PO_STR,
V_PATH TYPE STRING. "Local internal table and work area declaration
CONSTANTS: C_X TYPE C VALUE 'X'.
PARAMETERS FILEPATH TYPE IBIPPARMS-PATH OBLIGATORY DEFAULT 'D:\Guna\desktop\Sample_BAPI_PO_Creation.txt'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILEPATH.
PERFORM GETFILEPATH USING FILEPATH.
START-OF-SELECTION. "Start-of-selection event is triggered
V_PATH = FILEPATH.
PERFORM UPLOAD.
GW_LANGU = SY-LANGU.
LOOP AT GT_POSTR INTO GW_POSTR.
*READ TABLE GT_POSTR INTO GW_POSTR INDEX 1.
GW_HEADER-COMP_CODE = GW_POSTR-COMPANY .
GW_HEADER-DOC_TYPE = GW_POSTR-DOCTYPE.
GW_HEADER-CREAT_DATE = GW_POSTR-CDATE .
GW_HEADER-VENDOR = GW_POSTR-VENDOR.
GW_HEADER-LANGU = GW_LANGU.
GW_HEADER-PURCH_ORG = GW_POSTR-PUR_ORG.
GW_HEADER-PUR_GROUP = GW_POSTR-PUR_GRP.
GW_HEADERX-COMP_CODE = C_X.
GW_HEADERX-DOC_TYPE = C_X.
GW_HEADERX-CREAT_DATE = C_X .
GW_HEADERX-VENDOR = C_X.
GW_HEADERX-LANGU = C_X.
GW_HEADERX-PURCH_ORG = C_X.
GW_HEADERX-PUR_GROUP = C_X.
GW_ITEM-PO_ITEM = GW_POSTR-ITEM_NUM.
GW_ITEM-MATERIAL = GW_POSTR-MATERIAL .
GW_ITEM-PLANT = GW_POSTR-PLANT.
GW_ITEM-QUANTITY = GW_POSTR-QUANTITY.
APPEND GW_ITEM TO GT_ITEM.
GW_ITEMX-PO_ITEM = GW_POSTR-ITEM_NUM.
GW_ITEMX-MATERIAL = C_X .
GW_ITEMX-PLANT = C_X.
GW_ITEMX-QUANTITY = C_X.
APPEND GW_ITEMX TO GT_ITEMX. "Assigning the flat file value to the work area
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
POHEADER = GW_HEADER
POHEADERX = GW_HEADERX
POADDRVENDOR =
TESTRUN =
MEMORY_UNCOMPLETE =
MEMORY_COMPLETE =
POEXPIMPHEADER =
POEXPIMPHEADERX =
VERSIONS =
NO_MESSAGING =
NO_MESSAGE_REQ =
NO_AUTHORITY =
NO_PRICE_FROM_PO =
IMPORTING
EXPPURCHASEORDER = V_PONUMBER
EXPHEADER =
EXPPOEXPIMPHEADER =
TABLES
RETURN = GT_RETURN
POITEM = GT_ITEM
POITEMX = GT_ITEMX
POADDRDELIVERY =
POSCHEDULE =
POSCHEDULEX =
POACCOUNT =
POACCOUNTPROFITSEGMENT =
POACCOUNTX =
POCONDHEADER =
POCONDHEADERX =
POCOND =
POCONDX =
POLIMITS =
POCONTRACTLIMITS =
POSERVICES =
POSRVACCESSVALUES =
POSERVICESTEXT =
EXTENSIONIN =
EXTENSIONOUT =
POEXPIMPITEM =
POEXPIMPITEMX =
POTEXTHEADER =
POTEXTITEM =
ALLVERSIONS =
POPARTNER =
POCOMPONENTS =
POCOMPONENTSX =
POSHIPPING =
POSHIPPINGX =
POSHIPPINGEXP =
. "BAPI PO creation function is called
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = A
.
*COMMIT WORK .
WRITE: V_PONUMBER.
CLEAR : GT_RETURN, GW_ITEM,GW_ITEMX,GT_ITEM,GT_ITEMX,
GW_HEADER,GW_HEADERX, V_PONUMBER. "All the work area is cleared
ENDLOOP.
*WRITE: V_PONUMBER.
&----
*& Form GETFILEPATH
&----
text
----
-->P_FILEPATH text
----
FORM GETFILEPATH USING P_FILEPATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
IMPORTING
FILE_NAME = FILEPATH
.
ENDFORM. " GETFILEPATH
&----
*& Form UPLOAD
&----
text
----
--> p1 text
<-- p2 text
----
FORM UPLOAD .
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = V_PATH
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = GT_POSTR
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " UPLOAD
‎2007 Dec 07 11:12 AM
Creating a BAPI
Go to transaction sw01 (that is Tools->Business Framework -> BAPI Development ->Business Object builder ) .
Select the business object ( generally of type BUS nnnn ) , according to the functional requirement for which the BAPI is being created.
Open the business object in change mode. Then Select Utilities ->API Methods ->Add method.
Then enter the name of the function module and select Continue.
Creating a BAPI contd
In the next dialog box, following information needs to be specified :
Method : Suggest an appropriate name for the method,
Texts : Enter description for the BAPI,
Radio buttons : Dialog, Synchronous, Instance-independent . BAPI s are usually implemented synchronously.
Now, select Next step.
To create the method select Yes in the next dialog box.
After the program has been generated and executed, check the program in the method just created.
Thus , a BAPI is created.
Example :-
Initially a remote function module , called ZTEST_BAPI is created ( which has ABAP code to create a sales order)
Then a BAPI is created in the business object ZTEST12 as below :
Next step :
Next step :
Next step :
Next step :
And thus a BAPI is created.
Testing the BAPI :-
You can test the BAPI by testing the individual method of the Business Object in the Business Object Builder.
( or one can use the transaction swud to test the method ) .
Releasing and freezing the BAPI :-
-To release the BAPI , first release the function module ( using transaction se37 ) .
-Set the status of the method to 'released' in the Business Object Builder .
( using transaction swo1 Edit-> change status-> released. )
Use of BAPI in Custom programs
Step 1: First step is to identify the application area. Then go to the transaction code BAPI and obtain the corresponding BAPI.
Eg : if your dealing with a sales order , in the BAPI explorer , go to sales and distribution-> sales->sales order.
Step 2: Refer to the documentation of the method to know how to use the BAPI.
Eg : In order to create a sales order, select the BAPI CreateFromDat2. (BAPI_SALESORDER_CREATEFROMDAT1).
Step 3: Simulate the desired output using SE37 transaction. Do sample testing with the function module found. SAP does not specify flag population part to control the update. That you can achieve by some trial run of the function module.
Example :
Call function BAPI_SALESORDER_CREATEFROMDAT1
EXPORTING
Order_header_in = s_order_header
IMPORTING
Salesdocument = w_sales_docno
Return = s_return
TABLES
Order_items_in = t_order_item
Order_partners = t_order_partner
Order_item_out = t_order_item_out.
Here, in the s_order_header structure we fill all the header data of the sales order to be created.
Eg:- s_order_header-sales_org = FR03,
s_order_header_distr_chan = 01. Etc..
In t_order_item table we fill all the item data of the sales order, eg. T_order_item-material = M13321,
T_order_item-plant = 0033.
append t_order_item.
Similarly we fill, t_order_item_out,t_order_partner tables.
In the structure s_return, we will get the return messages from the BAPI , eg. Sales order created successfully or
Error in item 020.
If the BAPI is successful, the number of the sales order created will be returned in the field, w_sales_docno.
Once , the BAPI is successful, to commit the changes to the database, we must use the function module,
BAPI_TRANSACTION_COMMIT.
Eg,
CALL FUNCTION BAPI_TRANSACTION_COMMIT
EXPORTING
wait = X.
hus, we can create a sales order, using the appropriate BAPI, and similarly, we can use BAPIs for many other applications.
if its useful plz reward me
thanx
Message was edited by:
Trupti Zanwar
‎2007 Dec 07 11:15 AM
hi vitish,
Just try this pgm for creating purchase order using bapi,
REPORT ZGPO_CREATION_BAPI.
DATA : GT_HEADER TYPE STANDARD TABLE OF BAPIMEPOHEADER,
GW_HEADER TYPE BAPIMEPOHEADER,
GT_HEADERX TYPE STANDARD TABLE OF BAPIMEPOHEADERX,
GW_HEADERX TYPE BAPIMEPOHEADERX,
GT_ITEM TYPE STANDARD TABLE OF BAPIMEPOITEM,
GW_ITEM TYPE BAPIMEPOITEM,
GT_ITEMX TYPE STANDARD TABLE OF BAPIMEPOITEMX,
GW_ITEMX TYPE BAPIMEPOITEMX,
GT_RETURN TYPE STANDARD TABLE OF BAPIRET2,
GW_RETURN TYPE BAPIRET2,
GW_LANGU TYPE SY-LANGU,
A TYPE BAPIRET2,
V_PONUMBER TYPE BAPIMEPOHEADER-PO_NUMBER. " Internal table and work area declaration for PO header and PO item
TYPES:BEGIN OF PO_STR,
COMPANY TYPE BAPIMEPOHEADER-COMP_CODE,
DOCTYPE TYPE BAPIMEPOHEADER-DOC_TYPE,
CDATE TYPE BAPIMEPOHEADER-CREAT_DATE,
VENDOR TYPE BAPIMEPOHEADER-VENDOR,
PUR_ORG TYPE BAPIMEPOHEADER-PURCH_ORG,
PUR_GRP TYPE BAPIMEPOHEADER-PUR_GROUP,
ITEM_NUM TYPE BAPIMEPOITEM-PO_ITEM,
MATERIAL TYPE BAPIMEPOITEM-MATERIAL,
PLANT TYPE BAPIMEPOITEM-PLANT,
QUANTITY(13) TYPE C,
END OF PO_STR. "Structure declaration
DATA :GT_POSTR TYPE STANDARD TABLE OF PO_STR,
GW_POSTR TYPE PO_STR,
V_PATH TYPE STRING. "Local internal table and work area declaration
CONSTANTS: C_X TYPE C VALUE 'X'.
PARAMETERS FILEPATH TYPE IBIPPARMS-PATH OBLIGATORY DEFAULT 'D:\Guna\desktop\Sample_BAPI_PO_Creation.txt'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILEPATH.
PERFORM GETFILEPATH USING FILEPATH.
START-OF-SELECTION. "Start-of-selection event is triggered
V_PATH = FILEPATH.
PERFORM UPLOAD.
GW_LANGU = SY-LANGU.
LOOP AT GT_POSTR INTO GW_POSTR.
*READ TABLE GT_POSTR INTO GW_POSTR INDEX 1.
GW_HEADER-COMP_CODE = GW_POSTR-COMPANY .
GW_HEADER-DOC_TYPE = GW_POSTR-DOCTYPE.
GW_HEADER-CREAT_DATE = GW_POSTR-CDATE .
GW_HEADER-VENDOR = GW_POSTR-VENDOR.
GW_HEADER-LANGU = GW_LANGU.
GW_HEADER-PURCH_ORG = GW_POSTR-PUR_ORG.
GW_HEADER-PUR_GROUP = GW_POSTR-PUR_GRP.
GW_HEADERX-COMP_CODE = C_X.
GW_HEADERX-DOC_TYPE = C_X.
GW_HEADERX-CREAT_DATE = C_X .
GW_HEADERX-VENDOR = C_X.
GW_HEADERX-LANGU = C_X.
GW_HEADERX-PURCH_ORG = C_X.
GW_HEADERX-PUR_GROUP = C_X.
GW_ITEM-PO_ITEM = GW_POSTR-ITEM_NUM.
GW_ITEM-MATERIAL = GW_POSTR-MATERIAL .
GW_ITEM-PLANT = GW_POSTR-PLANT.
GW_ITEM-QUANTITY = GW_POSTR-QUANTITY.
APPEND GW_ITEM TO GT_ITEM.
GW_ITEMX-PO_ITEM = GW_POSTR-ITEM_NUM.
GW_ITEMX-MATERIAL = C_X .
GW_ITEMX-PLANT = C_X.
GW_ITEMX-QUANTITY = C_X.
APPEND GW_ITEMX TO GT_ITEMX. "Assigning the flat file value to the work area
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
POHEADER = GW_HEADER
POHEADERX = GW_HEADERX
POADDRVENDOR =
TESTRUN =
MEMORY_UNCOMPLETE =
MEMORY_COMPLETE =
POEXPIMPHEADER =
POEXPIMPHEADERX =
VERSIONS =
NO_MESSAGING =
NO_MESSAGE_REQ =
NO_AUTHORITY =
NO_PRICE_FROM_PO =
IMPORTING
EXPPURCHASEORDER = V_PONUMBER
EXPHEADER =
EXPPOEXPIMPHEADER =
TABLES
RETURN = GT_RETURN
POITEM = GT_ITEM
POITEMX = GT_ITEMX
POADDRDELIVERY =
POSCHEDULE =
POSCHEDULEX =
POACCOUNT =
POACCOUNTPROFITSEGMENT =
POACCOUNTX =
POCONDHEADER =
POCONDHEADERX =
POCOND =
POCONDX =
POLIMITS =
POCONTRACTLIMITS =
POSERVICES =
POSRVACCESSVALUES =
POSERVICESTEXT =
EXTENSIONIN =
EXTENSIONOUT =
POEXPIMPITEM =
POEXPIMPITEMX =
POTEXTHEADER =
POTEXTITEM =
ALLVERSIONS =
POPARTNER =
POCOMPONENTS =
POCOMPONENTSX =
POSHIPPING =
POSHIPPINGX =
POSHIPPINGEXP =
. "BAPI PO creation function is called
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = A
.
*COMMIT WORK .
WRITE: V_PONUMBER.
CLEAR : GT_RETURN, GW_ITEM,GW_ITEMX,GT_ITEM,GT_ITEMX,
GW_HEADER,GW_HEADERX, V_PONUMBER. "All the work area is cleared
ENDLOOP.
*WRITE: V_PONUMBER.
&----
*& Form GETFILEPATH
&----
text
----
-->P_FILEPATH text
----
FORM GETFILEPATH USING P_FILEPATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
IMPORTING
FILE_NAME = FILEPATH
.
ENDFORM. " GETFILEPATH
&----
*& Form UPLOAD
&----
text
----
--> p1 text
<-- p2 text
----
FORM UPLOAD .
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = V_PATH
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = GT_POSTR
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " UPLOAD
‎2007 Dec 07 11:18 AM
Vitesh,
BAPI-step by step procedure
http://www.sapgenie.com/abap/bapi/example.htm
list of all BAPI's
http://www.planetsap.com/LIST_ALL_BAPIs.htm
Regards,
Satish
‎2007 Dec 07 11:25 AM