Summary
SAP systems are inherently multilingual — message classes, data elements, text pools, and many other objects carry translations in multiple languages. LLMs are uniquely suited to assist with translation workflows: reading source texts, generating translations, and writing them back.
Adding i18n/translation tools to vibing-steampunk would unlock AI-assisted translation of ABAP artifacts, language coverage analysis, and bulk translation workflows.
Proposed tools (7)
| # |
Tool name |
Method |
Endpoint |
Description |
| 1 |
GetObjectTextsInLanguage |
GET |
{objectSourceUrl}?sap-language={lang} |
Read any ADT object's source in a specific language |
| 2 |
GetDataElementLabels |
GET |
/sap/bc/adt/ddic/dataelements/{name}?sap-language={lang} |
Read data element labels (short/medium/long/heading) in a specific language |
| 3 |
GetMessageClassTexts |
GET |
/sap/bc/adt/messageclass/{name}/source/main?sap-language={lang} |
Read all messages of a message class in a specific language |
| 4 |
WriteMessageClassTexts |
PUT |
/sap/bc/adt/messageclass/{name}/source/main?sap-language={lang} |
Write/update message class texts in a target language (with lock/unlock) |
| 5 |
WriteDataElementLabels |
PUT |
/sap/bc/adt/ddic/dataelements/{name}?sap-language={lang} |
Write/update data element labels in a target language (with lock/unlock) |
| 6 |
GetTextPoolInLanguage |
GET |
/sap/bc/adt/programs/programs/{name}/textelements?sap-language={lang} |
Read text elements (text pool) of an ABAP program in a specific language |
| 7 |
CompareObjectLanguages |
— |
(composite: reads object in 2 languages) |
Compare an object in two languages side-by-side, flagging missing translations |
Key technical details
sap-language query parameter
All ADT endpoints accept ?sap-language={lang} (ISO 639-1 code: EN, FR, DE, ES, etc.) to read/write objects in a specific language. This is the core mechanism for all translation tools.
Lock/unlock pattern for write operations
Write operations require the standard ADT lock/unlock sequence:
- Lock:
POST {objectUrl}?_action=LOCK → returns a lock handle
- Write:
PUT {objectUrl}?sap-language={lang}&lockHandle={handle} with updated content
- Unlock:
POST {objectUrl}?_action=UNLOCK&lockHandle={handle}
XML parsing
Message classes use mc:message elements:
<mc:messages xmlns:mc="http://www.sap.com/adt/MessageClass">
<mc:message mc:index="000" mc:text="Original text in source language"/>
<mc:message mc:index="001" mc:text="Another message"/>
</mc:messages>
Data elements have multiple label fields in their XML:
<ddic:ShortDescription>Short label</ddic:ShortDescription>
<ddic:MediumDescription>Medium label</ddic:MediumDescription>
<ddic:LongDescription>Long label</ddic:LongDescription>
<ddic:HeadingDescription>Heading</ddic:HeadingDescription>
Typical workflow
- Compare source language (e.g., EN) with target language (e.g., FR) using
CompareObjectLanguages
- Identify missing or outdated translations
- Read source texts with
GetMessageClassTexts / GetDataElementLabels / GetTextPoolInLanguage
- Translate using the LLM (context-aware, consistent terminology)
- Write translations back with
WriteMessageClassTexts / WriteDataElementLabels
- Activate the object to make translations effective
Use cases
- Bulk translation: Translate all message classes of a package from EN to FR/DE/ES
- Translation coverage audit: Scan objects for missing translations across languages
- Terminology consistency: LLM can maintain consistent translations across related objects
- Translation review: Compare existing translations against source for accuracy
Summary
SAP systems are inherently multilingual — message classes, data elements, text pools, and many other objects carry translations in multiple languages. LLMs are uniquely suited to assist with translation workflows: reading source texts, generating translations, and writing them back.
Adding i18n/translation tools to vibing-steampunk would unlock AI-assisted translation of ABAP artifacts, language coverage analysis, and bulk translation workflows.
Proposed tools (7)
GetObjectTextsInLanguage{objectSourceUrl}?sap-language={lang}GetDataElementLabels/sap/bc/adt/ddic/dataelements/{name}?sap-language={lang}GetMessageClassTexts/sap/bc/adt/messageclass/{name}/source/main?sap-language={lang}WriteMessageClassTexts/sap/bc/adt/messageclass/{name}/source/main?sap-language={lang}WriteDataElementLabels/sap/bc/adt/ddic/dataelements/{name}?sap-language={lang}GetTextPoolInLanguage/sap/bc/adt/programs/programs/{name}/textelements?sap-language={lang}CompareObjectLanguagesKey technical details
sap-languagequery parameterAll ADT endpoints accept
?sap-language={lang}(ISO 639-1 code:EN,FR,DE,ES, etc.) to read/write objects in a specific language. This is the core mechanism for all translation tools.Lock/unlock pattern for write operations
Write operations require the standard ADT lock/unlock sequence:
POST {objectUrl}?_action=LOCK→ returns a lock handlePUT {objectUrl}?sap-language={lang}&lockHandle={handle}with updated contentPOST {objectUrl}?_action=UNLOCK&lockHandle={handle}XML parsing
Message classes use
mc:messageelements:Data elements have multiple label fields in their XML:
Typical workflow
CompareObjectLanguagesGetMessageClassTexts/GetDataElementLabels/GetTextPoolInLanguageWriteMessageClassTexts/WriteDataElementLabelsUse cases