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)

2439

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)



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

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