Skip to main content
Glama

abap_enh

Manage ABAP enhancement spots and BAdI definitions, including creation, filters, implementations, hooks, activation, and deletion, with transport and etag handling.

Instructions

Default op writes the root adtcore:description of an existing ENHO/XH, ENHO/XHH or ENHS/XS, optionally activating it. ENHO/XHH plug-in source body: use abap_write, not this tool. See operation for the other ops.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYeswrite_description/delete/set_impl_active: container name (never the nested badiImplementation entry - use spec.implName). create_spot/add_badi_def/add_filter_def: spotName. create_impl/set_filter_values: enhName. exercise: badiName. create_hook: new name. discover_hook_anchors: unused.
specNoFields per op (?=optional, else required; numbers=max chars). IDs max 30 chars, see enhancement skill. create_spot: description(60). add_badi_def: badiName, interfaceName, singleUse(bool), shortText(60). add_filter_def: badiName, filterName, filterType(1 upper letter, e.g. C), filterText?(255). create_impl: spotName, badiName, implName, implClass, active(bool), description(60). set_filter_values: spotName, implName, filterName, filterType(as above), compare(=,<>,<,<=,>,>=,EQ,NE,LT,LE,GT,GE), value(255). exercise: methodName, filterName?, filterValue?, params?[{name, kind?(importing/changing/exporting/receiving, default importing, max 1 receiving), value?(req for importing/changing, else forbidden), type?(params[].type: req for changing/exporting/receiving, else forbidden; namespaced type ref)}]. discover_hook_anchors: hostType, hostName, hostUri. create_hook: hostType(PROG/P only), hostName, hostUri, anchorFullName, anchorFullDescription(200), responsible?(12), activate?(bool). set_impl_active: active(bool), implName?(omit only if exactly one entry), description?(60).
typeNoRequired for write_description/delete; unused otherwise.
affectsNoObject affected; required except discover_hook_anchors.
corr_nrNoTransport request (write_description/delete/set_impl_active only).
activateNowrite_description only: activate after a changed write. create_hook uses spec.activate; set_impl_active always activates.
operationNoDefault "write_description". Six create ops: always $TMP, always activate. discover_hook_anchors: read-only. delete needs ABAP_ALLOW_ENHANCEMENT_DELETE=true, irreversible. set_impl_active: reversible.
descriptionNoRequired for write_description/create_hook (new adtcore:description, max 60). Unused otherwise.
expect_etagNoRefuse if etag differs (write_description/delete/set_impl_active only).
Install Server

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are minimal (readOnlyHint=false, destructiveHint=false), and the description adds optional activation and the source-body scope limit. However, most behavioral details (create ops always $TMP and activate, delete irreversibility, read-only discovery) live only in the operation schema, not in the description; the description itself does not go much beyond the annotations plus the abap_write warning. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the default operation is front-loaded, the key exception follows immediately, and the pointer to operation is efficient. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema is rich enough to support correct invocation, and the description covers the default op plus a critical exception. But with 11 operations, nested parameters, and no output schema, a one-sentence summary of the tool's breadth (creating spots/BAdIs, setting filters, hooks, deletion) would help an agent recognize when abap_enh applies. The current description leans heavily on the agent opening the operation enum.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies; the description's 'root adtcore:description' and 'existing' wording adds only minor context on top of the already-detailed schema. It does not clarify any parameter beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names the default action (writes the root adtcore:description) and the target object types (ENHO/XH, ENHO/XHH, ENHS/XS), so the primary behavior is clear. It also explicitly distinguishes this tool from abap_write for plug-in source bodies. However, it does not provide a high-level statement of the tool's full 11-operation role, leaving the overall purpose to be inferred from the operation enum in the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says not to use this tool for ENHO/XHH plug-in source bodies and routes that case to abap_write. The phrase 'See operation for the other ops' directs the agent to the operation enum for the remaining variants. Broader when-to-use-versus-sibling guidance is absent, but the most important exclusion is covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Freight-Art/abapsmith'

If you have feedback or need assistance with the MCP directory API, please join our Discord server