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)
Werbung

ABAP - Performance für den SELECT

Kategorie - ABAP

In diesem Artikel schauen wir uns noch ein paar Spezialfälle mit dem SELECT an und beleuchten die Performance dieser Konstrukte. Wir zeigen dir die aktuellen Alternativen dafür und geben kleinere Tipps beim Lesen.

02.04.2021

ABAP - Objekte prüfen (Instanzen)

Kategorie - ABAP

In diesem Artikel zeigen wir dir, wie du Instanzen analysieren und auf diese korrekt reagieren kannst, wenn du diese zum Beispiel bei einer Verarbeitung übergibst und individuell reagieren möchtest.

19.03.2021

ABAP - Schleifen

Kategorie - ABAP

Mit dem modernen ABAP wurden auch neue Schleifen und Möglichkeiten zur Einschränkung von Tabelleninhalten geschaffen. Diese neuen Befehle schauen wir uns in diesem Artikel näher an.

19.02.2021

ABAP - Vergleiche

Kategorie - ABAP

Heute betrachten wir uns das Thema Vergleiche und Vergleichsoperatoren im Hinblick auf die neuen Befehle und die aktuelle Verwendung. Was hat sich bisher alles geändert und was sollte man noch tun.

12.02.2021

ABAP - String Funktionen (Teil 3)

Kategorie - ABAP

In diesem Artikel geht es um weitere neue String Funktionen und einen Ersatz für CONDENSE. Hierbei möchten wir dir noch zeigen, wieso du die neuen Funktionen verwenden solltest.

22.01.2021

Wir verwenden Cookies für unsere Dienste und Funktionen. Mehr Informationen