abap-code-review-helpe…
Primary correctness and runtime-safety review guidance for ABAP reports, classes, function modules, enhancements, BAPIs,…
Generate a comprehensive SAP System Personality Report. Analyzes custom code landscape, functional footprint, development activity, health metrics, and package breakdown. Use when a user asks to characterize a system, understand a system, get a system overview, system report,
$ npx -y skills add marcellourbani/vscode_abap_remote_fs --skill sap-system-personality-report --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sap-system-personality-reportContext preview
The summary Claude sees to decide when to auto-load this skill.
Generate a comprehensive SAP System Personality Report. Analyzes custom code landscape, functional footprint, development activity, health metrics, and package breakdown. Use when a user asks to characterize a system, understand a system, get a system overview, system report,
name: sap-system-personality-report description: Generate a comprehensive SAP System Personality Report. Analyzes custom code landscape, functional footprint, development activity, health metrics, and package breakdown. Use when a user asks to characterize a system, understand a system, get a system overview, system report, system personality, or "what does this system do?" Collects data via SQL queries and presents results in a structured webview. argument-hint: '[connectionId of the SAP system to analyze]' user-invocable: true disable-model-invocation: false
Generate a rich, structured report that characterizes an SAP system in human-readable terms. You will collect data by running SQL queries, then present the results in a webview table AND provide a narrative AI summary.
**CRITICAL:** Before running ANY query, call `abapfs_get_sql_syntax` to understand ABAP SQL syntax. Use `get_object_lines` to check table structures before running SQL queries.
**CRITICAL:** All queries must use ABAP SQL syntax (e.g., `ORDER BY field DESCENDING` not `DESC`). Use the `abapfs_run_sql_query` tool with `displayMode: "internal"` to collect data, then assemble final results into a `displayMode: "ui"` call.
---
Get basic system information first. Use the `abapfs_get_sap_system_info` tool — it returns system type (S/4HANA vs ECC), release, timezone, and client details. No SQL needed for this step.
---
Run these queries to count custom objects. Use `displayMode: "internal"` with `rowRange: {start: 0, end: 5}` since we only need counts.
**Run all of these in parallel** (they are independent):
SELECT COUNT(*) AS CNT FROM SEOCLASS WHERE CLSNAME LIKE 'Z%' OR CLSNAME LIKE 'Y%'
**NOTE:** The `SEOINTERF` table does NOT exist in S/4HANA. Use TADIR instead:
SELECT COUNT(*) AS CNT FROM TADIR WHERE PGMID = 'R3TR' AND OBJECT = 'INTF' AND OBJ_NAME LIKE 'Z%'
Then separately for Y:
SELECT COUNT(*) AS CNT FROM TADIR WHERE PGMID = 'R3TR' AND OBJECT = 'INTF' AND OBJ_NAME LIKE 'Y%'
Sum both counts.
**CRITICAL:** The TRDIR table contains ALL program types (reports, includes, class pools, etc.). Using a raw count is very misleading since includes (SUBC='I') dominate the count. Always break down by SUBC field:
SELECT SUBC, COUNT(*) AS CNT FROM TRDIR WHERE NAME LIKE 'Z%' OR NAME LIKE 'Y%' GROUP BY SUBC ORDER BY CNT DESCENDING
SUBC values: '1'=Executable Reports, 'I'=Includes, 'M'=Module Pools, 'S'=Subroutine Pools, 'K'=Class Pools, 'J'=Interface Pools, 'X'=XSLT Programs.
In the final report, present these as separate line items:
Omit class pools (K) and interface pools (J) from the report since those are already counted under Classes and Interfaces.
SELECT COUNT(*) AS CNT FROM TFDIR WHERE FUNCNAME LIKE 'Z%' OR FUNCNAME LIKE 'Y%'
SELECT COUNT(*) AS CNT FROM TLIBG WHERE AREA LIKE 'Z%' OR AREA LIKE 'Y%'
SELECT COUNT(*) AS CNT FROM DD02L WHERE TABNAME LIKE 'Z%' AND TABCLASS = 'TRANSP' AND AS4LOCAL = 'A'
Then separately for Y:
SELECT COUNT(*) AS CNT FROM DD02L WHERE TABNAME LIKE 'Y%' AND TABCLASS = 'TRANSP' AND AS4LOCAL = 'A'
Sum both counts.
SELECT COUNT(*) AS CNT FROM DD02L WHERE TABNAME LIKE 'Z%' AND TABCLASS = 'INTTAB' AND AS4LOCAL = 'A'
Then separately for Y and sum.
SELECT COUNT(*) AS CNT FROM DD04L WHERE ROLLNAME LIKE 'Z%' AND AS4LOCAL = 'A'
Then separately for Y and sum.
SELECT COUNT(*) AS CNT FROM DD01L WHERE DOMNAME LIKE 'Z%' AND AS4LOCAL = 'A'
Then separately for Y and sum.
SELECT COUNT(*) AS CNT FROM DD40L WHERE TYPENAME LIKE 'Z%' AND AS4LOCAL = 'A'
Then separately for Y and sum.
SELECT COUNT(*) AS CNT FROM DDDDLSRC WHERE DDLNAME LIKE 'Z%'
Then separately for Y and sum.
SELECT COUNT(*) AS CNT FROM T100A WHERE ARBGB LIKE 'Z%' OR ARBGB LIKE 'Y%'
SELECT COUNT(*) AS CNT FROM TSTC WHERE TCODE LIKE 'Z%' OR TCODE LIKE 'Y%'
Shows how heavily the system extends SAP standard:
SELECT COUNT(*) AS CNT FROM TADIR WHERE PGMID = 'R3TR' AND OBJECT = 'ENHO' AND (OBJ_NAME LIKE 'Z%' OR OBJ_NAME LIKE 'Y%')
SELECT COUNT(*) AS CNT FROM TADIR WHERE PGMID = 'R3TR' AND OBJECT = 'NROB' AND (OBJ_NAME LIKE 'Z%' OR OBJ_NAME LIKE 'Y%')
**NOTE:** Some queries may fail on specific systems (missing tables, authorization). If a query fails, record the count as "N/A" and continue with the rest.
---
This is the most valuable section. Get object counts per custom package.
**CRITICAL:** The column `OBJECT` is a reserved keyword in ABAP SQL. Do NOT alias it (e.g., `OBJECT AS OBJ_TYPE` will cause a parser error `Unknown column name "O"`). Use the column name `OBJECT` directly without alias.
SELECT DEVCLASS, OBJECT, COUNT(*) AS OBJ_COUNT FROM TADIR WHERE DEVCLASS LIKE 'Z%' AND PGMID = 'R3TR' GROUP BY DEVCLASS, OBJECT ORDER BY DEVCLASS ASCENDING
Use `displayMode: "internal"` with a large enough `rowRange` (start: 0, end: 1000) and `maxRows: 5000`.
Note: We no longer filter by specific OBJECT types in the WHERE clause — instead retrieve all R3TR objects and filter/pivot in post-processing. This avoids issues with long IN() lists and captures all object types.
Then run
A VS Code extension that gives AI assistants real, live access to your SAP system — reads actual code, queries live tables, runs tests, debugs, and understands your custom objects. Ask "How does BAPI_USER_GET_DETAIL work?"
Primary correctness and runtime-safety review guidance for ABAP reports, classes, function modules, enhancements, BAPIs,…
Structured process for building ABAP solutions. Use BEFORE writing any ABAP code — reports, classes, function modules,…
ABAP performance best practices for ECC / traditional database systems (Oracle, DB2,MSSQL, MaxDB). Use when writing or reviewing…
ABAP performance best practices for S/4HANA and HANA database systems.Use when writing or reviewing ABAP code on HANA-based…
Techniques for navigating and finding objects in SAP systems. Use when searching for transactions, programs, FMs, classes, error…
Investigate SAP ADT REST API endpoints. Use when the user asks about ADT API endpoints, request/response XML formats, content…