Lesson 4 of 5
ABAP Cloud versus classic ABAP
10 min
Listen to this lesson
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.
| Classic ABAP | ABAP Cloud | |
|---|---|---|
| Language version | Standard ABAP (Cloud Development also possible) | ABAP for Cloud Development |
| Access to SAP objects | Any SAP object, released or not | Only objects released for ABAP Cloud |
| Tools | ADT and SAP GUI | ADT only |
| UI technology | Dynpro, lists, Web Dynpro, Fiori | Fiori through RAP services; no dynpro or classic lists |
| Transactional model | Anything, including direct table updates | RAP |
| Upgrade behavior | May break when SAP changes internals | Protected by release contracts |
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.
- Kenji writes a SELECT on T005In a class with language version ABAP for Cloud Development
- Syntax check failsThe table is not released; the message names I_COUNTRY as the alternative
- He switches to I_COUNTRYA released CDS view with a stability contract
- Code activatesAnd will keep working after SAP upgrades CMD
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.
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?
- 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. Which ABAP language version is used for ABAP Cloud?
2. In ABAP Cloud, what should replace a direct SELECT on table T005?
3. Which statement about ABAP for Cloud Development is correct?
4. Why does classic code that reads SAP tables directly carry more upgrade risk?