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

379

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 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 Class Runner

Kategorie - ABAP

Wie sieht es mit der Ausführung von ABAP Klassen im Bereich von XCO aus? Schauen wir uns dazu den Class Runner genauer an.

04.02.2025

ABAP - XCO UUID

Kategorie - ABAP

Wie generierst du mit den XCO Klassen eindeutige IDs in ABAP? In diesem Artikel erfährst du, wie schnell und einfach das möglich ist.

28.01.2025

ABAP - XCO Systemfelder

Kategorie - ABAP

Gibt es für SY bzw. SYST auch eine Alternative in der XCO Bibliothek in ABAP Cloud? Einen Blick ist sie auf jeden Fall wert.

24.01.2025

ABAP - XCO Excel

Kategorie - ABAP

Was kann eigentlich die XCO Bibliothek für Excel in ABAP? Hier schauen wir uns den aktuellen Stand der API an.

29.11.2024

ABAP - XCO Strings

Kategorie - ABAP

In diesem Artikel schauen wir uns die XCO Klasse zur Erzeugung und Verarbeitung von Strings für ABAP Cloud an und vergleichen sie mit den klassischen Statements.

22.11.2024