Skip to main content
Glama

Write Text Elements

sap_set_text_elements
Idempotent

Write or merge ABAP text elements (symbols, selections, headings) into a program, class, or function group by ID, preserving omitted entries and verifying each saved value.

Instructions

Write a program's / class's / function group's text elements: text symbols (TEXT-nnn), selection texts (parameter/select-option labels), or list headings. Entries are MERGED over the existing ones by id — ids you omit are preserved.

Args:

  • object_type, object_name, kind (one kind per call).

  • entries: [{ id, text, max_length? }].

  • transport (string): required for transportable packages.

  • activate (boolean): activate the owning object afterwards (default false).

  • response_format.

Returns (json): { objectType, objectName, kind, written, merged, transport?, activated, verified, notPersisted, message }. Every write is read back and compared: verified=true means the values are actually stored. notPersisted lists ids the server accepted but did not store.

Examples:

  • "Set text symbol 001" -> kind='symbols', entries=[{id:'001', text:'Processing complete', max_length:30}].

  • "Title the list output" -> kind='headings', entries=[{id:'listHeader', text:'Posting log'}]. Validation (checked before any call to SAP):

  • Symbol ids are exactly 3 characters; selection texts are at most 30 characters; heading ids must be listHeader (<= 71 chars) or columnHeader_1..4 (<= 255 chars). Notes:

  • The underlying PUT replaces the whole pool section for that kind, so this tool reads the current entries and merges yours over them. Editing one symbol therefore does not delete the others.

  • KNOWN LIMITATION on this release: kind='selections' is accepted with HTTP 200 but the values are NOT stored — the read-back still shows '?...'. The tool reports this honestly (verified=false, notPersisted listing the ids) instead of claiming success. Maintain selection texts in SE38 (Goto > Text elements > Selection texts) until this is resolved. 'symbols' and 'headings' write correctly.

  • Texts are stored in the object's ORIGINAL (master) language. On an object whose master language is not English, entries land in that language's pool.

  • Activation is not required for the texts to become visible; 'activate' is offered for the owning object's sake.

  • Read the result back with sap_get_text_elements.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindYesWhich pool section to write: 'symbols', 'selections' or 'headings'. One kind per call.
entriesYesEntries to write. Merged over the existing ones by id.
activateNoActivate the owning object afterwards.
transportNoTransport request (e.g. DEVK900123). Required for objects in transportable packages; ignored for local ($TMP) objects.
object_nameYesObject name (e.g. 'ZFI_POST').
object_typeYes'program', 'class', or 'function_group' (pass the function GROUP name, not a module).
response_formatNoOutput format: 'markdown' (human-readable, default) or 'json' (structured).markdown
Install Server

TDQS

A4.7/5.0
Behavior5/5

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

Thoroughly discloses merge semantics (PUT replaces pool section, omitted ids preserved), known limitation for selections with verified=false and notPersisted, master-language behavior, activation behavior, and read-back verification. Far exceeds what annotations alone provide.

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?

The description is long but every section earns its place: Args, Returns, Examples, Validation, Notes. Structured for scannability with front-loaded purpose and critical limitation clearly flagged.

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

Completeness5/5

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

For a complex write tool with 7 parameters, 3 kinds, transport requirements, and a known server-side limitation, the description covers everything needed to call it correctly. It even documents return fields, compensating for the absent output schema.

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 schema already explains every parameter. The description adds value by clarifying merge behavior and validation constraints (3-char symbols, heading id rules, max_length), but it doesn't need to compensate for schema gaps.

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

Purpose5/5

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

The description states a specific verb ('Write') and exact resource types (text symbols, selection texts, list headings). It clearly distinguishes itself as the write counterpart to the sibling sap_get_text_elements.

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

Usage Guidelines5/5

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

Provides explicit examples, validation rules checked before calling SAP, a known limitation with a workaround (SE38), and follow-up guidance to read results back with sap_get_text_elements.

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/appmaster3000/sap-abap-mcp-server'

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