top of page

What is BAPI? Its Role and Importance in SAP

ree

When working in SAP development, there is a term you will often come across: BAPI. Especially in scenarios like data exchange between systems, creating customers or sales orders, BAPIs play a key role. But what exactly is a BAPI, why does it exist, and what benefits does it provide?





Definition of BAPI


BAPI (Business Application Programming Interface) is an interface provided by SAP to expose its functions in a standard and secure way.

BAPIs are associated with Business Objects in SAP. For example:

  • Customer business object → has BAPIs to create, update, or delete customers.

  • Sales Order business object → has BAPIs to create or retrieve sales orders.

In short, a BAPI allows us to call functions that belong to a particular business object in SAP.


Why Do We Use BAPI?

ree

In a large and complex system like SAP, coding every function from scratch would be both time-consuming and risky. That’s where BAPIs come in:


  • They provide a standard and secure way.

    For example, when creating a customer, all SAP validations (address, country code, tax number) are automatically applied.

  • They simplify integration.

    If you need to exchange data between SAP and another application, BAPIs are the most reliable option.

  • They are easier to maintain.

    Since they are provided and supported by SAP, they last longer and require less maintenance compared to custom code.


Key Features of BAPIs


  1. They can be called via RFC. This makes them usable by external, non-SAP systems as well.

  2. They ensure data integrity. SAP’s built-in validation rules are always executed.

  3. They are backward compatible. SAP guarantees backward compatibility for released BAPIs across versions.

  4. They return messages through a return parameter. Success, warning, or error messages are always available in the RETURN parameter.



ree



Examples of BAPIs


  • BAPI_CUSTOMER_CREATEFROMDATA1 → Creates a new customer.

  • BAPI_SALESORDER_CREATEFROMDAT2 → Creates a sales order.

  • BAPI_GOODSMVT_CREATE → Posts a goods movement.

  • BAPI_EMPLOYEE_GETDATA → Retrieves employee data.

Each business object in SAP comes with its own BAPIs. You can explore them using BAPI Explorer or transaction SE37.






Things to Keep in Mind When Using BAPIs


  • A commit is required. Most BAPIs don’t save data to the database unless you explicitly call BAPI_TRANSACTION_COMMIT.

  • Always check the return table. Errors and warnings are provided in the RETURN parameter, so never skip this step.

  • Choose the right BAPI. Sometimes multiple BAPIs exist for similar tasks. Selecting the one that matches your business need is essential.


How to Test a BAPI in SE37


A Simple Example of Using a BAPI


ree

Go to Se37 Tcode.

Write BAPI name and

Click execute button.





ree



Click on the highlighted button to select the fields you need to fill in.









ree


Click on the highlighted button to display the fields to be filled in vertically. After entering all the information, click on the check mark.










ree






After returning to the main screen, click the save button and give a name to your test data.








Go back to transaction SE37 and follow the path below (this path may vary depending on your SAP version, but make sure to find and click on Test Sequence). Then execute the relevant BAPI and the COMMIT program one after the other.


ree












ree




















ree






ree










Conclusion


A Sample Example of Using a BAPI



Below is a small code snippet for creating a customer using a BAPI.


DATA:
  ls_personaldata   LIKE bapikna101_1,
  ls_personalopt    LIKE bapikna105,
  ls_copyref        LIKE bapikna102,
  ls_return         LIKE bapireturn1,
  sortl             LIKE kna1-sortl,
  lv_custnumber(10) TYPE c.


ls_personaldata-firstname       = 'HILMI'.
ls_personaldata-lastname        = 'GUNAY'.
ls_personaldata-city            = 'ANKARA'.
ls_personaldata-postl_cod1      = '06508'.
ls_personaldata-street          = 'Çankaya'.
ls_personaldata-country         = 'TR'.
ls_personaldata-region          = '06'.
ls_personaldata-currency        = 'TRY'.
ls_personaldata-langu_p         = 'TR'.

ls_personalopt-transpzone       = '06001'.
ls_personalopt-control_account  = 'Z003'.
ls_personalopt-pmnttrms         = 'MI'.
ls_personalopt-ship_cond        = 'MI'.
ls_personalopt-delyg_plnt       = 'MI'.
ls_personalopt-part_dlv         = 'MI'.
ls_personalopt-c_ctr_area       = 'MI'.
ls_personalopt-taxjurcode       = 'MI'.

ls_copyref-salesorg             = '1000'.
ls_copyref-distr_chan           = '10'.
ls_copyref-division             = '01'.
ls_copyref-ref_custmr           = '1000000027'.



CALL FUNCTION 'BAPI_CUSTOMER_CREATEFROMDATA1'
  EXPORTING
    pi_personaldata     = ls_personaldata
    pi_opt_personaldata = ls_personalopt
    pi_copyreference    = ls_copyref
  IMPORTING
    customerno          = lv_custnumber "New customer's number
    return              = ls_return.

IF ls_return-type = 'E'.
"Write error message.
  WRITE: ls_return-message.
ELSE.
  
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.
  WRITE: / 'Customer Successfully Created'.
ENDIF.


Conclusion


BAPIs are one of the most important tools for developers to use SAP functionality in a reliable, standard, and supported way.

  • They make integrations easier,

  • They ensure data consistency,

  • They save development time.

For anyone new to SAP development, understanding what a BAPI is is one of the key first steps to mastering the SAP ecosystem.




,









 
 
 
bottom of page