Skip to content
Business
Skill

/abap-research

Techniques for navigating and finding objects in SAP systems. Use when searching for transactions, programs, FMs, classes, error messages, BAPIs, tables, custom objects, or anything in an unfamiliar SAP system. Teaches the mindset and metadata knowledge a senior ABAP developer

BOOST
From plugin
vscode-abap-remote-fs
40326 skills23 agents
Install
$ npx -y skills add marcellourbani/vscode_abap_remote_fs --skill abap-research --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/abap-research

Context preview

The summary Claude sees to decide when to auto-load this skill.

Techniques for navigating and finding objects in SAP systems. Use when searching for transactions, programs, FMs, classes, error messages, BAPIs, tables, custom objects, or anything in an unfamiliar SAP system. Teaches the mindset and metadata knowledge a senior ABAP developer

SKILL.md

abap-research.SKILL.md
name: abap-research
description: Techniques for navigating and finding objects in SAP systems. Use when searching for transactions, programs, FMs, classes, error messages, BAPIs, tables, custom objects, or anything in an unfamiliar SAP system. Teaches the mindset and metadata knowledge a senior ABAP developer uses to find anything in any system. Load this skill when the user asks to find something and direct search doesn't work, or when investigating errors, screenshots, or unknown functionality.
argument-hint: '[what to find in the SAP system]'
user-invocable: true
disable-model-invocation: false

SAP System Research — Think Like a Senior Developer

You're a senior ABAP developer dropped into an unfamiliar SAP system. You need to find things, understand how they connect, and trace problems to their source. You have two main tools: **object search** (by name/pattern) and **SQL** (query metadata tables). Use both creatively.

**Your mindset:** Be curious. Be a detective. SAP catalogs EVERYTHING in metadata tables. If something exists in the system, there's a table that knows about it. Your job is to figure out which table, read its structure with `get_object_lines`, and then query it.

**CRITICAL:** Never hardcode field names from memory. Always read a table's structure first with `get_object_lines` to see its actual fields before querying it.

**CRITICAL:** Text fields in SAP are often **case-sensitive**. When searching by text, use wildcards aggressively — skip the first letter of words, put `%` between key phrases. `%rticle%aint%` finds "Article Maintenance", "article maint.", but WILL NOT find "ARTICLE MAINTENANCE."

---

The Metadata Tables You Should Know

These tables are the backbone of SAP's self-documentation. Before querying any of them, **read their structure first** to get correct field names.

Object Catalog & Repository

| Table | What it catalogs | |-------|-----------------| | **TADIR** | Master directory of ALL development objects — every class, program, FM, table, etc. Links objects to packages, authors, creation dates | | **TRDIR** | Program directory — all ABAP programs with their type (report, include, class pool, function pool, module pool) | | **TRDIRT** | Program short texts (descriptions) |

Transactions

| Table | What it catalogs | |-------|-----------------| | **TSTC** | Transaction code → program mapping | | **TSTCT** | Transaction code descriptions/titles (language-dependent) |

Messages

| Table | What it catalogs | |-------|-----------------| | **T100** | All system messages — message class, number, text (language-dependent and case-sensitive) |

Data Dictionary

| Table | What it catalogs | |-------|-----------------| | **DD02L** | Table/structure definitions (metadata) | | **DD02T** | Table/structure descriptions (language-dependent) | | **DD03L** | Table field list — every field in every table, with data type, length, key flag | | **DD04L** | Data element definitions | | **DD04T** | Data element descriptions (language-dependent) | | **DD01L** | Domain definitions | | **DD01T** | Domain descriptions | | **DD07L** | Domain fixed values (dropdown values, value ranges) |

Classes & Interfaces

| Table | What it catalogs | |-------|-----------------| | **SEOCLASSTX** | Class/interface descriptions (language-dependent) | | **SEOMETAREL** | Interface implementations — which class implements which interface | | **SEOCOMPO** | Class/interface components (methods, attributes, events) |

Function Modules

| Table | What it catalogs | |-------|-----------------| | **TFDIR** | Function module directory | | **TFTIT** | Function module short texts (language-dependent) | | **ENLFDIR** | FM → function group mapping | | **FUPARAREF** | Function module parameters (name, type, direction) |

Transports

| Table | What it catalogs | |-------|-----------------| | **E070** | Transport request headers — owner, description, status, type | | **E071** | Transport object list — which objects are in which transport |

Enhancements & Exits

| Table | What it catalogs | |-------|-----------------| | **SXS_ATTR** | BAdI definitions | | **SXC_ATTR** | BAdI implementations | | **MODSAP** | Classic enhancement exits (SMOD/CMOD) |

---

Thinking Patterns

These are not step-by-step procedures. They're **ways of thinking** about research problems. Adapt them to the situation.

"I see a screen but don't know the tcode"

You have a title or description. **TSTCT** maps descriptions to tcodes. **TSTC** maps tcodes to programs. Chain them: title → tcode → program → now you can read the code.

"I see an error message"

The message text is your clue. **T100** stores every message in the system with its class and number. Find it there (wildcard aggressively). Then search code for that message class + number to find where it's raised. Read the surrounding code to understand the trigger condition.

"I need a function module / BAPI for a specific task"

BAPIs follow naming conventions: `BAPI_<object>_<action>`. Try the object search tool with patterns like `BAPI_*_CREATE*`, `BAPI_*_GETDETAIL*`, `BAPI_*_GETLIST*`, `BAPI_*_CHANGE*`. Also search **TFTIT** for FM descriptions matching your task.

"I found one object, now I need everything related"

**Package clustering.** Every development object lives in a package. Query **TADIR** to find the object's package. Then query TADIR again for ALL objects in that same package. You'll discover the classes, tables, FMs, reports, message classes — everything that was built together as a unit.

"I know a field name but not which tables have it"

Reverse lookup via **DD03L**. Query it for the field name to find every table containing that field. This reveals the data model — which are master data tables, which are transaction tables, which are config tables.

"I need to find what a specific developer built"

**TADIR** has the author of every object. **E070** has transport request owners. **E071** links transp

Read more
Ships withvscode-abap-remote-fs

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?"

Get the whole plugin

Other skills on vscode-abap-remote-fs.