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)

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

ABAP Deep Dive - CORRESPONDING

Kategorie - ABAP

In diesem Artikel einmal etwas mehr über das neue Corresponding Statement und wie man es im Detail einsetzen kann. Dabei schauen wir einmal auf die zusätzlichen Features.

16.09.2022

ABAP - Step

Kategorie - ABAP

Heute einmal ein neuer Zusatz für die Schleifen und wie du ihn verwenden kannst. Mit Step hast du die Möglichkeiten Schritte in einer Schleife zu überspringen.

02.09.2022

ABAP - SELECT FROM @itab

Kategorie - ABAP

Über eine interne Tabelle selektieren war früher mit vielen Zeilen Code realisiert, heute funktioniert es auch praktisch über den Select.

20.01.2022