With SAP S/4HANA migration and advent of RAP, BAPI is obsolete and a new generation of APIs, known as RAP Behavior Definition (BDEF) has emerged. In this blog post, we’ll explore how BDEFs offer a more streamlined and clean core approach in SAP S/4HANA.
Table of Contents
As an ABAP developer you are familiar with SAP BAPI, lets revisit the basic definition of BAPI and its usage.
What is a BAPI?
SAP BAPI (Business Application Programming Interface) is a standardized programming interface provided by SAP. It allows external applications to interact with SAP systems in a controlled and standardized manner. BAPIs are methods of SAP Business Objects, enabling access to processes and data in the SAP system.
BAPIs operate on SAP Business Objects (e.g., Customer, Material, Sales Order). Each business object has methods (BAPIs) to perform specific operations. BAPIs are implemented as remote function calls (RFCs), which means they can be called from external systems or other SAP systems.
Following are common examples of BAPIs and there are many more in SAP ECC.
BAPI_USER_CREATE1
: To create a new user in the SAP system.BAPI_MATERIAL_GETLIST
: To retrieve a list of materials.BAPI_SALESORDER_CREATEFROMDAT2
: To create a sales order.
Common Use Cases of BAPI
- Data Integration: Synchronizing data between SAP and third-party applications.
- Custom Application Development: Creating custom applications that interact with SAP systems.
- System Interfacing: Connecting SAP systems with external systems like CRM, SCM, or other ERPs.
- Data Migration: Transferring data from legacy systems to SAP.
What is ABAP RAP?
ABAP RAP, which stands for RESTful Application Programming Model, is a modern development approach in SAP S/4HANA that represents a significant evolution to create business applications.
ABAP RAP provides a metadata-driven development approach and supports both on-premise and cloud scenarios. We will not go into details of ABAP RAP in this blog post, thats for another day.
In the ABAP RAP (RESTful Application Programming) model, the Behavior Definition (BDEF) is a critical component that defines the transactional behavior of a RAP Business Object (BO). It governs how business objects can be created, modified, deleted, and accessed within the SAP S/4HANA.
BAPI is obsolete, use BDEF
Both RAP Behavior Definition in short BDEF and BAPI operate on business objects; BDEFs are based on ABAP RAP Business Objects and BAPIs are on classical Business Objects(SWO1). Lets look at an example where BDEFs can be used instead of BAPI for Sales Order business object.
Note:
As the RAP BO are still growing in SAP S/4HANA system, there won't be BDEF for every business object in SAP ECC. Use clear core object search tool to find the availability of BDEF for the BAPI you planned to implement.
Now lets learn, how we can use RAP BDEF instead of BAPI to create sales order.
As first step, lets find out if there is a successor Behavior Definition for the BAPI using Clean Core Object Search tool. After our search we know I_SALESORDERTP
is the successor BDEF for the BAPI – BAPI_SALESORDER_CREATEFROMDAT2
.
Next, lets use ABAP EML to consume the BDEF in our custom program. Following the code snippet to create sales order using BDEF – I_SALESORDERTP
.
MODIFY ENTITIES OF i_salesordertp
ENTITY salesorder
CREATE
FIELDS ( salesordertype
salesorganization
distributionchannel
organizationdivision
soldtoparty
purchaseorderbycustomer )
WITH VALUE #( ( %cid = 'H001'
%data = VALUE #( salesordertype = 'TA'
salesorganization = '1010'
distributionchannel = '10'
organizationdivision = '00'
soldtoparty = '0010100001
purchaseorderbycustomer = '0010100006' ) ) )
CREATE BY \_item
FIELDS ( product
requestedquantity )
WITH VALUE #( ( %cid_ref = 'H001'
salesorder = space
%target = VALUE #( ( %cid = 'I001'
product = co_test_data-product_valid
requestedquantity = '10' ) ) )
( %cid_ref = 'H001'
salesorder = space
%target = VALUE #( ( %cid = 'I002'
product = co_test_data-product_valid
requestedquantity = '20' ) ) )
( %cid_ref = 'H001'
salesorder = space
%target = VALUE #( ( %cid = 'I003'
product = co_test_data-product_valid
requestedquantity = '30' ) ) ) )
ENTITY salesorderitem
MAPPED DATA(ls_mapped)
FAILED DATA(ls_failed) ##NEEDED
REPORTED DATA(ls_reported).
" Save sales order
COMMIT ENTITIES BEGIN
RESPONSE OF i_salesordertp
FAILED DATA(ls_save_failed)
REPORTED DATA(ls_save_reported).
IF sy-subrc <> 0.
"Handle error scenario
ENDIF.
COMMIT ENTITIES END.
Conclusion
ABAP RAP essentially represents SAP’s strategic approach to modernizing ABAP development, moving away from traditional ABAP programming towards a more standardized, cloud-native model.
It’s particularly crucial for organizations migrating to S/4HANA, as it provides a forward-looking framework for building sophisticated business applications. This shift highlights the evolution of SAP’s development methodology and reinforces why BAPI is obsolete, use BDEF for modern development.