Clean Core 2 min read

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.

Akshay Palimkar
Akshay Palimkar

Founder & Principal SAP Consultant

Abstract teal and navy illustration of a code-quality checklist

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.

Akshay Palimkar

Written by

Akshay Palimkar

Akshay 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.