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 creation

former_member239066
Participant
0 Likes
741

hi experts,

can anyone please give me an example of step by step creation of BAPI?

regards,

vitish

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
654

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

4 REPLIES 4
Read only

Former Member
0 Likes
654

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 cont’d…

  • 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 BAPI’s for many other applications.

if its useful plz reward me

thanx

Message was edited by:

Trupti Zanwar

Read only

Former Member
0 Likes
655

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

Read only

Former Member
0 Likes
654

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

Read only

former_member188829
Active Contributor
0 Likes
654