Skip to Content
Product Information
Author's profile photo Boris Gebhardt

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.

Classic%20ABAP%20extensibility

Classic ABAP extensibility

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)

In%20public%20cloud%20ABAP%20Cloud%20is%20mandatory

In the public cloud ABAP Cloud development is mandatory

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)

In%20private%20cloud%20and%20on-premise%20ABAP%20Cloud%20is%20a%20recommended%20option

In private cloud and on-premise ABAP Cloud development will be a new recommended option

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.

The%20released%20public%20SAP%20CDS%20view%20i_product

The released public SAP CDS view i_product

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).

ABAP%20Cloud%20development

ABAP Cloud development – Syntax errors for non-public API usage

Assigned Tags

      30 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Lars Hvam
      Lars Hvam

      As a developer without access to a system with Embedded Steampunk, how is it possible to identify the objects that are released?

      I would like to use released objects on lower releases, if they exist, so the code I'm writing today is compatible with Embedded Steampunk.

      Author's profile photo Wolfgang Janzen
      Wolfgang Janzen

      For "SAP BTP ABAP Environment" (aka "Steampunk") there's the option to use a trial system.

      Starting point: https://developers.sap.com/trials-downloads.html resp. https://account.hanatrial.ondemand.com/trial/#/home/trial

      There's even a tutorial provided.

      Author's profile photo Lars Hvam
      Lars Hvam

      For Steampunk, most released objects are listed at https://abapedia.org/steampunk-2208-api/

      But I don't know of a way to list released objects in Embedded Steampunk(SAP S/4HANA Cloud) without access to a system. I find it important that already today, all developers in lower releases starts aligning towards the released objects.

      Will there be a free public trial for Embedded Steampunk in the last SAP S/4HANA Cloud ?

      Author's profile photo Alexander Rother
      Alexander Rother

      Hi Lars,

      the public local APIs for Embedded Steampunk can be inspected on the SAP API Business Hub > S/4HANA Cloud > Developer Extensibility (https://api.sap.com/products/SAPS4HANACloud/developerextensibility/bointerface). There you currently find RAP Business Object Interfaces and BAdIs. Likewise, released CDS views can be found under SAP API Business Hub > S/4HANA Cloud > CDS Views (https://api.sap.com/products/SAPS4HANACloud/cdsviews/cdsviews)

      These sections will be extended continuously with newly released objects.

      Please also have a look at the product documentation on SAP Help to get more information about CDS Views and Developer Extensibility in SAP S/4HANA Cloud.

      Best regards,
      Alexander

      Author's profile photo Lars Hvam
      Lars Hvam

      Classic Steampunk have released objects of types(and more?):

      • Classes
      • Interfaces
      • Table Types
      • Data Elements
      • Domains
      • Structures (TABL)
      • Type Pool(ABAP)
      • and a few XSLT

      does none of these object types have released objects in Embedded Steampunk on SAP S/4HANA Cloud ? I would expect the released objects on S/4 to be a superset of classic steampunk?

      Author's profile photo Alexander Rother
      Alexander Rother

      Hi Lars,

      very good point, of course the objects that are released on Steampunk are also available in Embedded Steampunk in SAP S/4HANA Cloud. You can find more information in the corresponding section of the SAP Help documentation.

      The focus of the released objects listed on the SAP API Business Hub is on business object-related object types.

      Best regards,
      Alexander

      Author's profile photo Thomas Fiedler
      Thomas Fiedler

      As an interim solution you can check the content of note: https://launchpad.support.sap.com/#/notes/3088062

      This includes a table of successor informations ("old API" -> released API),
      e.g. MARA -> I_PRODUCT

      Our goal is to provide this information in a human and machine readable format in near future.

      Regards,

      Thomas.

      Author's profile photo Lars Hvam
      Lars Hvam

      Thanks, I've noted that 150+ BAPIs are mentioned in the "old API" column, does SAP consider BAPIs to be deprecated/obsolete?

       

      https://help.sap.com/docs/ABAP_PLATFORM_NEW/166400f6be7b46e8adc6b90fd20f3516/4dd3d01ec1b964dfe10000000a42189e.html mentions

      Once a BAPI has been developed and released by SAP, its interface definition and parameters remain stable in the long term. This ensures that an application program is not affected by changes in the underlying SAP software and data.

      If BAPIs need to be enhanced, for example by adding optional parameters, SAP can do this without affecting the stability of existing applications. At the same time new applications can benefit from the enhanced functions.

      Author's profile photo Thomas Fiedler
      Thomas Fiedler

      BAPIs will most likely not be released for ABAP for Cloud development. Read access to business data will be available via CDS views. Updates via RAP facades.

       

      Author's profile photo Radoslaw Chudziak
      Radoslaw Chudziak

      "Updates via RAP facades" - is this mentioned somewhere in documentations or any of the learning courses?

      I understand that USING BAPis won't be possible to do it in the cloud version, but in the on premise we may still need to be required to use a BAPI as I don't think all available BAPIs have been replaced by RAP facades.

      When working with RAP I noticed it is not the best tool to work with BAPIs, especially where you have a Parent->child relationship and have to pass them to the BAPI at the same time e.g. BAPI_PO_CREAT1. There is still no example how to do it. BOPF FIORI apps would be using a draft table and then converting it to an active instance on 'SAVE'  (although this is not released to customers - so it is a hack!).

      Still not sure how this would be done in RAP. An example would be much appreciated.

      And maybe a quick blog post comparing the on premise to cloud world e.g.

      Data reads

      Before: SELECT FROM DB TABLE

      Cloud: CDS Views

      Data updates

      Before: BAPIs,

      Cloud: RAP facades

      Enhancements

      Before: User exits, Customer Exits, BTEs, BADIs

      Cloud: BADIs implemented in Eclipse ADT or via a "Custom Logic" FIORI app

      Author's profile photo Wolfgang Röckelein
      Wolfgang Röckelein

      Hi Thomas,

      weil, this note is better than nothing, but for anything non-obvious it is not helpful.

      eg kbed is also used in maintenance orders and not only in production orders which is completly ignored in the table from the note.

      eg currently I am searching for a method to parse an ISO timestamp string into a timestamp (like cl_xlf_date_time->parse offers) - does anybody here has a suggestion for this (besides manual implementation) in steampunk?

      Otherwise we are looking forward to S/4HANA Cloud ABAP Environment!

      Regards,

      Wolfgang

      Author's profile photo Lars Hvam
      Lars Hvam

      I typically search via https://github.com/abapedia/steampunk-2208-api/search?q=iso&type=code

      https://github.com/abapedia/steampunk-2208-api/blob/d9046cfb3a88f05e1c8cedfc9328c677e0db76ea/src/cl_abap_utclong.clas.abap#L36 might work for you

      Author's profile photo Wolfgang Röckelein
      Wolfgang Röckelein

      Thanks, great idea, I wasn't really aware that I could search abapedia.

      yes,

          cl_abap_utclong=>read_iso_format( EXPORTING string = '' IMPORTING value = DATA(val) ).
          DATA(test) = cl_abap_tstmp=>utclong2tstmp( val ).

      should work.

      Author's profile photo Sören Schlegel
      Sören Schlegel

      Hi Lars,

      if the note 2923223 is back, you'll find there a list of public released and also deprecated APIs like classes, Views and BDEFs and so on...

      Regards

      Sören

      Author's profile photo B. Meijs
      B. Meijs

      I created a new ABAP repository Tree in Eclipse ADT for released objects.

       

      ABAP%20Repository%20Tree%20for%20released%20objects

      ABAP Repository Tree for released objects

      Author's profile photo Vijay Chintarlapalli
      Vijay Chintarlapalli

      Boris Gebhardt

      Can we use BADIs,User Exits BTEs in embedded steam punk ?
      Which classical SAP features SAP is trying to bring in Embedded Steam punk ?
      Thanks,
      Vijay
      Author's profile photo Karl Kessler
      Karl Kessler

      Hi Vijay,

      BADIs are fully supported in Embedded Steampunk. BADIs belong to the public extensions points and therefore are upgrade-stable.

      User exits and BTEs belong to classical extension techniques and are not supported for ABAP Cloud development following the Embedded Steampunk rules. They still occur in private Cloud deployments, though, and can be implemented using the classic extension approach.

      Best regards,
      Karl

      Author's profile photo Vijay Chintarlapalli
      Vijay Chintarlapalli

      Thanks Karl Kessler  : This is very helpful , How to handle the background job reports and SE11 tables using embedded steam , Is there any roadmaps planned for this using embedded steampunk ?

      Author's profile photo Thomas Fiedler
      Thomas Fiedler

      There is a list of all released BADIs available as attachment to OSS note: OSS Note mit Successor Excel

      --> badidefinitions_catalog_s4core.zip

      Author's profile photo Vijay Chintarlapalli
      Vijay Chintarlapalli

      Thomas Fiedler  : Really help SAP Note 🙂 I am able get most of the new BADIs and hopefully these will be available in the on-premise version of 2208 as well ?

      Author's profile photo Thomas Fiedler
      Thomas Fiedler

      Yes, this is our goal to provide the same list of released BAdis also for on-premise with the 2022 release.

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Boris and Thomas

      Are there replacements for BTEs? Perhaps in the same way that VOFM has a replacement in ES_SD_SLS_EXTEND? (see this blog post by Vijay Sharma)

      Thanks

      Ian

      Author's profile photo Wolfgang Röckelein
      Wolfgang Röckelein

      Hi all,

      BTE sucessor should be the newly released RAP Events AFAIK, but the question remains, how fast this will be adopted in the individual areas...

      Regards,

      Wolfgang

      Author's profile photo Gaurav Karkara
      Gaurav Karkara

      Thanks for this very informative blog.

      What is the difference between 'ABAP for Cloud Development' and 'ABAP for Key Users'?

      Gaurav

      Author's profile photo Thomas Schneider
      Thomas Schneider

      Hi,

      'ABAP for Cloud Development' and 'ABAP for Key Users' are explained in detail in the following blog posts:

      S/4HANA Extensibility Concept Details: Restricted ABAP | SAP Blogs -> general concept of ABAP Language versions and ABAP for Key Users.

      Restricted ABAP for SAP BTP ABAP Environment | SAP Blogs -> 'ABAP for Cloud Development'. In this blog the name of the language version is still referred to as "ABAP for SAP BTP", it has been recently renamed to 'ABAP for Cloud Development' . It is available in SAP BTP (therfore the original name) and - as of 2208 - in SAP S/4HANA Cloud, and in S/4HANA on-premise.

      Best regards,

      Thomas

       

      Author's profile photo Mark Wagener
      Mark Wagener

      So if I want to use it in a S/4HANA private Cloud system can I do this once the 2022 OP release is available? And in a greenfield scenario (where the realize phase has not yet started) it is SAP's recommendation to do so?!

      In SAP S/4HANA private Cloud and on-premise, ABAP Cloud development will be a recommended option – especially for new ABAP development projects.

      Author's profile photo Gaurav Karkara
      Gaurav Karkara

      Thanks Thomas.

       

      I would assume that 'ABAP for Cloud Development' and 'ABAP for BTP' will have some differences. Embedded steampunk should have less restrictions, i believe, as it will be closer to S/4HANA. ABAP for BTP won't have any BAdI implementations or direct access to back-end released CDS views. As per my understanding, Embedded steampunk ABAP should be closer to ABAP for Key users. No?

      Author's profile photo Thomas Schneider
      Thomas Schneider

      Hi Gaurav,

      there is no difference between the language versions 'ABAP for Cloud Development' and 'ABAP for BTP'. 'ABAP for Cloud Development' is just the new name for 'ABAP for BTP'.

      But there is of course a difference in the amount of APIs and extension points that you can use. In SAP BTP ABAP Environment, you can use the (local) APIs (and extension points) from the ABAP platform only. In SAP S/4HANA Cloud ABAP Environment, you can use the (local) APIs from ABAP platform and from the S/4HANA Cloud layer. This is visualized nicely in Harald Kucks blog  https://blogs.sap.com/2021/09/30/steampunk-is-going-all-in/ in the pictures.

      It is important to distinguish between the language version (= which ABAP language elements are allowed) and the APIs (and extension points) that are available in a particular product. The language version 'ABAP for Cloud Development' is exactly the same in SAP BTP and in S/4HANA Cloud. The APIs (and extension points) are different.

      For 'ABAP for Cloud Development' and 'ABAP for Key Users', the language versions are different. 'ABAP for Cloud Development' is much richer. See details in the my blog Restricted ABAP for SAP BTP ABAP Environment | SAP Blogs . The APIs are also different.

      I hope this clarifies your question.

      Best regards, Thomas.

       

      Author's profile photo Thomas Schneider
      Thomas Schneider

      For some detailed questions on ABAP language versions, the following FAQ might be useful:

      ABAP Language Versions – FAQs

      Author's profile photo Boris Gebhardt
      Boris Gebhardt
      Blog Post Author

      The promised SAP community landing page for SAP S/4HANA Cloud ABAP Environment (Embedded Steampunk) is now available:

      SAP S/4HANA Cloud ABAP Environment | SAP Community

      Use this community to ask questions or to find more information about Embedded Steampunk.