8.1Bloom · UNot started

ATC variants every team should know

Reading depth

What you'll learn

The ATC variant you choose defines what 'clean' means — know the SAP ones (readiness, cloud, performance, security) and build one tuned union for your team.

  • DEFAULT is broad and release-agnostic — not Clean Core or readiness aware.
  • S4HANA_READINESS_<year> = Simplification + HANA readiness; the suffix tracks the TARGET release (use S4HANA_READINESS_2025 for S/4HANA 2025; 2023 is the prior-release variant).
  • ABAP_CLOUD_DEVELOPMENT_DEFAULT = ABAP Cloud readiness (Restricted ABAP, released-only); ABAP_CLOUD_READINESS measures 'distance to Tier 1' for baselining legacy code.

An ATC check variant is just a named bundle of Code Inspector checks with their severities. Which variant you run decides what 'clean' even means, so a senior team treats variant selection as a deliberate decision, not a default. SAP ships several you should recognise on sight. `DEFAULT` is the broad, general-purpose variant — useful, but it knows nothing about Clean Core or your target release.

`S4HANA_READINESS_<year>` is the release-aligned variant: it runs the Simplification checks (against the Simplification Database for that target release) plus HANA-readiness checks, and it is what you point at custom code before and during a conversion — the suffix tracks the *target* release, so converting to S/4HANA 2025 means `S4HANA_READINESS_2025` (`S4HANA_READINESS_2023` is now the prior-release variant; same purpose, older target). For ABAP Cloud / Clean Core, SAP distinguishes two ATC procedures. `ABAP_CLOUD_DEVELOPMENT_DEFAULT` runs the *ABAP Cloud readiness* procedure — it enforces Restricted ABAP and released-only API consumption, so it is the source of truth for whether code could run on-stack as ABAP Cloud; `ABAP_CLOUD_READINESS` measures the 'distance to Tier 1' for mass-scanning legacy code to baseline. New in 2025, `ABAP_CLEAN_CORE_DEVELOPMENT` runs the *clean core readiness* procedure (for remote ATC in the SAP BTP ABAP environment and S/4HANA 2025 FPS01+): it drops the ABAP Language Version / Allowed Object Types checks and a 'Usage of APIs' check replaces 'Usage of Released APIs,' grading against clean-core Levels A–D rather than a binary pass/fail (SAP also plans a preconfigured `ABAP_CLEAN_CORE_READINESS` with SAP BTP ABAP environment 2605). `PERFORMANCE_DB` concentrates on database-centric performance findings, and `SECURITY_CHECK` runs the Code Vulnerability Analyzer (CVA) checks, which are licence-gated and off unless your system is entitled.

Because each variant answers a different question, mature teams build one custom variant that is a union of the relevant SAP variants, then tune the severities to their own codebase — promoting the findings they will block a transport on to error, and demoting the rest to warning or information. The union variant becomes the single thing the pipeline and every developer runs, so 'green locally' and 'green in CI' mean the same thing.

Key points

  • DEFAULT is broad and release-agnostic — not Clean Core or readiness aware.
  • S4HANA_READINESS_<year> = Simplification + HANA readiness; the suffix tracks the TARGET release (use S4HANA_READINESS_2025 for S/4HANA 2025; 2023 is the prior-release variant).
  • ABAP_CLOUD_DEVELOPMENT_DEFAULT = ABAP Cloud readiness (Restricted ABAP, released-only); ABAP_CLOUD_READINESS measures 'distance to Tier 1' for baselining legacy code.
  • ABAP_CLEAN_CORE_DEVELOPMENT (new 2025, BTP ABAP env + S/4HANA 2025 FPS01+) = clean core readiness, grading against Levels A–D, not pass/fail.
  • PERFORMANCE_DB is DB performance; SECURITY_CHECK is CVA and licence-gated.
  • Recommended setup: copy ABAP_CLOUD_DEVELOPMENT_DEFAULT and add the clean core checks; expose one team union variant with tuned severities as the single source of truth.

Examples

Composing a team union variant

In SCI, create a variant that includes the readiness and cloud checks (plus performance where it matters), then raise the handful you gate transports on to error and leave the rest as warnings — so local and CI runs agree.

Source notes: clean-core-curriculum §8.1

Ask Claude

Build a prompt from this lesson + your question and open a fresh Claude chat with it pre-filled — handy for adapting a before/after pattern to your own object.