When to use me
Activate this skill whenever working with SAP ABAP systems via MCP tools — especially when investigating object metadata, source code, transport assignments, or documentation. It prevents the model from querying repository tables (e071, reposrc, tadir, dokil, etc.) directly via SQL, which is the wrong approach for those tasks.
Tool Usage Priority
Correct workflow (always try first)
ABAP_MCP_get_urls(name, type) — get all available URLs for an object (source, versions, transports, documentation, etc.)
ABAP_MCP_get_content(url) — read a specific artifact by URL (from get_urls result)
ABAP_MCP_reference(url) — find where an object is used (where-used list). Pass the object's own URL (e.g. /sap/bc/adt/oo/classes/ZCL_FOO). Returns XML with referencing objects and their URI.
Wrong patterns — DO NOT use SQL for:
- Finding what transport/request an object is in
SELECT * FROM e071 WHERE ... — instead use get_urls(type, name) → pick the transport URL → get_content(url)
- Reading source code of any ABAP object (class, program, function module, etc.)
SELECT * FROM reposrc WHERE ... — instead use get_urls(type, name) → pick source URL → get_content(url)
- Getting metadata about objects (who changed it, when, versions)
SELECT * FROM tadir WHERE ... — instead use get_urls(type, name) → explore relevant URLs
- Listing what objects are in a transport
SELECT * FROM e071 WHERE trkorr = '...' — instead use get_urls(type, name) for each suspected object
- Checking documentation of a data element, table, or class
- SQL queries on DOKIL/DOKHL — instead use
get_urls(type, name) → pick documentation URL → get_content(url)
- Finding where an object is used (where-used)
SELECT * FROM reposrc WHERE data LIKE '%...%' — instead use ABAP_MCP_reference(url) where url is the object's own URL from get_urls result
When is SQL (ABAP_MCP_sql_request) appropriate?
Only for querying actual table content / business data: reading table entries, checking configuration, debugging application data. Never for ABAP repository metadata.
Supported object types and type codes
| Object Type |
Type Code |
| Program |
PROG/P |
| Program Include |
PROG/I |
| Class |
CLAS/OC |
| Interface |
INTF/OI |
| Function Group |
FUGR/F |
| Function Module |
FUGR/FF |
| DB Table |
TABL/DT |
| Structure |
TABL/DS |
| Data Element |
DTEL/DE |
| Message Class |
MSAG/N |
| CDS Data Definition |
DDLS/DF |
| CDS Metadata Extension |
DDLX/EX |
| Access Control (CDS DCL) |
DCLS/DL |
Quick reference: how to handle common requests
| User asks about... |
Action |
| "What transport is class ZCL_FOO in?" |
get_urls("ZCL_FOO", "CLAS/OC") → transport URL → get_content(url) |
| "Show me source of program ZBAR" |
get_urls("ZBAR", "PROG/P") → source URL → get_content(url) |
| "What are the fields of table ZTAB" |
get_urls("ZTAB", "TABL/DT") — if that fails, try get_urls("ZTAB", "TABL/DS") |
| "Read data from table ZTAB" |
SQL is appropriate: ABAP_MCP_sql_request("SELECT * FROM ztab") |
| "Show me function module ZFOO" |
get_urls("ZFOO", "FUGR/FF") → source URL → get_content(url) |
| "What includes are in program ZBAR" |
get_urls("ZBAR", "PROG/P") → source URL → get_content(url) (includes are referenced inside the main source) |
| "Where is class ZCL_FOO used?" |
get_urls("ZCL_FOO", "CLAS/OC") → take the class URL (e.g. /sap/bc/adt/oo/classes/ZCL_FOO) → ABAP_MCP_reference(url) |
Note on DB table introspection
In some older ABAP systems, reading a DB table via get_urls with TABL/DT (actual DB table) may not work. In that case, try the same object name with TABL/DS (structure) — this often succeeds where the table type fails. Only fall back to SQL if both type codes fail.
1---2name: abap-mcp3description: Instructs how to use ABAP MCP tools correctly. Use when asked to work with ABAP objects, or when planning to call ABAP_MCP tools.4---567## When to use me89Activate this skill whenever working with SAP ABAP systems via MCP tools — especially when investigating object metadata, source code, transport assignments, or documentation. It prevents the model from querying repository tables (`e071`, `reposrc`, `tadir`, `dokil`, etc.) directly via SQL, which is the wrong approach for those tasks.1011## Tool Usage Priority1213### Correct workflow (always try first)141. **`ABAP_MCP_get_urls(name, type)`** — get all available URLs for an object (source, versions, transports, documentation, etc.)152. **`ABAP_MCP_get_content(url)`** — read a specific artifact by URL (from `get_urls` result)163. **`ABAP_MCP_reference(url)`** — find where an object is used (where-used list). Pass the object's own URL (e.g. `/sap/bc/adt/oo/classes/ZCL_FOO`). Returns XML with referencing objects and their URI.1718### Wrong patterns — DO NOT use SQL for:19- Finding what transport/request an object is in20 - `SELECT * FROM e071 WHERE ...` — instead use `get_urls(type, name)` → pick the transport URL → `get_content(url)`21- Reading source code of any ABAP object (class, program, function module, etc.)22 - `SELECT * FROM reposrc WHERE ...` — instead use `get_urls(type, name)` → pick source URL → `get_content(url)`23- Getting metadata about objects (who changed it, when, versions)24 - `SELECT * FROM tadir WHERE ...` — instead use `get_urls(type, name)` → explore relevant URLs25- Listing what objects are in a transport26 - `SELECT * FROM e071 WHERE trkorr = '...'` — instead use `get_urls(type, name)` for each suspected object27- Checking documentation of a data element, table, or class28 - SQL queries on DOKIL/DOKHL — instead use `get_urls(type, name)` → pick documentation URL → `get_content(url)`29- Finding where an object is used (where-used)30 - `SELECT * FROM reposrc WHERE data LIKE '%...%'` — instead use `ABAP_MCP_reference(url)` where `url` is the object's own URL from `get_urls` result3132### When is SQL (`ABAP_MCP_sql_request`) appropriate?33Only for **querying actual table content / business data**: reading table entries, checking configuration, debugging application data. Never for ABAP repository metadata.3435## Supported object types and type codes3637| Object Type | Type Code |38|--------------------------|------------|39| Program | `PROG/P` |40| Program Include | `PROG/I` |41| Class | `CLAS/OC` |42| Interface | `INTF/OI` |43| Function Group | `FUGR/F` |44| Function Module | `FUGR/FF` |45| DB Table | `TABL/DT` |46| Structure | `TABL/DS` |47| Data Element | `DTEL/DE` |48| Message Class | `MSAG/N` |49| CDS Data Definition | `DDLS/DF` |50| CDS Metadata Extension | `DDLX/EX` |51| Access Control (CDS DCL) | `DCLS/DL` |5253## Quick reference: how to handle common requests5455| User asks about... | Action |56|-------------------------------------|---------------------------------------------------------|57| "What transport is class ZCL_FOO in?" | `get_urls("ZCL_FOO", "CLAS/OC")` → transport URL → `get_content(url)` |58| "Show me source of program ZBAR" | `get_urls("ZBAR", "PROG/P")` → source URL → `get_content(url)` |59| "What are the fields of table ZTAB" | `get_urls("ZTAB", "TABL/DT")` — if that fails, try `get_urls("ZTAB", "TABL/DS")` |60| "Read data from table ZTAB" | SQL is appropriate: `ABAP_MCP_sql_request("SELECT * FROM ztab")` |61| "Show me function module ZFOO" | `get_urls("ZFOO", "FUGR/FF")` → source URL → `get_content(url)` |62| "What includes are in program ZBAR" | `get_urls("ZBAR", "PROG/P")` → source URL → `get_content(url)` (includes are referenced inside the main source) |63| "Where is class ZCL_FOO used?" | `get_urls("ZCL_FOO", "CLAS/OC")` → take the class URL (e.g. `/sap/bc/adt/oo/classes/ZCL_FOO`) → `ABAP_MCP_reference(url)` |6465### Note on DB table introspection66In some older ABAP systems, reading a DB table via `get_urls` with `TABL/DT` (actual DB table) may not work. In that case, try the same object name with `TABL/DS` (structure) — this often succeeds where the table type fails. Only fall back to SQL if both type codes fail.