ABAP: Textsymbole ersetzen

Für das Ersetzen von Textsymbolen, globlen Feldern oder Systemsymbolen gibt es zwei SAP Funktionsbausteine.

1. REPLACE_TEXTSYMBOL
2. TEXT_SYMBOL_REPLACE

Bei Nutzung des Bausteins REPLACE_TEXTSYMBOL ist der Zeitpunkt der Verwendung sehr wichtig. Denn innerhalb diesen Bausteins wird auf die internen Tabellen itcvl, itcvd, itcvg zurückgegriffen.
Solange man ihn innerhalb einer Formularbearbeitung aufruft funktioniert er einwandfrei. Fehlerhaft wird die Nutzung nach dem Abschluss einer Formularbearbeitung END_FORM, denn durch den Funktionsbaustein SET_TEXTSYMBOL_PROGRAM werden die internen Tabellen initalisiert.

Daher ist die Nutzung des Funktionsbausteins TEXT_SYMBOL_REPLACE zu empfehlen. Hier spielt der Zeitpunkt keine Rolle.

Beispielcoding:

DATA: ls_header  TYPE thead.
DATA: ls_text    type STXH_KEY.
DATA: lt_tline   type TABLE OF tline.
DATA: gv_text    type char255.


ls_text-tdid     = 'ST'.
ls_text-tdspras  = 'D'.
ls_text-tdname   = 'ZTEST_REPLACE'.
ls_text-tdobject = 'TEXT'.

gv_text = 'TEST!!!'.

* SO10 Text lesen
    REFRESH lt_tline.
    CLEAR ls_header.
    CALL FUNCTION 'READ_TEXT'
      EXPORTING
        id                      = ls_text-tdid
        language                = ls_text-tdspras
        name                    = ls_text-tdname
        object                  = ls_text-tdobject
      IMPORTING
        header                  = ls_header
      TABLES
        lines                   = lt_tline
      EXCEPTIONS
        id                      = 1
        language                = 2
        name                    = 3
        not_found               = 4
        object                  = 5
        reference_check         = 6
        wrong_access_to_archive = 7
        OTHERS                  = 8.

* Symbole und globale Felder ersetzen
CALL FUNCTION 'TEXT_SYMBOL_REPLACE'
  EXPORTING
    ENDLINE                = 99999
    header                 = ls_header
*   INIT                   = ' '
*   OPTION_DIALOG          = ' '
    PROGRAM                = sy-repid
    REPLACE_PROGRAM        = 'X'
    REPLACE_STANDARD       = 'X'
    REPLACE_SYSTEM         = 'X'
    REPLACE_TEXT           = 'X'
   STARTLINE              = 1
* IMPORTING
*   CHANGED                =
*   NEWHEADER              =
  tables
    lines                  = lt_tline.