Skip to Content
Product Information
Author's profile photo Florian Wahl

SAP BTP ABAP Environment – Release 2202

The year 2022 is already in full swing and this means that it is also time for a new SAP BTP ABAP Environment release (version 2202). Highlights of this years’ first release are, among others, a reduction of the minimum SAP HANA database size, new reuse services as well as enhancements to the debugger tooling.

Please enjoy the following condensed overview of the latest features. Please refer to our official release notes page for full details.

Reduced Minimal Size for SAP HANA database

With the internal enablement of ABAP environment for SAP HANA Cloud (for new instances only, formerly SAP HANA Service) the minimal database size could be reduced from 4 to 2 “HANA Compute Units”, consisting of 15 GB memory per unit. This means that a minimum ABAP environment instance now has 16 GB of ABAP memory and 30 GB of SAP HANA memory, lowering the technical and commercial entry barrier for smaller use cases.

Enhanced Reuse Services

You can now use new apps to display and maintain factory calendars, holiday calendars and holidays (details here, here and here). The Maintain Translations app has been enhanced to allow translation of IAM business catalogs (details). And the XCO Library has been enriched with new features such as the new Transport Read APIs, the Call Stack module, the Character module and the I18N module (details).

New Debugger Features

In the ABAP debugger, you can now change own variables while debugging. This counts for static variables which are declared in the own ABAP code as well as dynamically created (data) objects of own classes and types. Furthermore, the function “Jump to Line” is now available for your own ABAP source code.

ABAP Development Tools

  • Support for new filter values for released and deprecated objects (details)
  • Support for maintaining business configuration registrations as objects in ADT with a JSON-based editor and creation of knowledge transfer documents for these objects (details)
  • Support for generation of ABAP value statements for e.g. internal tables or structures from the Data Preview or via the ABAP Debugger (details)
  • Support for message breakpoints in the ABAP Debugger to stop the debugger at a certain message (details)
  • Support for ATC exemption functionalities (details and blog)
  • Support for comments related to ATC Quick Fixes using the Recommended Quick Fixes wizard (details)
  • Support for creation of API snapshots of components which can be used in compatibility checks as part of the ATC check API_COMPATIBILITY
  • Support for own ABAP Test Cockpit checks with an implementation of the interface IF_CI_ATC_CHECK (details)
  • Support for setting the handling of pseudo comments and pragmas in the ABAP Test Cockpit Configurator app
  • Support for editing number ranges objects via the new form-based Number Range Object editor (details)
  • Support for comparing Knowledge Transfer Documents via the History View
  • Enhancements in the Relation Explorer with more details about actions and their behavior
  • Support for sub-nodes of associations shown in the Relation Explorer now being visible also in the Element Info

ABAP RESTful Application Programming Model

  • Support for business object interfaces which can be used to introduce an additional abstraction layer between a RAP base BO and its business service projection layer (details)
  • Support for creation of a CDS entity buffer using a creation wizard (details)
  • Support for new analytical annotations to include or exclude certain dimensions from exposure at runtime (details)
  • Support for retrieval of easily parsable filter conditions in an unmanaged query via a the method get_as_tree (details)

Administration

  • Enhancements to the Technical Monitoring Cockpit including improved user experience for work process analysis, new screens for resource consumption and support for query parameters in SQL trace records in the SQL Trace Analysis screen
  • Enablement of the new Maintain User Sessions app which displays sessions containing locks and lets you display further information and delete respective sessions (details)

Continuous Integration & Delivery

  • Support for merging different transport requests in one request and creating a copy of an exported request (details)
  • Enablement of an object restriction check during deployment of an SAP Fiori UI which ensures that only system-internal services in language version “ABAP for Cloud” or those from the same software component are contained
  • Support for a new tag_name parameter for the Clone endpoint in the MANAGE_GIT_REPOSITORY WebAPI which can be used to import a specific tag into the system
  • Support for rollback of failed pulls in productive systems to ensure a consistent code state of a software component
  • Support for transport of spaces and pages between development and productive systems

Extensibility

  • Support for releasing database tables, ABAP structures, data definitions and service definitions for the Extend (C0) contract as stable APIs for extensibility use cases (details)

Integration & Security

  • Enablement of the new app Display Publishing Process to monitor publishing processes for custom communication scenarios and business catalog extensions (details)
  • Enablement of new classes and enhancement of existing classes for HTTP request and response handling for e.g. managing URLs and deleting header fields (details)
  • Support for a new API to customize SOAP headers by adding custom XML-fragments to the SOAP header of a web service call

In addition, we have released a new tutorial for development and deployment of a SAP Fiori app using a SAP-managed app router (accessible here) and updated the existing “Integrate List Report into ABAP Fiori Launchpad” tutorial by adding transport processes.

I hope you enjoyed this little overview. Please let us know if you have questions.

Stay healthy and take care!

