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

ABAP - Inline Deklarationen (DATA)

839

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 Bibliotheken

Kategorie - ABAP

Was kannst du mit der Bibliothek in ABAP und ABAP Cloud machen und wie nutzt du die Objekte am besten? Hier erfährst du mehr.

12.11.2024

ABAP - Type Casting

Kategorie - ABAP

Wie kommst du eigentlich an den ursprünglichen Typ einer Klasse bzw. Instanz, wenn diese in einer generischen Tabelle übergeben wird? In diesem Artikel prüfen wir die Möglichkeiten.

16.04.2024

ABAP - RETURN value

Kategorie - ABAP

Nach all den Jahren ist nun endlich der "echte" Return in ABAP angekommen, in diesem Artikel zeigen wir dir, wie der funktioniert und was er kann.

13.02.2024

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