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

ABAP - Inline Deklarationen (DATA)

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)

ABAP Deep Dive - FOR (Schleifen)

Kategorie - ABAP

Schauen wir uns einmal die FOR Schleife etwas näher an. Wie funktioniert sie? Was muss ich beachten und was kann ich damit tun?

14.04.2023

ABAP Deep Dive - Tabellenzugriff (intern)

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal den Tabellenzugriff auf interne Tabellen an und wie sie den READ TABLE ablösen.

03.02.2023

ABAP - FINAL

Kategorie - ABAP

In diesem Artikel schauen wir uns einmal das neue FINAL Sprachkonstrukt an, wie es funktioniert und was du damit anstellen kannst.

23.12.2022

ABAP Deep Dive - VALUE

Kategorie - ABAP

In diesem Artikel wollen wir uns noch einmal das Value Statement in allen Ausprägungen anschauen und wie du es in deiner täglichen Arbeit nutzen kannst.

11.11.2022

ABAP - Common Table Expression (CTE)

Kategorie - ABAP

In diesem Artikel wollen wir uns einmal den allgemeinen Tabellenausdruck WITH anschauen und wie du ihn im Alltag nutzen kannst.

28.10.2022