Assigned Tags

      9 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Stephan Heinberg
      Stephan Heinberg

      Thanks!

      Any news about Free Tier BTP ABAP Environment?

      Author's profile photo Florian Wahl
      Florian Wahl
      Blog Post Author

      Hi Stephan,

      ABAP Environment is already available as part of the Free Tier offering.

      Best regards,

      Florian

      Author's profile photo Lars Hvam
      Lars Hvam

      Regarding "Support for rollback of failed pulls in productive systems", the changelog says

      In case of a failed pull, a rollback to the last valid commit is performed on production systems (attribute 'is_development_allowed' = false). This supports maintaining a consistent code state of a software component.

      For development and quality systems, rollback is disabled by default. Here, invalid, i.e. error-producing transport requests can also be imported.

      Which, to me, sounds very different than "support", according to the changelog the default behavior of failed imports has been changed? To something different than how its worked for the last 20+ years(?).

      In https://help.sap.com/viewer/4a368c163b08418890a406d413933ba7/202110.000/en-US/fb77f07bb9644979be357b701a4a441f.html, SAP recommends

      We consider the option to roll back imports as feasible in test and quality assurance systems where you can immediately revert errors. Don’t use it in production systems.

      How does this relate? Has SAP solved the import issues, so now its okay to import failing transports into production without impacting business? This has been a 20+ year old problem, eg. if removing a column => import fails => its rolled back, and business transactions are consistent?

      Author's profile photo Christoph Pohl
      Christoph Pohl

      Thanks for spotting the difference, Lars!

      First of all a disclaimer: No, we did not solve the problem of rolling back DB changes after failed imports. That means if your to-be-imported commit contains DDic changes and runs into issues, there is still no automatic way to restore the old DB state. That means, as before, you can only "fail forward" by adding changes on top of the altered DB state. Agreed, the documentation should be more explicit on this point.

      Next thing to note is the difference between gCTS as you can use it today in S/4HANA on-premise and the way it is used in SAP BTP ABAP Environment (a.k.a. Steampunk). In the later case, customers can only use the Manage Software Component app to pull commits into their Steampunk systems. There was already an implicit rollback of failed commits so far, which only reverted the local git state without transporting these changes into the ABAP repository. This could lead to inconsistent states that customers could only resolve with SAP's help. The new roll-back introduced with 2202 however also imports the reverted state from git to ABAP, which leaves the system in a consistent state that customers can repair on their own by adding commits on top.

      Last and probably most important is the "garbage in, garbage out" principle, i.e., customers are responsible for the quality of changes they pull into any system and the consequences that follow. They should prevent that such faulty commits are pulled to their productive system in the first place, for instance by CI/CD tools and pipelines that qualify changes released from dev in test systems first before pulling them into production.

      Hope to help,

      Christoph

      Author's profile photo Lars Hvam
      Lars Hvam

      Thanks for the clarification

      Customers come from a "garbage in, crash" situation, and with the automated rollback SAP takes customers into a "garbage in, garbage out" situation.

      Note that "garbage out" might mean commit'ing business transactions based on data from ddic(database) tables that have lost data due to ddic changes(changing key fields, changing decimal places etc.) possibly resulting in products being produced to wrong spec, invoices issues with bad data. So, personally I'd much rather end up in a crash situation.

      Author's profile photo Johannes Bacher
      Johannes Bacher

      Dear Florian Wahl thank you for the blog!

      I hope you can answer one question: We have several custom UI5 Apps developed on BTP and then deployed to the S/4HANA Cloud backend (public cloud tenant). This worked fine for the past 2 years.

      Now, suddenly with 2202, we are unable to deploy UI5 apps to the backend.

      So far, SAP support could not provide meaningful answers.

      Do you know if this is true, that it is from now on impossible to deploy to the backend? Do we have to deploy to BTP now?

      In your blog I find this passage, maybe it is related:

      • Enablement of an object restriction check during deployment of an SAP Fiori UI which ensures that only system-internal services in language version “ABAP for Cloud” or those from the same software component are contained

      Thank you for your support,

      Johannes

      Author's profile photo Oliver Graeff
      Oliver Graeff

      Hello Johannes,

      could you kindly let us know the incident number, so we can check the exact symptom and how to reproduce it?

      Thanks a lot and best regards, Oliver

      Author's profile photo Johannes Bacher
      Johannes Bacher

      Hello Oliver,

      thank you for looking into this.

      Incident: 114332 / 2022 Unable to deploy custom UI5 application to S/4HANA Cloud system

      We have several custom UI5 Apps deployed to the backend (S4HANA public cloud).

      Suddenly it's impossible. It looks as if as long as we are not using any API calls in an app, it can be deployed. But as soon as we do call APIs (from S/4HANA Cloud), deployment isn't possible.

      Kind regards,

      Johannes

      Author's profile photo Oliver Graeff
      Oliver Graeff

      Hello Johannes,

      to ensure that external consumers of the API view continue to work after an upgrade, SAP ensures stability rules. I understand an Object Restriction Check has been introduced to handle the Stability Contract for Remote API Use. The logic should depend on which API is used.

      Thanks for your understanding.

      Best regards,
      Oliver