SAP Build Process Automation – Consume ODATA APIs as Actions from S/4 HANA On-Prem via RAP BTP ABAP or BTP CAP
Hi SAP Experts,
There are multiple ways to consume actions not available in the store in the SAP Build Process Automation .
S/4 HANA On-Premise or ECC based Custom Odata services can be accessed by the below two ways with the Core Clean principle using the Side-by-Side Extension scenarios
I have explored the different possibilities to expose the S/4 HANA On-Premise Custom OData services to the SAP Build platform since there are challenges exposing the Odata directly from S/4 HANA On-Premise to SAP build
How to create actions on the SAP build ?
SAP BTP ABAP RAP ( RESTful ABAP Programming Model )using the side-by-side extension scenario :
- Create a Custom Entity and call either the backend RFC function modules or API classes from SAP S/4 HANA to perform the functionality
- Create the Service binding as shown below .
- Copy the URL and get the metadata for the same.
- Create a Odata Open API using the open source https://convert.odata-openapi.net/ by pasting the Metadata
- There are also other open API converters in github for the On-Premise system however they are more specific to the SICF nodes and does not work for the BTP ABAP based Odata services https://blogs.sap.com/2019/07/09/how-to-create-an-openapi-rest-service-from-an-odata-v4-rest-service-with-sap-netweaver-abap/
- Copy the same and save in a file with Extension .json
- Once you click on the create button the below screen appears to select the required actions :
How to Test the Actions :
- First Create a destination for the Odata service using the BTP Destinations and add the parameters as shown below
- sap.applicationdevelopment.actions.enabled : true
- sap.processautomation.enabled : true
- Add the destination in the BTP Build
- Now for the POST operation generate the CSRF token as shown below other wise you get an error
- Look for the response 201 as soon as it gets created .
- Release the action and publish it so that it can be used the build process automation .
- Now go to your process automation and this action can be used as a Action tasks for all the CRUD operations as shown below
- All the input Parameters and results will be automatically shown as seen below :
- Furthermore these can be mapped with the workflow context coming from the trigger either with the trigger form or the from API trigger
- After the execution of the SAP Process automation this is how the POST or GET call looks in the monitor applications
Using CAP (Cloud Application Programming Model) based Odata API using the side-by-side extension scenario
- For the CAP Node.js based applications expose the API service via destinations as shown below
- Add the destination in the build as shown below
- For the Open API conversion of the metadata here we can use the below command and it will create .json file as shown below
cds compile srv --service all -o docs --to openapi
Please let me know in case of any feedback
With reference to your comment "there are challenges exposing the Odata directly from S/4 HANA On-Premise to SAP build", it would be helpful for context if you could elaborate on what these challenges were and how they led you to the RAP solution.
Mustafa Bensan There is a CORS issue to connect to On prem Odata services currently
I like the use of actions in your solution to allow modular reuse of CRUD operations. What do you think about the use of the Call Web Service with Destination activity as described in the following tutorial?
Learn How to Create and Configure BTP Destinations in SAP Build Process Automation
yes this could be one alternative however this is not a clean core approach my focus was more on side-side extensions so that this can work irrespective of the backend systems for custom Odata services
Can you clarify why the approach in the tutorial is not a "clean core" approach? Doesn't the tutorial approach keep the core clean by creating a solution on SAP BTP and integrating it with the exposed on-premise API?
The core approach I Follower here is not to call Odata directly from BTP ABAP Using instead use released API classes or CDS views for CRUD operations
Understood. My point was that even when using the released API classes or CDS views for CRUD operations, they are still exposed as OData services which could be consumed via the Call Web Service with Destination activity of SAP Build Process Automation instead of Actions, right?
Yes your right we could follow webserives approach from BTP ABAp as well instead of RAP using service consumption model .
Okay, thanks for the clarification.
A very nice blog!
The more blogs of this type (SAP Build integration with On Premise - ECC or S/4) are created, the more people like me who are learning SAP Build will be grateful.
I imagine I can use this same idea by creating actions in the SAP Build App (instead of SAP Build Process Automation), right?
Hi Leandro ,
thanks for your feedback
Yes we can use the same actions in SAP Build apps as well .