We know BAPI is a remote enable function module but when ever we are creating a BAPI, we need to follow some rules.
Rules and standards (as per SAP) for creating a BAPI:
- Every BAPI must start with BAPI or ZBAPI(Custom).
- All importing and exporting parameters must be of type structures (not direct type entries).
- All importing and exporting parameter names must start with BAPI or ZBAPI.
- All importing and exporting parameters must pass by value, as pass by reference is not supported for remote communications.
- BAPI must have return parameter (to return messages like success, warning, error etc.) of type BAPIRET2 or RETURN.
Follow the below steps to create a custom BAPI.
- Create structures in SE11 for importing and exporting parameters.
- Create a remote enabled function module with importing and exporting parameters (must be of type structure) in SE37.
- Create a business object in SWO1.
- Insert RFC function module into business object.
Requirement: Develop a custom BAPI to get material details.
Step 1: Create structures for required importing and exporting parameters in SE11.
Go to SE11, create a structure ZBAPI_MATNR as below for importing parameter.
Similarly create another structure ZBAPI_MARA as below for exporting parameter.
Step 2: Go to SE37, create a remote enabled Function module to get material details for material input.
Go to SE37, provide name as ZBAPI_GET_MATERIALS and create
A popup will come provide function group and short text, enter.
Go to attributes tab, select Ã¢â‚¬ËœRemote-Enabled moduleÃ¢â‚¬â„¢ radio button.
Go to import tab, add parameter as below.
Go to export tab, add parameters as below.
Go to Source code and add below code.
SELECT SINGLE MATNR MTART MEINS MATKL MEINS FROM MARA INTO MATERIAL_DETAILS WHERE MATNR = MATERIAL. IF SY-SUBRC NE 0. "add message to return parameter RETURN-TYPE = 'E'. RETURN-MESSAGE = 'Material not found'. ENDIF.
Save and activate the function module, test.
Step 3: Go SWO1, create a business object.
Go to T-code SWO1, provide name as ZBUSMAT01 and create.
A popup will come, provide details as below.
Do not save it in a local object, we cannot make BAPI methods with non-transportable objects.
Save it in a package and create a transport request.
Step 4: Insert RFC function module into business object.
To insert RFC into business object, click on Utilities -> API Methods -> Add Method.
A popup will come, provide RFC function module name and enter.
A popup will come, click on next icon.
Again click on next icon.
A confirmation popup will come, click yes.
We have inserted a RFC function module into methods of business object, now we need to do two things.
- Change 'change release status' to 'implemented'
- Again 'change release status' to 'released'
A popup will come just press enter.
Once object is released, you will find released icon as below.
BAPI is created, now it can be usable by SAP and NON-SAP systems.