Now accepting guest editorial from SAP, Oracle, Workday and ServiceNow practitioners.Pitch a guide
The Sign-Off Table

Lesson 4 of 5

ABAP Cloud versus classic ABAP

10 min

Listen to this lesson

0:00 / 9:30

SAP's ABAP keyword documentation describes two programming paradigms. In classic ABAP you have unrestricted access to the ABAP technology. In ABAP Cloud there are restrictions on the ABAP language version and on which APIs you may use. Those restrictions are the point: they are what lets SAP upgrade the system underneath your code without breaking it.

Language versions

Every ABAP program, and many other repository objects, has a property called the ABAP language version. SAP currently documents three: Standard ABAP, the unrestricted version for classic ABAP; ABAP for Cloud Development, the restricted version for ABAP Cloud; and ABAP for Key Users, a restricted version for key user enhancements within the options SAP provides. In ABAP for Cloud Development most code lives in class methods, almost no obsolete statements are allowed, the strictest ABAP SQL syntax check applies and client isolation is enforced.

Every ABAP object carries one of three language versions, and the version decides which statements and SAP objects it may use.
The Sign-Off Table · thesignofftable.com/academy/sap-abp-101
Classic ABAPABAP Cloud
Language versionStandard ABAP (Cloud Development also possible)ABAP for Cloud Development
Access to SAP objectsAny SAP object, released or notOnly objects released for ABAP Cloud
ToolsADT and SAP GUIADT only
UI technologyDynpro, lists, Web Dynpro, FioriFiori through RAP services; no dynpro or classic lists
Transactional modelAnything, including direct table updatesRAP
Upgrade behaviorMay break when SAP changes internalsProtected by release contracts
Classic ABAP and ABAP Cloud side by side.
The Sign-Off Table · thesignofftable.com/academy/sap-abp-101

Released APIs

In ABAP Cloud you may only use SAP objects that are released for ABAP for Cloud Development. Most SAP database tables cannot be read directly; you read released CDS views instead. SAP Learning gives the classic example: the country table T005 is not released, and ADT's syntax check tells you to use the released CDS view I_COUNTRY instead. Released objects carry a release contract, such as C1 for system-internal use, which commits SAP to keep the interface stable. The next course in this track, on the ABAP Cloud development model, covers contracts in depth.

  1. Kenji writes a SELECT on T005In a class with language version ABAP for Cloud Development
  2. Syntax check failsThe table is not released; the message names I_COUNTRY as the alternative
  3. He switches to I_COUNTRYA released CDS view with a stability contract
  4. Code activatesAnd will keep working after SAP upgrades CMD
How the language version steers a developer toward released APIs.
The Sign-Off Table · thesignofftable.com/academy/sap-abp-101

Where do you find what is released? SAP Learning points to three places. The Released Objects tree in ADT lists everything released for ABAP Cloud in the system you are connected to, including data elements and authorization objects. The SAP Business Accelerator Hub lists public remote APIs, events, CDS views, RAP business object interfaces and BAdIs by product. And the ADT syntax check itself names a successor when one exists. If none of these turns up what you need, the gap is a design decision for the architect, not something to work around quietly; a later course covers SAP's options for that case.

When an SAP object is not released, look for a successor in three places, and escalate the gap rather than working around it.
The Sign-Off Table · thesignofftable.com/academy/sap-abp-101

You can see a language version in ADT under Properties, General. SAP's cheat sheet for ABAP for Cloud Development shows that in a classic system you can switch a class from Standard ABAP to ABAP for Cloud Development there, after which any non-released usage becomes a syntax error. That makes the language version a powerful, honest signal: if it says ABAP for Cloud Development and the object activates, it uses only released APIs.

Since 2025 SAP also grades custom code with four clean core levels. Level A uses only released APIs (ABAP Cloud). Level B uses classic APIs that SAP lists as recommended, such as many BAPIs. Level C uses SAP internal objects that are neither released nor classic APIs; it is acceptable only with checks against SAP's changelog before each upgrade. Level D is not clean: modifications, implicit enhancements, direct writes to SAP tables and objects SAP marks as no API. In SAP S/4HANA 2025 the ATC clean core checks report level B as information, C as a warning and D as an error. The course Clean Core Extensibility Levels A-D in Practice covers them in depth.

What would you do?

Dan asks Priya why the rebate program needs a full regression test after every SAP upgrade while the new deposit extension only needs a targeted check. Which explanation is accurate?

Key points
  • Classic ABAP is unrestricted; ABAP Cloud restricts the language version and API access.
  • Three language versions: Standard ABAP, ABAP for Cloud Development, ABAP for Key Users.
  • In ABAP Cloud, use released APIs such as I_COUNTRY instead of tables such as T005.
  • Release contracts commit SAP to keep released APIs stable across upgrades.
  • The language version in ADT Properties is a reliable signal of how clean an object is.

Check your understanding · not graded

Lesson check

  1. 1. Which ABAP language version is used for ABAP Cloud?

  2. 2. In ABAP Cloud, what should replace a direct SELECT on table T005?

  3. 3. Which statement about ABAP for Cloud Development is correct?

  4. 4. Why does classic code that reads SAP tables directly carry more upgrade risk?