ABAP Code Review Skill
SkillDocs & knowledgePerforms structured pre-release security and quality review of SAP ABAP programs across 9 dimensions (SEC, AUTH, DATA, PERF, STD, INTERFACE, CHANGE, COMP, FUNC), producing a formal sign-off-ready Markdown assessment report. Trigger when the user asks to review, audit, assess, or check ABAP code before release — phrases include: 'security review', 'risk check', 'release audit', 'code review', 'check before transport', 'safe to release', or 'can this go to production'; also when a program name (e.g. ZMMR0002) appears alongside 'review', 'check', or 'ready for transport'. Do not use for general ABAP syntax questions, runtime debugging, or performance tuning unrelated to a transport release gate.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the ABAP Code Review Skill skill
What this skill tells your AI
The instructions your AI receives, as published by shrek-abaper/sap-engineering-skill in skills/abap-code-review/SKILL.md and read by ahel’s review.
Performs pre-release security and quality assessment of SAP ABAP programs, producing a formal Markdown report ready for sign-off and circulation.
Invocation
Any message matching the description above will load this skill. A complete invocation with full context:
Review program [PROGRAM_NAME] for release.
Transport: [DEVKXXXXXX], Change description: [one-line business purpose].
Save the report to the reports/ directory.
To include functional completeness checks ([FUNC] dimension), provide the requirements document path or describe the requirements in the conversation.
Step 0 — Load References First
Before reading any ABAP source code, load the following two files in order. Do not load any other files from the references/ directory:
references/REF_ABAP_SECURITY.md— Authority reference for [SEC], [AUTH], and [INTERFACE] dimensionsreferences/REF_CLEAN_ABAP.md— Authority reference for the [STD] dimension
Every [SEC] / [AUTH] / [STD] finding must cite the corresponding rule ID (e.g.
SEC-SQL-1,[E-2]). Findings without a rule ID citation are invalid and must be removed.
If reference files are not accessible (e.g., the agent cannot read from the skill directory): proceed using built-in ABAP knowledge. Record under Scope Limitations that reference files were unavailable; rule IDs must still be cited in findings.
Step 1 — Read Source Code
Retrieve the complete source code of the target program using the appropriate method for your environment:
- Tool-equipped agents: Use the available ABAP source-reading capability (ABAP CLI tool, ADT API, MCP tool, or equivalent) to programmatically read the main program and all INCLUDEs.
- Conversation-based agents / manual sessions: Ask the user to paste the source code directly into the conversation, specifying which INCLUDEs, class methods, or function modules are in scope.
| Object Type | Scope to Read |
|---|---|
| REPORT | Main program + all INCLUDEs |
| Global Class | Class definition + all METHOD implementations |
| Function Module | Target FM + other FMs in the same function group |
| Enhancement / BAdI | Enhancement Spot definition + all active implementations |
Reading order: main program / class definition → INCLUDEs (in order of appearance) → METHODs (one by one).
Objects that cannot be retrieved: record in the report under Scope Limitations, mark as "unreviewed", and do not assume they are safe.
Step 2 — Analyze (9 Dimensions)
Complete all 9 dimensions in the order listed below. No dimension may be skipped (if no issues are found, state "No issues found").
[SEC] Security Vulnerabilities
Reference: REF_ABAP_SECURITY.md. Scan by priority:
Priority 1 (scan immediately):
EXEC SQL → SEC-SQL-2
GENERATE SUBROUTINE POOL → SEC-CODE-1
INSERT REPORT → SEC-CODE-2
CALL 'SYSTEM' / SXPG_* → SEC-OS-1/2/3
WHERE ( <variable> ) → SEC-SQL-1
DESTINATION ( <variable> ) → SEC-RFC-1
Priority 2 (important checks):
cl_sql_statement → verify set_param parameterization is used
OPEN DATASET → path source + SY-SUBRC check
CALL FUNCTION DESTINATION → RFC destination source
literals containing password/key/token → SEC-CRED-1
[AUTH] Authorization & Access Control
Reference: REF_ABAP_SECURITY.md → AUTH-MISS-, AUTH-BYP-
High-risk tables (AUTHORITY-CHECK required before read/write): BKPF/BSEG, MKPF/MSEG, VBAK/VBAP, EKKO/EKPO, PA*/HRP*
Check: ① AUTHORITY-CHECK present before sensitive table operations → ② SY-SUBRC checked immediately after → ③ no SY-UNAME hardcoded bypass → ④ RFC FMs have authorization checks
Special rule: Any HIGH finding in [SEC] or [AUTH] is treated as CRITICAL for the release decision (NO-GO).
[DATA] Data Integrity & Exception Handling
Reference: REF_CLEAN_ABAP.md [E-2] [E-3]
Check: SY-SUBRC after CALL FUNCTION → SY-SUBRC after READ TABLE / SELECT SINGLE → SY-SUBRC after OPEN DATASET → ENQUEUE lock before write operations → COMMIT WORK not inside a loop → ROLLBACK WORK on error paths → no empty CATCH blocks that swallow exceptions
[PERF] Performance Risks
Reference: REF_CLEAN_ABAP.md [T-1] [T-2] [T-3]
Check: SELECT inside LOOP (→ [T-2], CRITICAL for large tables) → SELECT * without projection (→ [T-3]) → full table scan (no WHERE clause) → READ TABLE WITH KEY inside LOOP (→ [T-1], switch to SORTED/HASHED) → high-volume tables (BKPF/BSEG/MKPF/MSEG) without row-count protection
[STD] ABAP Code Standards
Reference: REF_CLEAN_ABAP.md [L-] [C-] [N-] [M-]
Check deprecated statements ([L-3]), hardcoded business values such as bukrs/werks/mandt ([C-3], typically HIGH in enterprise settings), overly long methods ([M-2], flag if > 20 statements), commented-out code blocks ([CM-3]), Unicode compatibility
[INTERFACE] Interface & Integration Risks
Reference: REF_ABAP_SECURITY.md SEC-RFC-, SEC-WEB-
Check: RFC FM contains dialog messages MESSAGE TYPE A/I/W (→ SEC-RFC-3) → RFC FM parameters have type declarations → EXCEPTIONS fully declared → CALL FUNCTION DESTINATION has timeout configured → OData DPC Extension has backend authorization check (→ SEC-WEB-2)
[CHANGE] Change Impact Assessment
Assess: affected database tables (list all read/write/delete operations) → whether SAP standard objects are modified → whether the program shares INCLUDEs or FMs with other programs → Transport prerequisites and cross-system dependencies
[COMP] Compliance & Audit Trail
Check: PII data reads/exports have a compliance basis → FI/CO postings have dual-control → master data changes written to CDHDR/CDPOS → program logs executor/timestamp/parameters → no single person can both initiate and approve (SoD path)
[FUNC] Functional Completeness (Optional)
Execute only when the user provides a requirements specification; otherwise state the reason for skipping in the report.
If executed: verify program entry points cover business scenarios → boundary condition handling (null/zero/oversized datasets) → core business logic matches requirements → calculation logic is accurate → output fields are complete → integration interfaces transmit data completely
Step 3 — Severity Classification
| Level | Label | Release Impact |
|---|---|---|
| 🔴 | CRITICAL | Blocks release |
| 🟠 | HIGH | Should block release |
| 🟡 | MEDIUM | Fix in next sprint |
| 🟢 | LOW | Advisory |
| ℹ️ | INFO | No action required |
When severity is uncertain, choose the higher level.
Step 4 — Release Decision
CRITICAL finding present → NO-GO
HIGH finding in [SEC] or [AUTH] → NO-GO (special rule)
HIGH finding in other dimensions → CONDITIONAL GO (requires tech lead sign-off)
MEDIUM / LOW / INFO findings only → GO
Step 5 — Generate Report
Load references/REPORT_TEMPLATE.md and generate the report by strictly following the template structure.
Report language: titles and rule references in English; risk descriptions and remediation recommendations in English.
File naming: ABAP_REVIEW_[PROGRAM_NAME]_[YYYYMMDD].md
When a CRITICAL finding is present, prefix: CRITICAL_ABAP_REVIEW_[PROGRAM_NAME]_[YYYYMMDD].md
Save to the reports/ directory specified by the user and confirm the file path upon completion.
If file system write access is unavailable: output the complete report as formatted Markdown in the conversation. Inform the user that no file was saved and suggest they copy the output manually.
Behavior Rules
| Rule | Requirement |
|---|---|
| References first | Step 1 must not begin until Step 0 is complete |
| Evidence-first | Every finding must include a real code snippet (≤ 15 lines); findings without code evidence are invalid |
| Rule citation | [SEC] / [AUTH] / [STD] findings must cite a rule ID |
| No false negatives | Objects not retrieved → mark as "partially reviewed"; never write "no issues found" for unread objects |
| No duplication | Same pattern found in multiple locations → one finding listing all locations |
| FUNC gate | No requirements document → skip and state reason; do not infer requirements independently |
Signals
- GitHub stars
- 35
- Forks
- 15
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
abap-code-review- Source
- github.com/shrek-abaper/sap-engineering-skill