ABAP S/4HANA Readiness Assessment: Rules, Risk Scoring, and Triage
How to run a credible S/4HANA readiness assessment — the 30+ compatibility rules, ATC check variants, how to read a findings report, risk scoring methodology, and the remediate vs retire vs re-architect decision.
The phrase “readiness assessment” gets applied to everything from a two-day workshop to a months-long code analysis. In the context of ABAP and S/4HANA, it has a specific meaning: a systematic analysis of every custom repository object against the compatibility rules of the target S/4HANA release, producing a prioritised list of changes required before cutover. This post covers how to do that rigorously.
The Compatibility Rule Set
SAP’s S/4HANA simplification applies at multiple layers. The ABAP-level rules — the ones that produce ATC findings — fall into six categories.
1. Obsolete Language Constructs
ABAP has accumulated deprecated syntax across 30 years of evolution. In ABAP Cloud (required for clean-core compliance), many of these cause compile errors. In classic ABAP on S/4HANA, they cause ATC warnings today and will cause errors in future ABAP language versions.
Key examples:
MOVE ... TO ...— replaced by assignment operator=COMPUTE lv_x = ...— obsoleteAT SELECTION-SCREENdynpro events in ABAP Cloud — not supportedCALL TRANSACTIONin background processing — restrictedMESSAGE ... RAISINGwithout proper exception class hierarchy- Old-style
FORM/PERFORMshould be migrated to methods
2. Deprecated Function Modules and BAPIs
Hundreds of ECC-era function modules are marked as deprecated or replaced in S/4HANA. Common offenders:
| ECC Function Module | Status | Replacement |
|---|---|---|
SD_SALESDOCUMENT_CREATE | Deprecated | I_SalesDocumentTP (RAP) |
ME_CREATE_PO | Deprecated | I_PurchaseOrderTP |
BAPI_MATERIAL_SAVEDATA | Restricted | I_MaterialTP |
FI_DOCUMENT_PARSE | Deprecated | I_JournalEntryTP |
HR_READ_INFOTYPE | Restricted | SuccessFactors API (if cloud HR) |
The SAP Simplification Item Catalog (available via transaction /N/LTMC or SAP Note 2227308) is the authoritative source for deprecation status by S/4HANA release.
3. Direct Access to Pool, Cluster, and Deprecated Tables
This is the single highest-volume finding in most ECC landscapes.
- Pool/cluster tables:
BSEG,KONV,STXL,KAPOL,CDPOS— these are stored in table pools or clusters, not as transparent tables. In S/4HANA, some are implemented differently or their data is partial. - Deprecated financial tables: Direct reads of
BSAK,BSIK,BSAD,BSID(open item management tables) are problematic because S/4HANA’s Universal Journal architecture changes where and how this data is stored. - Removed HR tables: Several Payroll and HR Infotype tables are removed or restructured in S/4HANA for HCM.
4. Missing FOR ALL ENTRIES Guard
" Bug: if lt_orders is initial, this reads the entire table
SELECT * FROM vbap INTO TABLE lt_items
FOR ALL ENTRIES IN lt_orders
WHERE vbeln = lt_orders-vbeln.
" Correct
IF lt_orders IS NOT INITIAL.
SELECT vbeln, posnr, matnr, kwmeng
FROM vbap INTO TABLE @DATA(lt_items)
FOR ALL ENTRIES IN @lt_orders
WHERE vbeln = @lt_orders-vbeln.
ENDIF.
Missing guards are not S/4HANA-specific failures — they are production bugs in ECC today. ATC flags them because migration is the opportunity to fix them. In S/4HANA on HANA, a full table scan from a missing guard on a large table is more visible due to monitoring tooling.
5. SELECT * Statements
SELECT * fetches all columns, defeating HANA’s columnar storage optimisation (which skips unneeded columns at the storage engine level), breaking when tables add or remove fields, and creating dependency on the physical column order in older-style field symbol assignments.
ATC flags all SELECT * usages. The fix is always to enumerate the required fields explicitly.
6. Native SQL and Direct Database Access
EXEC SQL, ADBC calls, and direct CALL METHOD cl_sql_statement=> usage bypass ABAP SQL’s CDS integration, authorization checks, and the HANA push-down optimisation layer. These must be replaced with ABAP SQL or CDS-based access.
ATC Check Variants for S/4HANA Readiness
The ABAP Test Cockpit (transaction ATC) ships with several pre-built check variants. For S/4HANA readiness, the relevant ones are:
- SAP_READINESS_S4 — the primary S/4HANA readiness variant; covers deprecated objects, simplification items, language compatibility
- ABAP_CLOUD_READINESS — stricter variant for ABAP Cloud compliance; relevant if targeting Public Cloud or a clean-core mandate
- SAP_DEFAULT — general code quality; run alongside readiness checks
To run programmatically via ADT REST API (useful for automated scanning):
POST /sap/bc/adt/atcrun
Content-Type: application/xml
<atcrun:run xmlns:atcrun="http://www.sap.com/adt/atcrun">
<objectSets>
<objectSet kind="inclusive">
<adtcore:objectReferences>
<adtcore:objectReference adtcore:uri="/sap/bc/adt/packages/ZSD_CUSTOM"/>
</adtcore:objectReferences>
</objectSet>
</objectSets>
<checkVariant checkVariantName="SAP_READINESS_S4"/>
</atcrun:run>
Results come back as XML with priority (1=error, 2=warning, 3=info), check name, object, line number, and remediation hint.
Assessment → Triage → Decision Flow
flowchart TD
A[Extract object list\nfrom package hierarchy] --> B[Run ATC S4HANA_READINESS\nvariant on all objects]
B --> C[Parse findings into\nstructured report]
C --> D{Priority 1 findings\nhigh-severity?}
D -->|Yes| E[Mandatory remediation\nbefore cutover]
D -->|No| F[Priority 2/3 findings\nrisk scored]
F --> G{Is object actively used?\nUsage analysis via SCI/SUIM}
G -->|Not used / low usage| H{Business value assessment}
G -->|Actively used| I[Assign remediation effort\nestimate]
H -->|No business owner| J[Retire — delete or archive]
H -->|Has owner, low complexity| K[Remediate in migration project]
H -->|High complexity, strategic| L[Re-architect\nRAP BO or BTP side-by-side]
I --> M{Effort vs business value}
M -->|High effort, low value| J
M -->|Manageable effort| K
M -->|Core process, complex| L
E --> N[Remediation backlog\nprioritised sprint plan]
K --> N
L --> O[Architecture design\nRAP/BTP scoping]
Risk Scoring Methodology
A flat list of ATC findings is not actionable for leadership. Risk scoring converts findings into a metric that can drive resourcing decisions.
A practical scoring model:
Object Risk Score = (P1 findings × 10) + (P2 findings × 3) + (P3 findings × 1)
Normalise by object size (lines of code) to get density:
Risk Density = Object Risk Score / (lines of code / 100)
Apply business criticality multiplier:
- SD/FI/MM core process objects: ×2.0
- Reporting and output objects: ×1.2
- Utility programs: ×0.8
This produces a sortable risk register where the most dangerous objects — high finding density in business-critical processes — float to the top.
At portfolio level, aggregate into a Readiness Index:
Readiness Index = 1 - (Total weighted findings / Maximum possible score)
A score above 0.85 generally indicates a landscape ready for technical migration planning. Below 0.60, the code remediation effort is likely to exceed the infrastructure migration effort and should be planned as a parallel workstream.
What to Remediate vs Retire vs Re-Architect
Remediate when an object has 1–3 isolated findings, the business process is in scope for S/4HANA, and the fix is under 3 person-days. Replace deprecated objects with released API equivalents, add FOR ALL ENTRIES guards, enumerate SELECT fields.
Retire when ATC finds dozens of issues but usage analysis (SCI, application logs, SUIM) shows zero execution in 12+ months, or no business owner can confirm the requirement. Do not migrate dead code — every object that crosses into S/4HANA must be maintained and transported for the life of that system.
Re-architect when the object implements a core business process with 50+ findings, or its ECC implementation relied on internal SAP structures that no longer exist in S/4HANA (e.g., classical GL account determination logic, obsolete pricing exits). Re-architecture during migration is expensive; carrying a heavily patched object into S/4HANA only to re-architect it 18 months later under production pressure is worse.
A findings report for technical leadership should cover: executive summary with readiness index and P1/P2/P3 counts by domain; top objects by risk score with owner and effort estimate; retire candidates (quick wins); re-architecture candidates requiring separate scoping; and a dependency map of shared deprecated objects — batch remediation of shared dependencies is far more efficient than object-by-object fixes.
Keep reading
SAP ECC 2027 End-of-Support Checklist: Is Your Custom Code Ready?
Mainstream SAP ECC maintenance ends 31 December 2027. This checklist covers the six critical workstreams every SAP customer must address to reach S/4HANA readiness before the deadline.
Read more →SAP S/4HANA Data Migration: Tools, Quality Rules, and Cutover Planning
A technical guide to SAP data migration — Migration Cockpit vs LSMW vs BAPI, migration object modelling, data quality rules, staging area design, delta cutover, and how AI accelerates data quality checks.
Read more →The 2027 SAP ECC End-of-Maintenance Deadline: What Actually Changes and What to Do Now
SAP's mainstream maintenance for ECC 6.x ends in 2027. This post breaks down what support levels change, the real consequences of missing the deadline, and a concrete 4-phase migration action plan.
Read more →