Clean core levels A–D
Method

How the A–D level is derived

SAP publishes two files that answer two different questions. The level is a merge of both, and the order the merge happens in decides the answer for 22 objects where the two files disagree. That order is written out here, in the sequence the code checks it, with every count taken from the catalog rather than typed in.

Quick Answer

The release file. If SAP will not release an object for ABAP Cloud but has named a successor for it, the level is not B — level B means 'acceptable where no level A path exists', and a named successor is that path. This affects 22 objects, including CL_BCS and CL_HTTP_CLIENT.

The two files

Both come from SAP’s Cloudification Repository. They are near-disjoint: 180 of 32,103 objects appear in both, so the second file is additional coverage rather than a second opinion on the first.

objectReleaseInfo

Can ABAP Cloud use this object?

States released, deprecated and notToBeReleased, and the successors SAP names for the objects it is retiring.

23,696

objects

objectClassifications_SAP

What does classic ABAP using it count as?

States classicAPI and noAPI — whether SAP considers the object fair game for classic extensions, or not for customer use at all.

8,587

objects

Synced from the repository; catalog as of 2026-08-26.

The rule, in the order it is checked

Each row is one branch. The first one that matches decides, so a row only sees the objects the rows above it did not claim — which is what makes the order a decision rather than a formatting choice.

#SAP stateLevelWhy
1releasedASAP has released it for ABAP Cloud. This wins outright, including for the objects the classic file also names.
2notToBeReleasedDSAP will not release it. There is no level A path through this object, and in almost every case SAP names what to use instead.
3deprecated + successorCOn its way out, but SAP has named the replacement — usable while you migrate, with a deadline attached.
4deprecated, no successorDOn its way out with nothing named to replace it. Anything built on it has to be re-thought, not re-pointed.
5classicAPIBSAP classifies it as fair game for classic ABAP, and no release-file state has claimed it above.
6noAPIDSAP classifies it as not intended for customer use.
7listed in neither fileCAn SAP object with no published classification is what the level C definition describes — internal, usable with a changelog check before each upgrade.

A customer object (Z*, Y*) carries no SAP classification at all, and neither does a namespaced object SAP does not list — those fall through to the engine’s own evidence and are labelled as estimated rather than looked up.

What that produces, counted

Every pairing that occurs in the data, with the level it produces. Computed from the artifacts when this page was built — not maintained by hand.

PairingLevelObjects
releasedA22,981
classicAPIB7,936
noAPID471
notToBeReleasedD284
deprecatedD183
released + classicAPIA158
deprecatedC68
notToBeReleased + classicAPI files disagreeD21
deprecated + classicAPI files disagreeC1

The 22 objects that look like a bug

Take CL_BCS, the classic class for sending mail. The classification file calls it classicAPI — an API classic ABAP may use, which on its own is level B. The release file calls it notToBeReleased and names CL_BCS_MAIL_MESSAGE as its successor. We publish D.

That reads as the release state wrongly overruling SAP’s own classification, and it is the reading two independent code reviews of this project arrived at in September 2026. The answer is in what level B means: acceptable where no level A path exists. Where SAP has named a successor, a level A path does exist, and calling the old object “SAP-recommended” would tell you to keep writing against something SAP has already replaced. Of the 22 objects in this position, 21 carry an explicit successor and one does not.

Reasonable people can disagree with that call — it is an interpretation of SAP’s level definitions, not a quotation of them. What should not happen is disagreeing with it by accident, which is why the object pages now show both files side by side and why this page exists at all.

What this level is not