5 ATC findings that block your move to ABAP Cloud
The handful of code issues most likely to block your SAP cloud move — flagged by ATC, SAP's code-quality checker — and the official, upgrade-safe replacement for each.
Founder & Principal SAP Consultant
Run ATC with the ABAP_CLOUD_DEVELOPMENT_DEFAULT variant against a typical custom codebase and
you’ll get a wall of findings. It looks overwhelming, but in practice the same
handful of patterns account for most of them. Here are the five we see most, and
the released replacement for each.
1. Direct writes to SAP tables
INSERT / UPDATE / MODIFY / DELETE straight against an SAP-owned table is
the classic Clean Core violation — it bypasses business logic and isn’t allowed
in ABAP Cloud.
Fix: go through the released API. For your own data, model it as a CDS +
RAP business object and change it with EML (MODIFY ENTITIES). For SAP data,
use the released BAPI or RAP service.
2. sy- fields
sy-uname, sy-datum, sy-uzeit and friends aren’t available the same way in
ABAP Cloud.
Fix: the released context APIs — cl_abap_context_info=>get_user_technical_name( ),
cl_abap_context_info=>get_system_date( ), and so on (or the XCO equivalents).
Wrap them behind a small, testable helper so your code never reads sy- directly.
3. Native / dynamic SQL
EXEC SQL, and unbounded dynamic SELECT, are both correctness and security
risks, and neither is cloud-safe.
Fix: use Open SQL and CDS. Where you genuinely need dynamic columns, use a sanitized, allow-listed builder rather than string concatenation.
4. Unreleased API calls
Calling a function module or class that SAP hasn’t released (no C1 contract) means the next upgrade can break you.
Fix: find the released equivalent — or, if one doesn’t exist yet, isolate the call behind a released-wrapper facade so there’s exactly one place to change when SAP releases an alternative.
5. Classic Dynpro / SAP GUI
SM30 maintenance views, module-pool screens and CALL SCREEN have no place in a
clean core.
Fix: rebuild the UI as Fiori Elements on top of a CDS + RAP service. A generator can scaffold the CDS, behavior and service from the table so this is a day, not a quarter.
Where to start
Don’t try to fix everything at once. Score your codebase first (an ATC baseline plus a readiness audit), sort the findings worst-first, and remediate in batches behind your normal transport process. That’s exactly how a Lumivara assessment works.
Written by
Akshay PalimkarAkshay is an SAP ABAP engineer with 15 years across ECC, S/4HANA, RAP and Clean Core. He builds the open-source tools and training he consults with.