This is a test message to test the length of the message box.
Login
Modernes ABAP - Interne Tabellen lesen
Erstellt von Software-Heroes

ABAP - Interne Tabellen (Lesen)

Für die Zugriffe auf interne Tabellen wurden neue Funktionen und Schreibweisen implementiert. Wie diese funktionieren und was zu beachten ist, zeigen wir dir hier.

Werbung

Bisher wurden interene Tabellen grundsätzlich über READ TABLE gelesen und ausgewertet, dies hat sich mit dem Modernen ABAP etwas geändert. Was du bisher wusstest, ist natürlich nicht veraltet, doch es gibt nun ein paar kürzere Wege, um an die Daten in den Tabellen zu gelangen.

In dem heutigen Artikel wollen wir vor allem auf die verschiedenen Zugriffsmethoden eingehen, auf was du dabei achten solltest und wie genau die Zugriffe funktionieren.

 

Lesen über Index

Eine weit verbreitete Methode ist das Lesen der ersten oder der letzten Zeile einer internen Tabelle. Dazu geht man über den Index der Tabelle, um die richtige Zeile zu lesen. Ob der Eintrag ermittelt wurde, überprüft man dann mit dem Subrc.

In der neuen Variante liest man den Index wie beim Lesen eines Arrays in anderen Sprachen. Man greift direkt auf den Index zu. Aber vorsicht, wenn die Zeile nicht existiert, denn dann wird eine Exception ausgelöst und wenn diese nicht behandelt wird, dann erzeugt der Report einen Dump.


DATA:
  lt_t001 TYPE STANDARD TABLE OF t001,
  ls_t001 TYPE t001.

" alter Read
READ TABLE lt_t001 INTO ls_t001 INDEX 1.

" neuer Read
ls_t001 = lt_t001[ 1 ].

" mit Inline-Deklaration
DATA(ls_t001) = lt_t001[ 1 ].

 

Lesen über Felder

Beim Lesen der Tabelle liest man in den meisten Fällen mit einem vordefinierten Schlüssel oder über Felder die man als freien Schlüssel definiert. Diese Syntax ist auch weiterhin möglich und in der neuen Form etwas kompakter und bei wenigen Schlüsseln auch leicht zu lesen. Wie beim Lesen über den Index, kann auch in diesem Fall eine direkte Inline-Deklaration durchgeführt werden.


" alter Read
READ TABLE lt_t001 INTO ls_t001
 WITH KEY bukrs = 'ABCD'.

" neuer Read
ls_t001 = lt_t001[ bukrs = 'ABCD' ].

 

Prüfung des Ergebnis

Bevor man in der neuen Variante Zeilen liest, sollte man sicher gehen, dass man Fehler abfängt oder früh genug überprüft, ob die gewünschte Zeile überhaupt vorhanden ist. Dazu bietet der neue Standard zwei Möglichkeiten an, die ihr nutzen könnt.

Im ersten Fall kannst du mit dem neuen Befehl LINE_EXISTS überprüfen, ob die gewünschte Zeile vorhanden ist.


" Prüfung der Zeile
IF LINE_EXISTS( lt_t001[ 1 ] ).
  DATA(ls_t001) = lt_t001[ 1 ].
ENDIF.

 

Im zweiten Fall fängst du den Fehler beim Lesen ab und sparst dir das doppelte Tippen der Schlüsselbedingungen. Diese Methode stellt in den meisten Fällen die beste Lösung zur Verfügung.


" Prüfung der Zeile
TRY.
    DATA(ls_t001) = lt_t001[ 1 ].
  CATCH CX_SY_ITAB_LINE_NOT_FOUND.
    " Fehler abfangen
ENDTRY.

 

Zugriff auf Felder

Neben der Definition einer ganzen Struktur kann auch während des Lesens auf einzelne Felder zugegriffen werden, wenn zum Beispiel in unserem Fall nur der Text zum Buchungskreis gelesen werden soll.


" Lesen des Textes
DATA(ld_text) = lt_t001[ bukrs = 'ABCD' ]-butxt.

" Lesen der Währung
DATA(ld_waers) = lt_t001[ bukrs = 'ABCD' ]-waers.

 

Fazit

Im heutigen Artikel haben wir dir näher gebracht, wie die neuen Zugriffe auf interne Tabellen funktionieren und wie leicht diese mittlerweile sind. Aber es gibt nun auch einige neue Dinge, die es beim Zugriff zu beachten gibt und das der Subrc nicht mehr ganz so wichtig ist, wie es bisher der Fall war.

 

Quelle:
SAP Dokumentation Tabellenausdrücke


Enthaltene Themen:
Modernes ABAPInterne TabellenLINE_EXISTS
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