SAP ATC Checker
This skill performs SAP ATC (ABAP Test Cockpit) checks using any configured check variant to validate ABAP code quality, compliance, and best practices.
What is SAP ATC?
SAP ATC (ABAP Test Cockpit) is SAP's central framework for static code analysis of ABAP programs. It provides:
- Code Quality Checks: Syntax, naming conventions, complexity metrics
- Performance Checks: Inefficient database access, unnecessary loops, buffering issues
- Security Checks: SQL injection, authorization vulnerabilities, XSS risks
- Compliance Checks: Clean Core, cloud readiness, deprecated feature usage
- Custom Checks: Organization-specific rules via custom check variants
ATC checks are run via check variants -- named configurations that bundle specific checks together. Different variants target different concerns.
Common ATC Check Variants
| Variant | Purpose | Typical Use Case |
|---|---|---|
| DEFAULT | System default checks | General code quality gate |
| CLEAN_CORE | Clean Core compliance -- "Usage of APIs" check | Ensuring extensibility compliance |
| ABAP_CLOUD_DEVELOPMENT_DEFAULT | ABAP Cloud Readiness -- "Usage of Released APIs" check | Cloud migration checks |
| S4HANA_READINESS | S/4HANA migration readiness | Pre-migration assessment |
| ZABAP_CLOUD_DEVELOPMENT | ABAP Cloud development (Z-variant) | System-specific cloud checks |
| (Custom) | Organization-specific rules | Internal standards enforcement |
Note: Available variants depend on your SAP system configuration. Run node --import tsx list-check-variants.ts to discover what is available on your system. The variants above are from SAP documentation and live-verified systems; your system may have different or additional variants.
Cloud Readiness vs Clean Core: The Cloud Readiness check ("Usage of Released APIs") and Clean Core check ("Usage of APIs") are related but distinct check categories. SAP provides a migration tool (zatc_cloud_rdnss_2_cln_core, SAP_BASIS 7.58+) to migrate exemptions from Cloud Readiness to Clean Core checks. See SAP/abap-atc-cr-cv-s4hc-tools for details.
ATC Priority Levels
ATC findings are classified by priority (severity). Priority 1 and 2 can both block transport release depending on system configuration.
| Priority | SAP Severity | Description | Action |
|---|---|---|---|
| 1 | Very High (Blocker) | Critical issue, blocks transport | Must fix before transport |
| 2 | High (Error) | Significant issue, may block transport | Fix before transport |
| 3 | Medium (Warning) | Non-critical, triggers notifications | Review and plan remediation |
| 4 | Low (Information) | Minor suggestion, informational | Optional improvement |
ATC Check Workflow (ADT API)
The ATC check follows a 5-step workflow via the SAP ADT (ABAP Development Tools) REST API:
- Create Worklist - POST to
/sap/bc/adt/atc/worklists?checkVariant=<VARIANT> - Start Run - POST to
/sap/bc/adt/atc/runs?worklistId=<ID>with object references - Poll Status - GET
/sap/bc/adt/atc/runs/<runId>until finished - Get Results - GET
/sap/bc/adt/atc/worklists/<ID>for findings - Get Documentation - GET
/sap/bc/adt/documentation/atc/documents/...per finding
Supported Object Types
| Type Code | Object Type | ADT URL Path |
|---|---|---|
| CLAS, CLAS/OC, CLAS/I | Class | oo/classes |
| INTF, INTF/OI | Interface | oo/interfaces |
| PROG/P | Program | programs/programs |
| PROG/I | Include | programs/includes |
| FUGR, FUGR/F | Function Group | functions/groups |
| FUNC | Function Module | functions/functions |
| DDLS, DDLS/DL | CDS View | ddic/ddl/sources |
| BDEF, BDEF/BD | Behavior Definition | bo/behaviordefinitions |
| SRVD | Service Definition | ddic/srvd/sources |
| SRVB | Service Binding | businessservices/bindings |
| TABL, TABL/DT | Table | ddic/tables |
| STRU | Structure | ddic/structures |
| DTEL | Data Element | ddic/dataelements |
When to Use This Skill
Use this skill when you need to:
- Run ATC checks with any check variant (not just Clean Core)
- Validate ABAP code quality before transport
- Audit custom code against specific check categories
- Discover available check variants on an SAP system
- Batch-check entire packages for code quality
- Generate code quality reports for review
For Clean Core-specific checks, the CLEAN_CORE variant provides Clean Core compliance checking. See the Workflows section in README.md for recommended assessment sequences.
How This Skill Works
- Reads SAP connection details from a
.envfile (searches project root) - Auto-detects object type by querying the SAP system
- Resolves check variant -- uses specified variant, discovers system default, or falls back to DEFAULT
- Executes ATC check via SAP ADT API
- Retrieves detailed documentation for each finding
- Formats results with priority levels, line numbers, and actionable recommendations
Available Scripts
1. Single Object Check: run-atc-check.ts
# With default variant
node --import tsx run-atc-check.ts ZCL_MY_CLASS
# With specific variant
node --import tsx run-atc-check.ts ZCL_MY_CLASS --variant S4HANA_READINESS
# Display only (no file save)
node --import tsx run-atc-check.ts ZCL_MY_CLASS --variant ABAP_CLOUD_DEVELOPMENT --no-save
Options:
--variant, -V NAME- Check variant (default: system default)--output, -o FILE- Custom output file path--no-save- Do not save report--env PATH- Path to .env file--help, -h- Show help
2. List Check Variants: list-check-variants.ts
# Display available variants
node --import tsx list-check-variants.ts
# Output as JSON
node --import tsx list-check-variants.ts --json
# Use custom .env file
node --import tsx list-check-variants.ts --env /path/to/.env
Options:
--json- Output as JSON--env PATH- Path to .env file--help, -h- Show help
3. Batch Parallel Check: batch-atc-parallel.ts
# Check package with default variant
node --import tsx batch-atc-parallel.ts ZPACKAGE
# Check with specific variant and concurrency
node --import tsx batch-atc-parallel.ts ZPACKAGE --variant S4HANA_READINESS --concurrency 5
# Check from file
node --import tsx batch-atc-parallel.ts objects.txt --variant ABAP_CLOUD_DEVELOPMENT --max 50
# Initialize progress tracking for large packages
node --import tsx batch-atc-parallel.ts ZPACKAGE --init-progress --variant CLEAN_CORE
Options:
--variant, -V NAME- Check variant (default: system default)--concurrency N- Parallel checks (default: auto, range: 3-10)--max N- Maximum objects to process--init-progress- Initialize progress tracking--with-docs- Include detailed documentation (slower)--env PATH- Path to .env file--help, -h- Show help
Prerequisites
- Node.js >= 20 and npm installed
tsxpackage (will be installed if needed)- Network access to SAP system
- SAP user with ATC execution authorization:
S_RFCfor ADT API accessS_DEVELOP(activities 03, 16) for code analysisS_Q_GOVERN(activity 31,ATC_OTYPGO01) -- only needed for exemption approval
- A
.envfile with SAP connection details
Environment File Format
Create a .env file in your project root with:
# Required
SAP_HOST=your-sap-host.com
SAP_CLIENT=100
SAP_USERNAME=YOUR_USERNAME
SAP_PASSWORD=YOUR_PASSWORD
# Optional
SAP_SID=ABC
SAP_INSTANCE_NUMBER=00
SAP_LANGUAGE=EN
SAP_SECURE=true
Skill Invocation Instructions
When the user invokes this skill, follow these steps:
Step 1: Check for .env File
Check if a .env file exists in the project root:
ls -la .env
- If found: Proceed to Step 2
- If not found: Ask the user for the path to their
.envfile
Step 2: Get Object Name and Variant
Ask the user:
- "Which ABAP object would you like to check?"
- "Which ATC check variant? (leave blank for system default, or specify e.g., CLEAN_CORE, S4HANA_READINESS, ABAP_CLOUD_DEVELOPMENT_DEFAULT)"
Step 3: Install Dependencies (if needed)
npm install
Step 4: Execute the ATC Check
node --import tsx run-atc-check.ts <OBJECT_NAME> --variant <VARIANT>
Or without variant (uses system default):
node --import tsx run-atc-check.ts <OBJECT_NAME>
Step 5: Interpret Results
The script outputs:
- Connection Status: SAP system connection progress
- Variant Resolution: Which check variant is being used
- Object Discovery: Object type detection
- ATC Execution Progress: 5-step workflow with status
- Summary: Count of errors, warnings, and info messages
- Detailed Findings: Each finding with priority, line number, check ID, quickfix availability
Step 6: Present Results to User
If No Findings:
ATC Check Passed!
The object <OBJECT_NAME> has no findings with variant <VARIANT>.
If Findings Exist:
ATC Check Results for <OBJECT_NAME> (Variant: <VARIANT>)
Summary:
- Errors: X
- Warnings: Y
- Info: Z
Errors:
1. [Description]
- Line: X
- Check ID: Y
- Priority: 1 - Very High (Blocker)
- Quickfix: automatic/manual/none
[Continue for all findings...]
Next Steps:
- Address all errors before transport
- Review warnings for remediation planning
- Consider info findings for best practices
Troubleshooting
Connection Failures:
- Verify
.envfile credentials - Check network access to SAP system
- Ensure user has ATC authorization (
S_RFC,S_DEVELOPactivities 03/16)
Object Not Found:
- Verify object name spelling (case-insensitive)
- Ensure object exists in the target SAP client
Variant Not Found:
- Run
list-check-variants.tsto see available variants - Check with SAP Basis team for variant configuration
- Fall back to DEFAULT variant
No CSRF Token:
- SAP system may not support ADT services
- Check SAP system version (requires NetWeaver 7.5+)
This skill is self-contained -- all SAP ADT API calls are made directly by the TypeScript scripts. No MCP server required.