Embedded Steampunk – Some more details for ABAP developers
The SAP S/4HANA Cloud ABAP Environment (Embedded Steampunk) is available for new customers.
Please see Sven Denecken’s video and Arpan Shah presenting Embedded Steampunk in the last SAP S/4HANA Cloud update: SAP S/4HANA Cloud 2208: Run Business Efficiently | SAP News Center
Many of you have read Harald Kuck’s blog post https://blogs.sap.com/2021/09/30/steampunk-is-going-all-in/ which explains nicely the benefits and concepts behind Embedded Steampunk.
But we still get a lot of questions from ABAP experts asking what exactly Embedded Steampunk is about.
This blog provides some more details about Embedded Steampunk for ABAP developers. But stay tuned – we are in the final phase of releasing a new SAP community landing page for Embedded Steampunk. Additionally, a comprehensive SAP S/4HANA ABAP extensibility guide will be published soon. All these resources will answer most of your Embedded Steampunk questions.
From classic ABAP extensions to ABAP Cloud development
You all know the Classic ABAP extensibility model which has been used during the last decades to extend SAP ERP systems. It allows ABAP developers to use and even to modify all SAP objects. This is powerful and flexible. But the missing clear interface between SAP code and the extension adds a lot of test and adaptation effort during SAP upgrades – this is a no-go for the automated SAP software updates in the public Cloud.
With the launch of Steampunk (SAP BTP ABAP Environment) SAP introduced a new ABAP Cloud development model which leads to modern, cloud-ready, and upgrade-stable ABAP apps and extensions.
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
The ABAP Cloud development rules are enforced via:
- ABAP compiler and runtime checks: We introduced a new ABAP language version = “ABAP for Cloud Development” for ABAP Cloud. This ABAP language version defines the set of supported ABAP statements (e.g, no CALL SCREEN) and launches syntax- or runtime errors if for example, a non-public SAP API is used.
- ABAP authorization checks: We redefined the authorizations in the ABAP Cloud developer role. For example, no authorization to change SAP objects.
The ABAP Cloud development model is mandatory for:
- ABAP apps and extensions built on SAP BTP (Steampunk)
- ABAP extensions built on SAP S/4HANA public Cloud edition (Embedded Steampunk)
This explains the term Embedded Steampunk. The ABAP Cloud development model of Steampunk is now available “embedded” in SAP S/4HANA Cloud.
SAP plans to support the ABAP Cloud development model (Embedded Steampunk) in the SAP S/4HANA private Cloud and on-premise edition as well. Private Cloud and on-premise customers can decide on ABAP object level whether they want to use ABAP Cloud (Embedded Steampunk) or stay with Classic ABAP extensibility.
ABAP Cloud will provide ONE common and future-proof ABAP development model for side-by-side extension on SAP BTP and for extensions running directly on the SAP S/4HANA stack:
- Steampunk: Build ABAP Cloud apps and extensions on SAP BTP (side-by-side to SAP S/4HANA)
- Embedded Steampunk: Build ABAP Cloud extensions on SAP S/4HANA (all editions)
Added value of ABAP Cloud development (Embedded Steampunk):
- Public Cloud: ABAP Cloud (Embedded Steampunk) is the only option* to develop extensions that should run on the SAP S/4HANA public Cloud edition stack – e.g. because the extension needs proximity or coupling to SAP data, SAP transactions, or SAP apps.
For all other loosely coupled apps and extensions SAP BTP is the default choice. Here, developers can choose their preferred programming environment (Java, Node.js, ABAP…). ABAP Cloud added the option to build ABAP based apps or extensions on SAP BTP (Steampunk)
- SAP S/4HANA private Cloud and on-premise edition: ABAP Cloud will be a new option to build upgrade-stable extensions on SAP S/4HANA (Embedded Steampunk) that are ready for the next cloud transformation steps. This complements the SAP BTP extensibility offering and helps to reach a Clean Core.
*Embedded Steampunk is often combined with Key user extensibility – for details and a comprehensive example please read this nice blog post.
Examples and a glimpse into the system
ABAP extension on Steampunk or on SAP S/4HANA public Cloud edition (Embedded Steampunk)
In the public cloud, the ABAP Cloud development model is mandatory for ABAP extensions. The ABAP language version is automatically set to “ABAP for Cloud development” for all custom ABAP objects and cannot be changed. (Here for the custom ABAP class ZCL_BGTEST)
ABAP Cloud development (Embedded Steampunk) on SAP S/4HANA private Cloud or on-premise edition (planned innovation)
In SAP S/4HANA private Cloud and on-premise, ABAP Cloud development will be a recommended option – especially for new ABAP development projects. The ABAP language version of custom ABAP objects (e.g., an ABAP class) can be changed one by one from Classic ABAP (= Standard ABAP) to ABAP Cloud (= ABAP for Cloud Development)
Example for a local public SAP API released by SAP for ABAP Cloud development
The SAP CDS (Core Data Services) view i_product allows to read data (e.g. via a SELECT) from the SAP table MARA (material master). SAP released this SAP CDS view as a local public SAP API for ABAP Cloud development (ABAP language version “ABAP for Cloud development”). The direct access to SAP tables is not allowed in the ABAP Cloud development model.
ABAP Cloud development (Embedded Steampunk) – Get syntax errors when trying to use non-public SAP APIs
The ABAP class ZCL_BGTEST in the screenshot underneath uses the ABAP Cloud development model (ABAP language version “ABAP for Cloud development”). The class cannot be compiled because of two ABAP statements containing syntax-errors:
- Line 23: The SAP function module “POPUP_TO_CONFIRM” is used in the classic Dynpro/SAP GUI world and is no public SAP API in the ABAP Cloud development model.
- Line 24: Direct access to SAP table MARA is not allowed (use public CDS view i_product – see line 27).