ATC Checks in an S/4HANA Conversion
ATC checks in an S/4HANA conversion are ABAP Test Cockpit runs against a system's custom code base using SAP-delivered check variants that flag simplification-item breaks, deprecated objects, and HANA-unsafe SQL before or during a technical conversion. They produce a prioritized worklist of findings that must be remediated so custom code compiles and runs correctly after the target release goes live.
This page covers how the ABAP Test Cockpit is applied specifically during an S/4HANA custom code migration, distinguishing it from generic code quality analysis. It focuses on which findings actually block a conversion, how to triage a worklist that can run into thousands of items, and where teams lose time reacting to noise instead of real breaks.
Published 16 Sept 2026· 1,419 words
What it is
The ABAP Test Cockpit is a static and semi-dynamic code analysis engine that runs a configured check variant against a scope of custom objects and reports findings by priority. In a conversion project it is pointed at a check variant that SAP ships specifically for S/4HANA readiness, which layers simplification-item checks, obsolete object usage, and syntax that no longer compiles on top of the generic code quality checks the tool always runs. The one structural fact that causes most confusion: ATC does not know what your code actually does at runtime, only what it references statically. A finding means the object touched something that changed or disappeared in the target release, not that the code will fail in production. Two custom programs referencing the same deprecated table can carry the same finding and have wildly different real-world risk, one dead since 2014, one running in a nightly batch job that posts financial documents.
When to use it
Run the conversion-specific ATC check variant as soon as the custom code scope is fixed, ideally well before the technical conversion window, so remediation happens against a stable baseline rather than in the middle of a cutover weekend. It is the right tool for finding syntax breaks, removed data elements, and simplification-item collisions across the entire Z and Y namespace at once, something no amount of manual code review reaches reliably. It is the wrong tool for judging whether code should exist at all — that is a usage and business-relevance question, answered by usage statistics and functional owners, not by a static scanner. It is also the wrong tool to run once and forget; code keeps changing during a multi-month project, and a check run six months old tells you nothing about the current state of the codebase.
How it fits the stack
Above ATC sits the overall custom code migration process for the conversion project: scoping which objects are in play, deciding remediation priority, and tracking sign-off. ATC itself sits above the raw compiler and syntax check, extending them with rule sets that understand S/4HANA-specific deprecations that a plain syntax check would miss entirely. Below it, results depend on the check variant definition and on the object list fed in, usually derived from a where-used or usage analysis so that dead code does not inflate the worklist. It supersedes ad hoc manual review of custom code against a list of simplification items, and it complements, rather than replaces, functional regression testing — a program can pass every ATC check and still produce the wrong result once the underlying business logic has changed in the target release.
A worked example
A custom finance report reads material valuation data directly from a classic MM table using a native SQL statement, then does arithmetic assuming a specific field length. Running the conversion check variant against this program produces two findings: one flags the direct table read against an object affected by a simplification item, since the underlying data model moved and the old table is now a compatibility view with different semantics; the other flags the field-length assumption as a data type change risk. The developer traces both findings to the same root cause, rewrites the read using the released access method for that data, and adjusts the arithmetic to use the new field definition. Re-running ATC on that single object clears both findings. The remediation is logged against the object in the worklist, the functional consultant re-tests the report against a converted sandbox, and the finding is closed only after that functional check passes, not merely because ATC shows green.
How to choose
- Local versus remote ATC: local runs are fine for a single system doing a one-off conversion; remote ATC, run from a central hub against multiple satellite systems, is worth setting up when several systems in a landscape convert on similar timelines, because it avoids repeating check variant setup and gives one consolidated worklist.
- Scope by usage, not by namespace: feeding every Z and Y object into the check variant produces a worklist padded with dead code; scoping by recent usage or by an authoritative custom code inventory keeps the findings list focused on what actually runs.
- Priority by finding type, not by count: an architect asks which findings represent hard compile breaks versus soft quality warnings before assigning developer time, because a thousand low-priority style findings are not the same emergency as fifty objects that will not activate on the target release.
- Exemption versus fix: an exemption pragma is appropriate for a documented false positive on code confirmed to be functionally unaffected; it is the wrong call when used to make a worklist look clean before a milestone review, and that distinction has to be a named policy, not left to individual developer judgement.
- Timing against the conversion window: findings tied to simplification items should be resolved before the technical conversion, since some of them represent objects that will not activate afterward; generic quality findings can often wait for a later remediation sprint without blocking go-live.
Common pitfalls
- Running the check variant once at project kickoff and treating the worklist as final, while the codebase keeps changing underneath it for the following months.
- Scoping the run against the entire custom namespace instead of against objects with confirmed recent usage, which turns a manageable worklist into thousands of findings, most of them on code nobody runs.
- Reflexively suppressing findings with an exemption pragma to hit a milestone metric, which passes the check and defers the real break to production cutover weekend.
- Treating all findings as equal severity and assigning them round-robin to whichever developer has capacity, instead of triaging by whether the finding represents a compile-blocking simplification-item break or a cosmetic quality warning.
- Fixing a finding in isolation without functional re-test, especially where the fix changes a table access pattern or a data type; ATC confirms the code compiles and references valid objects, it does not confirm the business result is unchanged.
- Forgetting that remote check results depend on the check variant version staying in sync across hub and satellite systems; a stale variant on one side produces findings that do not match what a later local run reports, which erodes trust in the worklist.
ECC, S/4HANA and clean core
ATC with the conversion-specific check variant is the standard way custom code gets validated for an S/4HANA on-premise conversion, and it remains relevant afterward as part of ongoing custom code governance, since new simplification items and deprecations can appear with later releases even after go-live. For ABAP Cloud and steampunk-style extensions, the equivalent discipline shifts toward checking against the released API surface rather than against a conversion-specific variant, because the custom code in that model is already constrained to supported interfaces by construction. Using ATC as a one-time gate rather than a recurring governance check is increasingly discouraged as organizations move toward a clean core posture, where custom code volume and risk are tracked continuously rather than only at conversion milestones.
Whose problem this is
The ABAP developer runs the check variant, triages findings, and fixes code. The technical architect or conversion lead defines check variant scope, exemption policy, and remediation priority across the worklist. The functional consultant confirms that a code fix has not changed business behavior. Handover to functional test includes the object list, the fix description, and confirmation that ATC shows the finding closed, not just suppressed.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-technical-topics/atc-checks-in-an-s-4hana-conversionERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.