How to use Embedded Steampunk in SAP S/4HANA Cloud, private edition and in on-premise – The new ABAP extensibility guide
Since October 12, the new SAP S/4HANA 2022 release is available for SAP S/4HANA Cloud, private edition and for on-premise customers. With this release SAP provides the first version of the ABAP cloud development model (used in Embedded Steampunk*) in these SAP S/4HANA editions.
This is a big step forward because now we have the modern, upgrade-stable, and cloud-ready ABAP cloud development model available in all major ABAP environments:
- SAP BTP ABAP Environment (Steampunk*), since the launch in 2018
- SAP S/4HANA Cloud, public edition, since the 2208 release for new customers (Embedded Steampunk*)
- SAP S/4HANA Cloud, private edition and on-premise, since the SAP S/4HANA 2022 release (Embedded Steampunk*)
* Steampunk and Embedded Steampunk are the SAP internal project names to deliver the ABAP environment on SAP BTP and in SAP S/4HANA Cloud. These project names are often used in development-related blogs and articles.
This means we have now ONE common ABAP cloud development model available in all these environments. In the public cloud, SAP runs automated software updates and ABAP cloud development is the only supported ABAP variant. In the private cloud and in on-premise, ABAP cloud is a new option to reduce upgrade efforts and to make it easier to reach a clean core for extensions which must run on the SAP S/4HANA stack.
For partners, the common ABAP cloud development model makes it easier to provide one partner solution serving the different SAP S/4HANA editions.
For ABAP developers, ABAP cloud continues to set the standard for a stable and reliable development platform to build and run business applications. ABAP cloud provides a consistent state-of-the-art ABAP development model combining the proven ABAP assets with all the modernizations, SAP HANA and cloud optimizations SAP has provided during the last decade (e.g., ABAP development tools, Core Data Services, RAP and API contracts).
To understand the basic idea of ABAP cloud development and Embedded Steampunk, please read our blog Embedded Steampunk – Some more details for ABAP developers | SAP Blogs.
Here you learn that ABAP Cloud development means:
- Use public SAP APIs (local or remote) released by SAP to access SAP functionality and SAP data.
- Use public SAP extension points released by SAP to extend SAP objects. Modifications to SAP objects are not supported.
- Use ADT (ABAP Development Tools) as your ABAP IDE.
- Use RAP (ABAP RESTful Application Programming Model) to build Fiori apps and services. SAP technologies like Dynpro or Web Dynpro are not released for ABAP cloud development.
Additionally, we created a SAP community landing page which you can use to get more information and to discuss all ABAP cloud or Embedded Steampunk topics: https://community.sap.com/topics/s4hana-cloud-abap-environment
In this blog I focus on the ABAP cloud development model (used in Embedded Steampunk) in the new SAP S/4HANA 2022 release.
I try to answer some typical questions we received from private cloud and on-premise customers.
What is delivered with the SAP S/4HANA 2022 release? What is “Embedded Steampunk” technically?
With the SAP S/4HANA 2022 release, customers can directly use the following new capabilities in their system (Details: Documentation for developer extensibility):
- The technical enablement of ABAP cloud for private cloud and on-premise. This includes the strict ABAP cloud syntax and runtime checks which enforce the ABAP cloud rules. The ABAP development tools offer the feature for private cloud and on-premise customers to switch the language version to ABAP cloud on custom ABAP object level or to stay with ABAP classic.
- A first comprehensive set of the most important local public ABAP Platform and SAP S/4HANA APIs and extension points. Those APIs are reused from the SAP S/4HANA Cloud, public edition – if they are usable in a private cloud or on-premise environment. SAP plans to extend the public SAP API and extension points scope continuously.
How can I introduce ABAP cloud development in my private cloud or on-premise system?
Let us start with the public edition of SAP S/4HANA Cloud to understand the new extensibility offering in the private cloud and on-premise. In SAP S/4HANA Cloud, public edition, SAP provides a pure cloud extensibility model which allows automated SAP software updates. This cloud extensibility model consists of key-user extensibility, Embedded Steampunk for extensions running on the S/4HANA Cloud stack, and side-by-side extensions on SAP BTP.
With the SAP S/4HANA 2022 release and the first version of Embedded Steampunk the same cloud extensibility model can now be reused in the SAP S/4HANA Cloud, private edition and on-premise.
But it cannot be expected that private cloud or on-premise customers switch completely to this pure cloud extensibility model overnight.
The main reasons are:
- existing classic custom ABAP code
- missing SAP APIs for the broad private cloud / on-premise scope. The public SAP APIs and extension points focus on the public edition scope.
Therefore, a feasible compromise is needed which can be executed in a given private cloud or on-premise environment. The fundamental principle is that ABAP cloud and ABAP classic code can coexist since the ABAP language version is defined on ABAP object level. This offers a gradual transition from the classic to the cloud extensibility model.
SAP recommends the following 3-tier extensibility model to transform step by step to a clean core in SAP S/4HANA Cloud, private edition and in on-premise.
I am sure now I have your attention if you want to reach a clean core.
Therefore, I stop here and recommend you to directly switch to our brand new ABAP extensibility guide which explains in detail how this 3-tier extensibility model works.
This guide has been compiled by SAP internally with many SAP experts and includes partner and customer feedback. But the ABAP cloud topic and especially the 3-tier extensibility model are very new topics. We plan to continuously update the guide to add new best practices which we collect in the upcoming customer projects. Please use our community to share your thoughts or questions about the guide.
Great blog, thanks for sharing!
Very timely, thank you Boris.
Thanks for the great BLOG.
As far as I understand the Embedded steampunk is now given to the S/4HANA on-premise and private cloud customers, so they can use is, but the scope is limited comparing to the S/4HANA public cloud?
Thanks Boris for providing the bigger picture
Thanks Boris for the Guide and explaining the extensibility in a Holistic way.
Thanks for this great blog.
Hi Boris Gebhardt ,
after reading and thinking what that means for all the activity I have on my bucket list the idea came up, what if there was an repository, which includes the mentioned wrapper classes for the missing API's.
That could be a project, where all can participate and submit the done wrappers, so there is no need to do it twice...
also I think a delivered wrapper class could help a lot customers and partners to really prepare the systems the way it is mentioned.
As there is already an SAP-GIt with a lots of examples and adaptable stuff available, maybe this could be a great addition.
Also a searchable list which API's are available and a linkin to the wrapper class (for the older releases) could be a huge help to get this done.
Thanks a lot for investing time to evaluate how we can ease the transition to the described 3-tier extensibility model!
Your idea to provide a “reuse-wrapper-repository” is appealing – especially for more complex wrappers which e.g., combine several services.
For easy wrappers (e.g., a 1:1 wrapper for a function module) we think about ADT tool support to directly generate the wrapper code – comparable to the proxy generation for RFC modules or OData services Generating Proxies for Remote Function Call (RFC) | SAP Help Portal.
thanks for this great blog. 1 question which just popped-up at a customer:
You're writing that Embedded Steampunk is available in SAP S/4HANA Cloud, private edition since Oct 12. What's about S/4HANA Cloud with a different cloud contract as STE or Cloud Extended? Is there a technical restriction for which Embedded Steampunk cannot be used under such a cloud contract or is this caused by circumstance that the 2022 release for STE/EX happens in March 2023 with FPS01 (means would be available as well even with SP00).
The ABAP cloud development model (Embedded Steampunk) can be used in these SAP S/4HANA variants as well. (Starting with the SAP S/4HANA 2022 release).
Thanks Boris.. Great blog!
Thank you for sharing.
Hello Boris Gebhardt
thanks for the great summary, it brings light on state of things.
We are in the middle of our journey towards S/4 HANA 2022 release, on-premise edition.
I was actually following embedded steampunk story, since "all-in blog" and was waiting to be able to look what's in for us. That moment finally came in and we are trying to change our approach to custom coding and towards usage of SAP standard code, to gradually switch to ABAP cloud approach and keep the core clean.
One question though, as said in your blog and I believe it was mentioned previously as well, volume of released APIs should increase over time. But is there any consolidated roadmap that would list the plans in this area?
I have created earlier today a repository tree of released objects in our new system and I could see that for example for HCM component [that made it to 2022 S/4 release] there's practically 0 APIs.
We would like to understand what are SAP plans for released APIs in general.
Hello Ondrej Smutny,
thank you for your interest in Embedded Steampunk. Concerning your question about SAP's plans for released APIs:
In order to plan and prioritize the release of further APIs, SAP is currently collecting API requests from customers and partners via customer influence campaign https://influence.sap.com/sap/ino/#/campaign/2759
Please use this channel to request additional released APIs in case you are missing some APIs and also check the status of API requests.
In general you can expect development and release of new APIs to first focus on areas of new innovations. While in areas with mature functionality like HCM, the usage of the wrapper (Tier 2) concept as described in the ABAP Extensibility Guide will be predominant. SAP plans to provide additional guidance on the usage of these Tier 2 wrappers in the near future.
In the developing with Embedded Steampunk (on-premise edition), where do you setup the ABAP Service Instance URL which will be used when creating an ABAP Cloud Project in Eclipse ADT? Is this different from ABAP Environment instance created in BTP Cockpit?
What are the prerequisites for setting this up as well.
in on-premise you just create a standard ABAP project to connect to your ABAP system.
ABAP Cloud projects are only used in case you want to develop on SAP BTP.
For an S/4HANA Cloud, private edition or on-premise system, what is the approved cloud development technique for creating a custom outbound interface that creates a flat file and can be scheduled as a background job?
Since OPEN DATASET is not available, how can developer extensibility be used to create a custom process that gathers data and generates a flat file on the server?
In order to schedule that process via the Application Jobs Fiori App, how do we create a new custom step (or "job category entry") that can be added to a job template via the Maintain Application Job Templates Fiori App?
this basically depends on the exact use case. If you can create the file on the fly (e.g. an Excel file using the XCO Library) you just use the binary files and hand them over to the respective service (using a communication scenario) with the http client.
As storing the files on the app server is not a good idea in cloud environments, If you need to persist the file, you could use the HANA database (which we would not recommend) or an additional persistency service like the object store in BTP.
Adding this code to an application job, please refer to the application job (template) documentation here.
Hope this helps.