This is a test message to test the length of the message box.
Login
Inline Deklaration
Erstellt von Software-Heroes

ABAP - Inline Deklarationen (DATA)

877

Anlegen von Datentypen zur Laufzeit und im Coding? Nun kein Problem mehr mit Inline Deklarationen.

Werbung


Wie sahen für dich bisher viele Programme aus, wenn du zum ersten Mal in fremden Code geschaut hast? Wahrscheinlich bist du über viele Zeilen von Variablendefintionen am Anfang jedes Programms, Forms oder Methode gestolpert. Bevor die eigentliche Bussiness Logik begann wurden zuerst einmal alle Variablen aufgelistet, die es für dieses Stück Code benötigt. 

Hier gab es zum Glück die ersten großen Anpassungen und der Befehl DATA wurde einmal ordentlich überarbeitet und ABAP typisch implementiert.

 

Datendefinitionen - ALT

Wie wurden bisher Variablen definiert, dazu ein kurzes Beispiel: 

Wir lesen Daten aus einer Tabelle, merken uns die Anzahl für eine spätere Ausgabe und verarbeiten die Daten im Anschluss, wobei wir uns den Zeilenindex merken, da wir vielleicht noch Einträge entfernen möchten, die mit bestimmten Kriterien nicht übereinstimmen:


" Definition der Variablen im Kopf
DATA:
  lt_address TYPE STANDARD TABLE OF adrc,
  ls_address TYPE adrc,
  ld_tabix   TYPE sytabix,
  ld_count   TYPE i.

" ... Lesen der Daten

" Anzahl merken
  ld_count = LINES( lt_address ).

" Verarbeitung
  LOOP AT lt_address INTO ls_address.
    " Index merken
    ld_tabix = sy-tabix.

    " ... Logik
  ENDLOOP.

 

Wenn wir nun in dieser Routine noch mehr Datenbankzugriffe und Verarbeitungen implementieren, wir der DATA Teil immer länger werden, was das Ganze etwas unübersichtlicher macht.

 

Datendefinition - NEU

Die Definition wurde nun soweit angepasst das Variablen zum Aufrufpunkt definiert werden können. Das gleiche Beispiel von oben haben wir nun auf die neue Welt umgestellt, die Ermittlung der Daten erzeugt die Tabelle, deshalb fehlt dort die DATA Anweisung. Die Erstellung von internen Variablen bei SELECTs ist aber noch ein zusätzliches Thema mit dem wir uns noch beschäftigen werden.


" ... Lesen der Daten

" Anzahl merken
  DATA(ld_count) = LINES( lt_address ).

" Verarbeitung
  LOOP AT lt_address INTO DATA(ls_address).
    " Index merken
    DATA(ld_tabix) = sy-tabix.

    " ... Logik
  ENDLOOP.

 

Alle Variablen werden zur Laufzeit erzeugt und ermitteln sich aus dem Quelldatentyp:

  • LINES gibt einen Integer zurück, damit bekommt ld_count den Typen i
  • im LOOP bekommt ls_address den Typ der Tabelle lt_adress
  • ld_tabix bekommt den Typen der Variable aus der Zuweisung

 

Verwendung

Nach dem Schlüsselwort DATA und FIELD-SYMBOL wird direkt eine Klammer gesetzt und die Variable dazwischen definiert. Anders als bei bisherigen Befehlen werden keine Leerzeichen zwischen den Klammern verwendet. Wie du schon richtig vermutet hast, funktioniert das Ganze auch mit Feldsymbolen, die man nun zur Laufzeit erzeugen kann.


" Loops
LOOP AT lt_address ASSIGNING FIELD-SYMBOL(<ls_address>).
ENDLOOP.

LOOP AT lt_address REFERENCE INTO DATA(lr_address).
ENDLOOP.

" Assigns
ASSIGN COMPONENT 'COUNTRY' OF STRUCTURE ls_address TO FIELD-SYMBOL(<ld_country>).

 

Voraussetzung für die Verarbeitung ist aber die vollständige Typisierung der Quellvariable, damit aus dem Kontext heraus der Datentyp abgeleitet werden kann.

 

Gültigkeit

Die Variable ist ab der Zeile der Definition gültig und verwendebar. Variablen die im LOOP oder in einem IF erzeugt werden, sind auch außerhalb dieses Ausdrucks gültig. Sollten als mehrere Loops hintereinander die selbe Variable verwenden wollen, muss diese nur in der ersten Schleife definiert werden.

Hinweis: Hier solltest du aufpassen, wenn du Logik verschiebst, dass deine abhängige Datendeklaration noch verfügbar und an der richtigen Stelle im Coding ist.

 

Quelle:
SAP Blog Inline Deklaration


Enthaltene Themen:
Modernes ABAPDATAInline Deklaration
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