This is a test message to test the length of the message box.
Login
|
ABAP Text, String, Template
Erstellt von Software-Heroes

ABAP - Text, String, Template

849

Wie nutze ich Zeichenketten in der modernen ABAP Entwicklung und wie verhalten sich diese mit Inline-Deklarationen zusammen. Weiterhin schauen wir uns Fehler an, die damit passieren können.

Werbung


In der Vergangenheit musste man bei der Definition und Anlage von Texten weniger Wert auf die richtige Befüllung legen, da die Variablen am Anfang der Methode definiert wurden und der Typ bereits fest stand. Mit Einführung der Inline-Deklaration wird diese Unterscheidung aber immer wichtiger, da sie zu fehlerhaftem Verhalten führen können.

 

Inline-Deklaration

Zur Erinnerung noch einmal ein Beispiel, wie man Variablen über Inline Deklaration anlegen kann. Es gibt noch genug andere Beispiele, hier einmal nur zur Verdeutlichung wie nützlich das Statement ist.

" Loop
LOOP AT lt_table INTO DATA(ls_structure).
ENDLOOP.

" Result from method
DATA(lt_result) = get_some_data_for_me( ).

" Variables
DATA(ld_integer) = 5.

 

Im ersten Beispiel erzeugen wir eine Struktur im Loop, um die Daten zu verarbeiten. Im zweiten Beispiel erhalten wir Daten aus einer Methode und binden die Daten lokal in eine Variable. Im dritten Beispiel erzeugen wir eine Variable über einen Wert. Die Variable erhält im letzten Beispiel sehr wahrscheinlich den Datentyp Integer, die Entscheidung überliegt aber dem System.

 

Zeichenketten

Nun wollen wir einmal eine Zeichenkette per Inline-Deklaration anlegen und prüfen, welcher Datentyp dabei erzeugt wird. Dazu verwenden wir die drei gängigen Methoden für Zeichenketten.

DATA(ld_var1) = 'Text'.
DATA(ld_var2) = `Text`.
DATA(ld_var3) = |Text|.

 

Schauen wir uns nun dazu die Information im Debugger an und welche Datentypen dafür spezifiziert werden.

 

Im ersten Fall wird eine Variable vom Datentyp CHAR erzeugt, die genau 4-stellig ist, so wie der Text der übergeben wird. Im Fall zwei und drei wird jeweils ein 4-stelliger String erzeugt. Wie du siehst, erzeugen verschiedene Weisen auch verschiedene Datentypen.

Wie sollten dann eigentlich Texte erzeugt werden? Dazu gibt es ein Kapitel im Clean ABAP das sich mit dem Thema auseinander setzt. Wenn du ein einfaches String Literal erzeugen willst, dann nutzt du `. Baust du den Text mit Variablen zusammen, dann solltest du | verwenden. Einfach Texte mit dem Pipe zu erzeugen, macht es eher unleserlich.

 

Fehler

Was können nun also für Fehler bei der Verwendung von Literalen auftreten fragst du dich wahrscheinlich? Hier haben wir einmal ein Beispiel für dich:

DATA:
  ld_pos TYPE i VALUE 3.

CASE ld_pos.
  WHEN 1.
    DATA(ld_symbol) = 'ONE'.
  WHEN 2.
    ld_symbol = 'TWO'.
  WHEN 3.
    ld_symbol = 'THREE'.
  WHEN OTHERS.
    ld_symbol = 'OTHERS'.
ENDCASE.

 

In diesem Fall schauen wir uns LD_SYMBOL einmal im Debugger an und was der aktuelle Inhalt der Variable ist.

 

In der Variable steht der falsche Wert, besser gesagt fehlen 2 Zeichen da die Variable als CHAR mit 3 Zeichen Länge definiert wurde. Grund dafür ist die Definition der Variable im ersten CASE, dort wird sie mit einem 3-stelligen CHAR initialisiert und damit wird der finale Typ festgelegt. Die Definition greift an dieser Stelle, auch wenn sie nicht durchlaufen wird. Laut Clean ABAP sollte so ein Variable logischerweise am Anfang der Methode definiert werden und dann bekommt sie wahrscheinlich den passenden Typen, da dieser angegeben werden muss.

 

VALUE

Das VALUE Statement macht ebenfalls noch einmal deutlich, welchen Datentyp es bei der Befüllung möchte. Dieses Beispiel kann man ebenso auf den INSERT anwenden. Zur Befüllung der Zeilen müssen wir das richtige Literal verwenden, sonst beschwert sich auch der Compiler mit einer Fehlermeldung. Dazu nun das entsprechende Beispiel:

DATA:
  lt_char   TYPE STANDARD TABLE OF char4 WITH EMPTY KEY,
  lt_string TYPE STANDARD TABLE OF string WITH EMPTY KEY.

lt_char = VALUE #( ( 'AB' ) ( 'CD' ) ( 'EF' ) ).
lt_string = VALUE #( ( `GH` ) ( `IJ` ) ( `KL` ) ).

 

Fazit

Wie bekommst du den richtigen Datentypen und was unterscheidet die einzelnen Textarten voneinander, dies sollte mit unserem Artikel nun etwas klarer sein. Bei der Nutzung solltest du dir klar machen, wofür du das Literal brauchst und den entsprechenden Typen verwenden.


Enthaltene Themen:
Modernes ABAPCHARStringTemplate
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP - XCO Logging

Kategorie - ABAP

Die XCO Klassen sind Bestandteil der ABAP Cloud APIs und verfügen über zahlreiche Funktionen, die nicht immer so einfach zu verstehen sind. In diesem Artikel schauen wir uns das Logging Objekt im Detail an.

16.12.2025

ABAP - Der richtige Schlüssel

Kategorie - ABAP

Wie sieht es eigentlich bei der Nutzung von internen Tabellen aus? Immer noch TYPE TABLE in ABAP und die Tabelle ist fertig definiert?

14.11.2025

ABAP - XCO Reguläre Ausdrücke

Kategorie - ABAP

Schauen wir uns einmal die XCO Klassen für die regulären Ausdrücke an und wie damit recht einfach REGEX gegen Texte und Eingaben in ABAP Cloud absetzen kannst. Dabei vergleichen wir auch mit klassischem ABAP.

07.11.2025

ABAP - Escape

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal im Detail verschiedene Escape Varianten an, die du für die ABAP Entwicklung und Sicherheit im System benötigst.

07.10.2025

ABAP - Datum und Uhrzeit

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal die Datentypen für das Datum und die Uhrzeit in ABAP etwas genauer an. Hat sich zwischen den verschiedenen Releases etwas geändert und was solltest du heute noch nutzen?

03.10.2025