ABAP Cloud and Released APIs
RAP / CDS / ODataintermediate

ABAP Cloud Part 4: ATC Readiness — Finding and Fixing Unreleased Usage

Key takeaway

Use ATC to measure and improve ABAP Cloud readiness: choose the right check variant, run it on packages, read findings, fix or document them, and keep new code clean with transport and CI checks.

Explanation

📌 KEY POINTS
✅ ATC (ABAP Test Cockpit) finds unreleased API usage and forbidden statements automatically.

✅ Use the cloud readiness / ABAP Cloud check variant defined in your system.

✅ Fix findings or document them with exemptions — never ignore them silently.

💡 Make ATC a quality gate at transport release so new violations cannot enter.

━━━━━━━━━━━━━━━━━━━━
▶ WHERE WE ARE

Part 3 showed how to replace dependencies. This part shows how to find them and keep new ones out.

━━━━━━━━━━━━━━━━━━━━
▶ 1. WHAT ATC CHECKS FOR ABAP CLOUD

  • Use of SAP objects that are not released for the required contract (e.g. tables, FMs, classes).
  • Statements not allowed in ABAP for Cloud Development (WRITE, SUBMIT, dynpro, native SQL, etc.).
  • Obsolete or deprecated API usage (with successor hints).
  • Additional quality checks configured in the variant (performance, security).

━━━━━━━━━━━━━━━━━━━━
▶ 2. CHECK VARIANTS

SAP delivers check variants for cloud development and readiness (for example variants named along the lines of ABAP_CLOUD_DEVELOPMENT_DEFAULT or ABAP_CLOUD_READINESS; availability depends on release). Your quality team usually defines a global default variant. Use:

  • the readiness variant to assess existing Standard ABAP code,
  • the cloud development variant for code that is already ABAP for Cloud Development.

━━━━━━━━━━━━━━━━━━━━
▶ 3. RUNNING ATC

  • In ADT: right-click a package or object → Run As → ABAP Test Cockpit With… → choose the variant.
  • Results appear in the ATC Problems view: priority, message, object, line, and often a quick fix or successor.
  • For mass analysis: ATC runs over many packages scheduled by the quality team, with results in the ATC Result Browser.

━━━━━━━━━━━━━━━━━━━━
▶ 4. READING A FINDING

Example: "Use of object VBAK not permitted (not released)". Double-click to jump to the code; check the successor information; plan the replacement (Part 3).

━━━━━━━━━━━━━━━━━━━━
▶ 5. EXEMPTIONS

If a finding cannot be fixed now (e.g. tier 3 legacy code), request an exemption with a reason and validity. Exemptions are approved by the quality team and visible in reports — they are technical debt, not a solution.

━━━━━━━━━━━━━━━━━━━━
▶ 6. QUALITY GATES

  • ATC check on transport release: blocks transports with priority 1/2 findings.
  • CI pipelines (e.g. with abapGit/gCTS and ATC APIs) run ATC for every change.
  • Dashboards track findings per package over time.

━━━━━━━━━━━━━━━━━━━━
▶ STEP BY STEP

  1. Run ATC with the readiness variant on one custom package.
  2. Export findings; group by dependency.
  3. Fix the top five; re-run; compare counts.
  4. Enable ATC checks on transport release for new packages.

✅ CHECKPOINT: you can measure cloud readiness and prevent regressions.

Code example

ABAP Code
" ===== Typical ATC findings (cloud readiness) and fixes ===== " Finding: "Use of DB table VBAK not permitted - not released"" SELECT vbeln FROM vbak ..." Fix:SELECT SalesOrder FROM i_salesorder INTO TABLE @DATA(orders) UP TO 10 ROWS. " Finding: "Statement WRITE not permitted in ABAP for Cloud Development"" WRITE: / 'Done'." Fix: console class output or RAP service" out->write( 'Done' ).            " in if_oo_adt_classrun~main " Finding: "Function module NUMBER_GET_NEXT not released"" Fix: cl_numberrange_runtime=>number_get( ... ) " Finding: "System field SY-UNAME: use of release-restricted system field"" Fix:DATA(user) = cl_abap_context_info=>get_user_technical_name( ). " ===== Running ATC in ADT =====" Package ZPR -> Run As -> ABAP Test Cockpit With... -> choose variant"   (cloud readiness variant for Standard ABAP code,"    cloud development variant for ABAP Cloud code)" -> ATC Problems view: priority | message | object | line | quick fix " ===== Tracking list =====" Package | P1 findings | P2 | P3 | Exemptions | Trend" ZPR     | 12 -> 0     | 30 -> 8 | ... | 2 (tier 3, until 2027-06) | down

Real project scenario

A company started an ABAP Cloud program with a readiness ATC run over 1,200 custom objects: 18,000 findings. The number looked hopeless until the team grouped them: 70% came from fewer than 40 dependencies (a handful of tables, a few FMs and WRITE statements).
They created a remediation list per dependency, enabled ATC as a transport gate for all new packages (so no new findings could appear), and reduced findings by half within two quarters. Exemptions were allowed only for tier 3 code with a documented sunset date.

Common mistakes

  • Running ATC once and never again.
  • Using the wrong check variant for the code's language version.
  • Fixing findings one by one instead of grouping by dependency.
  • Granting exemptions without reason or end date.
  • No transport gate, so new violations keep arriving.

Best practices

  • Define a default ATC variant for ABAP Cloud readiness.
  • Group findings by dependency and fix the biggest groups first.
  • Use ATC as a transport and CI quality gate.
  • Treat exemptions as documented, time-limited debt.
  • Track findings per package over time.

Interview angle

Questions: "How do you check ABAP Cloud readiness?", "What does ATC find?", "How do you keep new code clean?"
Strong answer: run ATC with the cloud readiness variant on Standard ABAP code and the cloud development variant on ABAP Cloud code; findings cover unreleased objects, forbidden statements and deprecated APIs with successors; group by dependency, remediate, use documented exemptions only for legacy tiers, and enforce ATC as a transport/CI gate.

Practice this lesson

Quick check

1. An ATC readiness run returns 18,000 findings. What is the most effective first step?

2. Which statement is allowed in ABAP for Cloud Development?

3. How do you prevent new cloud readiness violations while old ones are being fixed?

Interview questions

1. How do you migrate a classic report that reads VBAK and calls a BAPI to ABAP Cloud?

Answer it in your own words first, then compare.

2. How do you use ATC to drive ABAP Cloud readiness in a large custom code base?

Answer it in your own words first, then compare.

Practice more with Interview AI →

Reference-verified: the steps are checked against official SAP documentation and tutorials, and object and field names in the sample code are checked for consistency. The code has not been compiled or run on an SAP system by ERPClimb. Syntax marked release-dependent varies by SAP release, so check it in your own system.

More lessons in this topic

Interview questions on this topic

Related SAP topics