Thursday, December 8, 2022

ABAP language versions

While SAP is transitioning into a cloud, an ABAP programing language is transitioning itself into towards the cloud as well. A multiple versions of this programming language are popping up. Every version is a restricted in some way while compared to standard ABAP – a Unicode version that was introduced in Basis Release 6.10 (also known as WAS 6.10). Restrictions can be based on merit of what enhancements can be made, what part of it are whitelisted (allowed), how repository objects are used, what rules are followed and so on.

As of Q4 2022 there are following subsets (or variants) of ABAP:

 

1/ Standard ABAP (Unicode) – Introduced in SAP Basis Release 6.10 when the standard SAP ABAP programs were converted to Unicode enabled ones. Unicode compatible ABAP programs fall under stricter syntax rules and provide a clearer programming style. That means that ABAP language constructs that are questionable and prone to error are prohibited. On top of the Unicode enabling there were changes done in areas of ABAP objects, internal tables, Open SQL, and update, ABAP Compiler, ABAP runtime and ABAP tools. This version covers entire ABAP language scope. This is called universal basic version of the ABAP.

2/ "ABAP for Cloud Development" or "ABAP for SAP BTP ABAP environment (formerly SAP Cloud Platform) and SAP S/4HANA Cloud" - Restricted language scope and restricted access to released APIs for developments in the SAP BTP ABAP Environment and for customer developments in the ABAP Platform Cloud. Standard ABAP (Unicode) rules apply here as well but only a very restricted set of language elements are supported and access to external repository objects is also restricted. Furthermore, the developments are implemented in methods and the stricter syntax rules for classes apply automatically. No obsolete language elements are allowed.

3/ ABAP for key users - is designed for secure implementations of enhancements as part of enhancement points by key users provided by SAP. The rules for Standard ABAP (Unicode) apply but only a very restricted set of language elements are supported and access to external repository objects is also restricted. Similarly, to ABAP for Cloud Development, the enhancements are implemented in methods and the stricter syntax rules for classes apply automatically. No obsolete language elements are allowed too. Available to key users to implement extensions using the SAP Fiori extensibility apps Custom Fields and Logic and Custom Business Objects. Key users can use this ABAP variant to implement business logic extensions using a Web-based editor in the SAP Fiori environment.

4/ Static ABAP with limited object use (obsolete) – has a restricted use of repository objects, where all language elements of Standard ABAP (Unicode) except dynamic language elements are allowed.

5/ Standard ABAP with limited object use (obsolete) – has a restricted use of repository objects, where all language elements of Standard ABAP (Unicode) are allowed.

6/ Non-Unicode ABAP (obsolete) – ABAP language as it was defined in SAP release 4.6. Here the Unicode checks are ignored. A program with this language version doesn’t run in Unicode SAP systems. As all currently SAP NetWeaver releases (6.10+) are supporting the Unicode this ABAP version is obsolete.


There is a DDIC domain ABAPVRS that hold values of all the ABAP language versions.

ABAP language versions as seen in classic SAP HANA Studio (eclipse based) IDE:



ABAP language versions as seen in classic SE80 t-code:

To find out what syntax is compatible with what ABAP language version you can use ABAP program DEMO_ABAP_VERSIONS


Additionally program ABAP_DOCU_VERSION_WHITELIST is available to provide a list of the repository objects that are allowed for the restricted ABAP language versions.

 

More information:

"ABAP strict" as ABAP language version

ABAP for Key Users

ABAP glossary

No comments: