SleevoSleevo

Articles

ABAP Cloud: what changes compared to classic ABAP

What ABAP Cloud is, where it is mandatory, what disappears in each area of the code, what replaces it, and what is still allowed, contrary to what is often said.

Sleevo team · Jul 16, 2026 · updated Oct 23, 2026 · 7 min read

Share

ABAP Cloud is not a different language. It is the same ABAP with a set of rules that make it upgrade-safe: whatever SAP does not guarantee as stable simply does not exist for those who program in it. Understanding exactly what changes avoids two common mistakes: underestimating the conversion effort and, at the other extreme, believing that "nothing we do today works there".

What ABAP Cloud is

SAP defines ABAP Cloud through four rules:

  • the "ABAP for Cloud Development" language version, a lean version of ABAP, without obsolete statements and without anything that depends on SAP GUI or the application server;
  • released objects only: from SAP, the code uses only what SAP publishes as an API, with a stability contract;
  • ABAP Development Tools (ADT) only, in Eclipse: there is no development through SAP GUI;
  • RAP (ABAP RESTful Application Programming Model) as the model for transactional applications.

What "released" means, for whom and with what guarantee is covered in API release contracts: what C0, C1, C2, C3 and C4 guarantee. Besides Standard ABAP and ABAP Cloud, there is a third language version, even more restricted: ABAP for Key Users, used by the Fiori extensibility apps such as Custom Logic and Custom CDS Views. It is covered in ABAP for Key Users: what key user objects are and where they fit in Clean Core.

Where it is mandatory

Product ABAP Cloud
SAP BTP ABAP Environment and S/4HANA Cloud Public Edition Mandatory: classic ABAP does not exist
S/4HANA on-premise and Private Edition, since 2022 Optional and recommended: coexists with classic ABAP, object by object

In S/4HANA on-premise, each object has its own language version. A system can have old classic code and new ABAP Cloud code side by side, and the conversion can be done gradually.

What prevents the use of what is not allowed

In ABAP Cloud, the rule does not depend on someone running the ATC: it is enforced by the syntax check. An object that uses something not released, or a statement that does not exist in the language version, cannot be activated. With dynamic access, such as a call built at runtime, the check happens at execution, with a runtime error. The ATC remains useful for assessing classic code before conversion, pointing out what would prevent the switch.

What changes, area by area

Object types

In classic ABAP In ABAP Cloud
Executable program (REPORT), module pool, INCLUDE, type pool Do not exist. Only classes, interfaces and function groups
Dynpro, selection screen, GUI status, SAP GUI transaction Do not exist. The UI is Fiori on top of RAP
Dictionary search help Does not exist. CDS-based search help
CDS in the old format (define view) Obsolete: SAP only evolves the view entity, which is the format to use
User exit, implicit or explicit enhancement Do not exist. Only released BAdIs

Custom function groups and function modules are still allowed, without the TABLES parameter.

User interface and lists

The entire SAP GUI world is left out: WRITE and lists, TOP-OF-PAGE, AT LINE-SELECTION, PARAMETERS, SELECT-OPTIONS, START-OF-SELECTION, CALL SCREEN, SET PF-STATUS and the like. The UI becomes Fiori, with RAP exposing the data through an OData service. ALV, whether through REUSE_ALV_* or CL_SALV_TABLE, is not available either.

Calling programs

SUBMIT, CALL TRANSACTION and LEAVE TO TRANSACTION do not exist. Background processing becomes an application job (job catalog and job template), and logic is reused through classes.

Database

In classic ABAP In ABAP Cloud
Native SQL (EXEC SQL), cursors, CALL DATABASE PROCEDURE Do not exist. ABAP SQL and AMDP
CLIENT SPECIFIED, USING CLIENT (access to another client) Do not exist: each program sees only its own client
Reading any SAP table Only through released CDS views, such as I_Product instead of MARA and I_JournalEntry instead of BKPF
Custom tables Reading and writing are still allowed

FOR ALL ENTRIES, BYPASSING BUFFER, WITH PRIVILEGED ACCESS and AMDP are still allowed. AMDP must be client-safe and use only released objects.

Transactions and updates

  • Update task (CALL FUNCTION IN UPDATE TASK), SET UPDATE TASK LOCAL and PERFORM ON COMMIT do not exist: updates are always local, in the same process.
  • COMMIT WORK is still allowed for whoever controls the transaction, but not inside RAP: in the handlers and in the save phase, the framework itself commits.

Parallel processing and RFC

In classic ABAP In ABAP Cloud
STARTING NEW TASK, tRFC Released frameworks: CL_ABAP_PARALLEL and the Background Processing Framework
CALL FUNCTION DESTINATION with an SM59 destination Still allowed, with the destination coming from a communication arrangement

Dynamic programming

  • Code generation (GENERATE SUBROUTINE POOL, INSERT REPORT, READ REPORT) does not exist. SAP offers the XCO APIs to generate objects.
  • Dynamic tokens are still allowed: ASSIGN by name, CREATE OBJECT by class name, dynamic method calls and SELECT with a dynamic table. The release check is done at runtime.
  • RTTS (CL_ABAP_TYPEDESCR and subclasses) is still allowed; DESCRIBE does not exist.

Technical services

Each classic service has a released API in its place:

Service In classic ABAP In ABAP Cloud
Application log BAL_LOG_CREATE, BAL_DB_SAVE CL_BALI_LOG
Number range NUMBER_GET_NEXT CL_NUMBERRANGE_RUNTIME
Email SO_NEW_DOCUMENT_ATT_SEND_API1, CL_BCS CL_BCS_MAIL_MESSAGE
Locking Direct call of ENQUEUE_* CL_ABAP_LOCK_OBJECT_FACTORY
Change document CHANGEDOCUMENT_OPEN CL_CHDO_WRITE_TOOLS
Jobs JOB_OPEN, JOB_CLOSE Application job (CL_APJ_RT_API)
Forms Smart Forms, SAPscript Adobe Forms, through Adobe Document Services
Spreadsheet Download through SAP GUI XCO_CP_XLSX
External communication SM59 destinations Communication scenarios and arrangements
Table maintenance Maintenance view (SM30) Business configuration object and configuration app

Files on the application server (OPEN DATASET) and upload or download through SAP GUI are left out.

Language

ABAP Cloud removes what was already obsolete and what depended on the classic environment:

  • macros (DEFINE), header lines in internal tables, OCCURS, RANGES, MOVE, COMPUTE, REFRESH, CATCH SYSTEM-EXCEPTIONS, logical databases and extracts;
  • MESSAGE only with INTO: the message reaches the user through an exception, through RAP or through the application log;
  • BREAK-POINT in the code (ASSERT is still allowed);
  • GET TIME and SET LANGUAGE: date and time come from GET TIME STAMP and CL_ABAP_CONTEXT_INFO;
  • most system fields: the official ones include sy-subrc, sy-tabix, sy-index, sy-uname, sy-langu and sy-mandt;
  • conversion routines: only ALPHA and ISOLA.

FORM and PERFORM still compile, but SAP marks them as obsolete, supported only temporarily.

What is still allowed, contrary to what is often said

  • creating and calling custom function modules;
  • synchronous RFC, with a destination from a communication arrangement;
  • COMMIT WORK outside RAP;
  • AMDP;
  • dynamic programming and RTTS;
  • CALL TRANSFORMATION with XSLT and Simple Transformations;
  • reading and writing custom tables;
  • AUTHORITY-CHECK with released or custom authorization objects;
  • FOR ALL ENTRIES and WITH PRIVILEGED ACCESS.

Changes between releases

The language version evolves. From S/4HANA 2023 (ABAP 7.58) to 2025, the following became allowed, among others: WAIT UP TO, function calls IN REMOTE SESSION and secondary database connections, provided they are opened through a connection object. Before ruling out a technique, it is worth checking the documentation for the release in use.

How ABAP Cloud coexists with classic ABAP

In S/4HANA on-premise and Private Edition, the two coexist:

  • classic code can call anything, including ABAP Cloud objects;
  • ABAP Cloud code calls released SAP objects and Z objects in the same software component. To call a classic object in another software component, that object must be released with the C1 contract, which is the role of a wrapper.

The details of this rule are in Software components in ABAP Cloud: who can call whom. For the effect of this on the SAP Cloud ALM dashboard, see Why a program with a classic screen stops at Level B.

Sources

  • SAP Help, ABAP Keyword Documentation, Language Elements in ABAP Versions (S/4HANA 2025 and 7.58) and the ABAP for Cloud Development documentation.
  • SAP Help, SAP BTP ABAP Environment: object types, application jobs, forms, communication and business configuration.
  • SAP Community, ABAP Cloud FAQ.
  • Thomas Schneider (SAP), ABAP Language Versions – FAQs, SAP Community.
  • SAP, Cloudification Repository (GitHub SAP/abap-atc-cr-cv-s4hc).