Fixing ATC Variant ABAP_CLEAN_CORE_DEVELOPMENT: Remediation Playbook
In SAP S/4HANA (Cloud Private Edition, Public Edition, and On-Premise 2023+), the ABAP Test Cockpit (ATC) enforces the official check variant ABAP_CLEAN_CORE_DEVELOPMENT.
When transports are released, this variant triggers Priority 1 and Priority 2 findings, blocking transport release and preventing technical debt from entering production.
🚨 The 4 Most Common ATC Clean Core Findings
| Finding Code | Root Cause | Severity | Clean Core Level |
|---|---|---|---|
CLEAN_CORE_DIRECT_DB |
Direct SELECT / UPDATE on non-released SAP standard tables (VBAK, BSEG, MARA) |
Priority 1 (Blocker) | Level D (Hard Anti-Pattern) |
CLEAN_CORE_UNRELEASED_API |
Calling function module or class without release contract C1 (e.g. BAPI_SALESORDER_SIMULATE) |
Priority 1 (Blocker) | Level C (Legacy Debt) |
CLEAN_CORE_OBSOLETE_SYNTAX |
Using obsolete procedural constructs (TABLES, FORM ... ENDFORM, Dynpro CALL SCREEN) |
Priority 2 (High) | Level C (Legacy Debt) |
CLEAN_CORE_IMPLICIT_ENH |
Implicit source code enhancements in standard SAP function pools or classes | Priority 1 (Blocker) | Level D (Hard Anti-Pattern) |
🛠️ Step-by-Step Remediation Workflows
1. Remediating Direct Database Access (CLEAN_CORE_DIRECT_DB)
❌ Forbidden Monolith (Fails ATC Check)
" Fails ATC: Direct read on classic table VBAK
SELECT vbeln, erdat, netwr
FROM vbak
INTO TABLE @DATA(lt_orders)
WHERE vkorg = '1000'.
✅ Clean Core Compliant Solution (Passes ATC Variant)
Replace raw standard tables with released SAP CDS View Entities exposing the Contract C1 (Use in Cloud Development):
" Passes ATC: Uses C1-released CDS Interface View
SELECT FROM I_SalesOrderBasic
FIELDS SalesOrder, CreationDate, TotalNetAmount, TransactionCurrency
WHERE SalesOrganization = '1000'
INTO TABLE @DATA(lt_orders).
2. Remediating Unreleased BAPI Calls (CLEAN_CORE_UNRELEASED_API)
When an official C1-released RAP business object or API exists in the Cloudification Repository, replace the BAPI with Entity Manipulation Language (EML).
When standard SAP has not yet released a public C1 API, do not attempt hacky pseudo-comments or raw suppression. Instead, implement a Tier 2 Quarantine Wrapper:
┌─────────────────────────────────────────────────────────────┐
│ Tier 1: ABAP Cloud Application (Language Version 5) │
│ - Strict ATC: Zero Clean Core findings │
│ - Calls strictly released custom interface │
└───────────────────────────┬─────────────────────────────────┘
│ Calls zif_tier2_sales_wrapper
▼
┌─────────────────────────────────────────────────────────────┐
│ Tier 2: Quarantine Wrapper (Language Version: Standard) │
│ - Isolated Package: Z_TIER2_QUARANTINE │
│ - Encapsulates classic BAPI_SALESORDER_SIMULATE │
│ - Applies bounded ATC Exemption with documented sunset ADR │
└─────────────────────────────────────────────────────────────┘
Step 1: Create the Clean Interface in Customer Namespace
INTERFACE zif_tier2_sales_wrapper PUBLIC.
TYPES:
BEGIN OF ty_order_input,
sales_org TYPE c LENGTH 4,
distr_chan TYPE c LENGTH 2,
doc_type TYPE c LENGTH 4,
END OF ty_order_input.
METHODS simulate_order
IMPORTING is_input TYPE ty_order_input
RETURNING VALUE(rv_valid) TYPE abap_bool
RAISING cx_clean_core_quarantine_error.
ENDINTERFACE.
Step 2: Implement the Isolated Quarantine Class
CLASS zcl_tier2_sales_quarantine DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES zif_tier2_sales_wrapper.
ENDCLASS.
CLASS zcl_tier2_sales_quarantine IMPLEMENTATION.
METHOD zif_tier2_sales_wrapper~simulate_order.
DATA: ls_header TYPE bapisdhead.
ls_header-doc_type = is_input-doc_type.
" Isolated call inside Tier 2 quarantine package
CALL FUNCTION 'BAPI_SALESORDER_SIMULATE'
EXPORTING order_header_in = ls_header.
rv_valid = abap_true.
ENDMETHOD.
ENDCLASS.
🏛️ ATC Exemption Governance for Clean Core
When registering an ATC exemption for Tier 2 quarantine objects:
1. Scope Exemption strictly to Package: Apply exemptions only to packages matching Z_TIER2_*. Never apply global exemptions to application development packages (Z_TIER1_*).
2. Mandatory Sunset Date: Associate every Tier 2 exemption with an internal Architecture Decision Record (ADR) and a review date aligned with the next SAP S/4HANA Feature Package Stack (FPS).
3. Automated CI/CD Verification: Run automated ATC checks in your GitLab CI/CD pipeline before merging to release branches.
📚 Complete Architecture Guide & Enterprise Suite
Need the complete catalogue of 61 production-grade code listings, 40 Retina diagrams, and step-by-step RAP implementations?
- Order on Amazon: The Definitive Guide to ABAP Cloud & Clean Core Extensibility ($12.99 Kindle / $19.99 Paperback)
- Get the Complete Digital Suite on Gumroad: The Complete Clean Core & SAP BTP Enterprise Suite (€9.80 with code FLASH80)
Take Your Clean Core Architecture to Production
This cheat sheet is an excerpt from The Definitive Guide to ABAP Cloud & Clean Core Extensibility. Get all 40 Retina architecture diagrams, 61 production-grade code patterns, and the complete BTP companion.
14-day 100% money-back guarantee • Instant digital delivery • Corporate VAT invoice provided