ABAP Keyword Documentation → ABAP Programming Guidelines → Robust ABAP → Internationalization
Translation-Friendly Message Texts
Other versions: 7.31 | 7.40 | 7.54
Background
Message texts are translatable system
texts. You can use placeholders in the short and long texts of messages. Placeholders in short texts
can either be defined uniquely in the form &i
, where i
can be a number between 1 and 4, or anonymously with &
.
When the message is output with the MESSAGE
statement, you can use the
WITH dobj1 ... dobj4 addition, which replaces the placeholders &1
to &4
and &
of the short text with the
content of data objects dobj1
, ...
, and
dobj4. The content of the first data object replaces the placeholder &1
and the first &
, the content of the second replaces &2
and the second &
, and so on. In addition, the content of the data objects
dobj1
, ...
, dobj4
is assigned in order to the system fields sy-msgv1
to symsgv4
.
Rule
Do not use anonymous placeholders (&) in message texts
Create placeholders in message texts with the unique names &1
, &2
, &3
, and &4
only.
Details
As the syntax in the various languages differs, a translator may need to change the sequence of the
replacement texts when translating message texts. However, the translator can adapt the sequence of
replacement texts only if the different placeholders in a message text each have unique names. In messages
with multiple placeholders, you should therefore work with the numbered placeholders &1
,
&2
, &3
, and &4
, instead of using the anonymous placeholder (&
).
Note
The same applies to all other constructs in which such placeholders are possible, for example, GUI titles of classical dynpros. In cases where text in text symbols is explicitly replaced by self-defined placeholders, the placeholders in the text symbol must have unique names and must be clearly identifiable for translators as placeholders that are not supposed to be translated.
Bad example
A bad example of a message text might look as follows:
"In Tabelle & wurde der Eintrag & nicht gefunden"
If this message text was translated to
"In table & the entry & was not found"
this would not cause any problems.
If this message text was translated to
The entry & was not found in table &
a MESSAGE
statement when logged on in English would produce an incorrect text.
Good example
The following message text corrects the bad example:
In Tabelle &1 wurde der Eintrag &2 nicht gefunden
For both translations,
In table &1 the entry &2 was not found
and
The entry &2 was not found in table &1
a MESSAGE
statement when logged on in English would produce a correct text.