SAP Clean Core Score
One number, 5 to 100, for how far your custom ABAP is decoupled from the SAP standard core. Higher is better. It is our measure, not a figure SAP publishes — and it points the opposite way to SAP’s Technical Debt Score.
The Clean Core Score is Clean-Core.io's own 5–100 measure of how far custom ABAP is decoupled from the SAP standard core. Higher is better. It is computed by deterministic static analysis of the code and its data dependencies, weighting direct database modifications, calls to unreleased APIs, and key-user extensibility. SAP does not publish a Clean Core Score. SAP's own figures are the Technical Debt Score and Clean Core Share in SAP Cloud ALM and the Clean Core Level A–D per object — and the Technical Debt Score runs the other way, where a higher score means more technical debt.
What is the Clean Core Score?
The Clean Core Score is a single figure for how far customer-specific ABAP has been decoupled from the SAP standard. It runs from 5 (the floor, however much was found) to 100 (nothing in the assessed code cost a point). Higher is better.
It is a property of code, not of a company. It is computed from the uploaded source and its data dependencies, deterministically, before any AI is involved — the same code gives the same score every time, and every verdict behind it can be traced to the code it came from — and, where it rests on SAP's catalog, to the SAP object as well.
By maintaining a “clean core,” companies keep core processes stable while innovations are realized side-by-side on the SAP BTP, part of the SAP Business AI Platform or in-app via released interfaces. The score says how far a given code base has got with that.
Not SAP’s score — and which way each one points
SAP publishes no Clean Core Score. The names in this field are close enough to be mistaken for one another, and one of them runs backwards, so here they are side by side. Clean-Core.io is an independent, community-built tool; SAP has not endorsed, certified or reviewed this score.
| Figure | Published by | Direction | What it says |
|---|---|---|---|
| Clean Core Score5–100 | Published byClean-Core.io (this site) | DirectionHigher is better | What it saysHow far the analysed custom ABAP is decoupled from the SAP standard core. |
| Technical Debt ScoreSAP’s own | Published bySAP — RISE with SAP methodology dashboard, SAP Cloud ALM | DirectionHigher is worse | What it saysSAP’s wording: “a higher score indicating greater technical debt”. |
| Clean Core ShareShare | Published bySAP — SAP Cloud ALM | DirectionHigher is better | What it saysHow much of the landscape already follows the clean core approach. |
| Clean Core Level A–DA / B / C / D | Published bySAP — Cloudification Repository, per object | DirectionA is best, D is worst | What it saysWhat SAP says about one object: released, classic, internal or not recommended. |
The one that catches people out: a high Clean Core Score is good news, and a high SAP Technical Debt Score is bad news. SAP’s own description of that figure is “a higher score indicating greater technical debt”. If you are reading both in the same meeting, say which one you mean.
The one SAP figure we do reproduce is the per-object Clean Core Level A–D, derived from SAP’s published data. The rule that derives it, and the version of that rule, are written out on how the A–D level is derived.
What a good score is — and a bad one
Clean-Core.io's bands, derived from the deductions. Each band’s meaning is something the deductions below guarantee for every score in it. A grade, not a compliance percentage — and not an SAP measure.
91–100
Close to clean core
Nothing heavy in what was read — at most lighter constructs such as reads of SAP tables, classic screens or remote calls, and in SAP Cloud ERP Private writes to the program's own Z/Y tables.
Every heavy kind of construct costs at least 10 points on its first occurrence — except a write to the program's own Z/Y tables in SAP Cloud ERP Private, which costs nothing.
81–90
Some rework
No modification of SAP code and no direct write to an SAP standard table — other constructs need work.
Either of those two alone would have taken the score to 80 or below.
60–80
Significant rework
One construct of real weight, or several lighter ones together, has to be replaced or moved.
A direct write to an SAP standard table costs 20 points on its own, a modification of SAP code 30.
5–59
Far from clean core
Several kinds of construct, or parts the engine could not assess, stand in the way of the clean core rules.
More than 40 points were taken off — more than any single kind of construct can cost.
How the score is computed
The score starts at 100 and takes points off for each kind of construct found in the code. The first finding of a kind costs most, each further one less, and every kind has a cap — so the score says how many kinds of problem there are more than how often each occurs. It never goes below 5. Each kind of construct the engine could not assess takes 5 more points (at most 30), because what was not read cannot count as clean.
| Kind of construct | First finding | Each further | At most |
|---|---|---|---|
| Modifications of SAP code | First finding−30 | Each further−5 | At most−40 |
| Enhancement implementations | First finding−12 | Each further−3 | At most−20 |
| Direct writes to SAP standard tables | First finding−20 | Each further−3 | At most−25 |
| Writes to custom tables — own Z/Y tables cost nothing in SAP Cloud ERP Private | First finding−12 | Each further−2 | At most−18 |
| Batch input to transactions | First finding−10 | Each further−3 | At most−15 |
| Native SQL statements | First finding−10 | Each further−3 | At most−15 |
| Remote function calls | First finding−8 | Each further−2 | At most−12 |
| Update tasks | First finding−5 | Each further−2 | At most−10 |
| File transfers through the SAP GUI | First finding−5 | Each further−2 | At most−10 |
| Files on the application server | First finding−5 | Each further−2 | At most−10 |
| Classic screens (Dynpro) | First finding−5 | Each further−1 | At most−8 |
| Direct reads of SAP standard tables | First finding−2 | Each further−1 | At most−5 |
In SAP Cloud ERP Private a write to the program's own Z/Y tables costs nothing — it is on-stack developer extensibility, not a clean core violation; in SAP S/4HANA Cloud Public Edition, and for a namespaced /NS/ table in either edition, it costs the points in the table. Runs signed before engine 3.0.9 keep the score they were signed with.
What the score does not tell you
- Not a cost, a saving or an ROI. The score measures code structure. The analysis states no money figure and the board deck states none. The Economics stage is the one place the score enters one: it models upgrade effort from rates you enter yourself and the score of the signed run, on assumptions it lists, and calls the result a demonstration model rather than a business case.
- Not an SAP verdict. SAP ADT and the SAP ABAP Test Cockpit (ATC), run against your target release, are the authoritative checks. This is preparation for them, not a substitute, and not an SAP certification.
- Not a promise about your upgrade. Static analysis cannot resolve everything — dynamic calls, Dynpro flows and batch input are named rather than guessed at. A score is evidence for a decision, and the decision stays with you.
What the number gives you
- One figure for a code base, on a published rule
- Every verdict traceable to the code, catalog verdicts to SAP’s object data
- Critical couplings named with line numbers
- Recomputed on the server and signed into the run
Frequently Asked Questions (FAQ)
What is a good Clean Core Score?
Clean-Core.io's bands, derived from the deductions: 91–100, close to clean core: Nothing heavy in what was read — at most lighter constructs such as reads of SAP tables, classic screens or remote calls, and in SAP Cloud ERP Private writes to the program's own Z/Y tables. 81–90, some rework: No modification of SAP code and no direct write to an SAP standard table — other constructs need work. 60–80, significant rework: One construct of real weight, or several lighter ones together, has to be replaced or moved. 5–59, far from clean core: Several kinds of construct, or parts the engine could not assess, stand in the way of the clean core rules. Higher is better. A grade, not a compliance percentage — and not an SAP measure.
What does a Clean Core Score of 100 mean?
A score of 100 means that no construct the analysis assessed produced a scored finding against SAP's published Clean Core guidelines. It says nothing about the constructs the analysis lists as not assessed, so a 100 is alignment only for the assessed part of the code — read the list of unassessed constructs before relying on it. On these criteria the assessed code is well-positioned for upgrades — subject to your own testing and validation.
Is the Clean Core Score the same as SAP's Technical Debt Score?
No, and the two point in opposite directions. The Clean Core Score is published by Clean-Core.io and runs from 5 to 100 where a higher number is better. SAP's Technical Debt Score, shown in the RISE with SAP methodology dashboard in SAP Cloud ALM, runs the other way: SAP describes it as a higher score indicating greater technical debt. Reading one as if it were the other inverts the answer.
Does SAP publish a Clean Core Score?
No. SAP publishes a Technical Debt Score and a Clean Core Share in SAP Cloud ALM, and a Clean Core Level A–D per object in its Cloudification Repository. There is no SAP metric called Clean Core Score. Ours is our own, and SAP has not endorsed, certified or reviewed it.
Does a high Clean Core Score mean lower costs?
We do not put a figure on that. The score measures code structure, not money, and neither the analysis nor the board deck derives a cost, saving or ROI figure from it. The Economics stage is the one place it enters a money figure: it models upgrade effort from rates you enter yourself and the score of the signed run, on assumptions it names, and calls the result a demonstration model rather than a business case.
How is the Clean Core Score calculated?
By deterministic static analysis, before any AI is involved. The engine parses the ABAP, resolves its data dependencies and checks each SAP object it touches against SAP's published Cloudification Repository. The score starts at 100 and takes points off per kind of construct found — the first finding of a kind costs most, each further one less, every kind is capped: modifications of sap code 30 (at most 40), enhancement implementations 12 (at most 20), direct writes to sap standard tables 20 (at most 25), writes to custom tables 12 (at most 18), batch input to transactions 10 (at most 15), native sql statements 10 (at most 15), remote function calls 8 (at most 12), update tasks 5 (at most 10), file transfers through the sap gui 5 (at most 10), files on the application server 5 (at most 10), classic screens (dynpro) 5 (at most 8), direct reads of sap standard tables 2 (at most 5). It never goes below 5, and each kind of construct the engine could not assess takes 5 more (at most 30). In SAP Cloud ERP Private a write to the program's own Z/Y tables costs nothing — it is on-stack developer extensibility, not a clean core violation; in SAP S/4HANA Cloud Public Edition, and for a namespaced /NS/ table in either edition, it costs the points in the table. Runs signed before engine 3.0.9 keep the score they were signed with. The same input gives the same score every time.