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)

3013

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 Dienstag und 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 Nachricht und Sprache

Kategorie - ABAP

Was kannst du zusätzlich mit Nachrichten und den Sprachobjekten der XCO Bibliothek in ABAP Cloud machen? Lass uns der Frage im Detail nachgehen.

01.07.2025

ABAP - XCO Generation und Info System

Kategorie - ABAP

Wie kannst du mit ABAP Cloud Mitteln neue Objekte im System generieren und Informationen zu diesen erhalten? An einem Beispiel schauen wir uns das genauer an.

27.06.2025

ABAP - XCO Callstack und Tenant

Kategorie - ABAP

Wie kommst du mit den XCO Klassen an den ABAP Call Stack und bekommst weitere Informationen zum aktuellen Tenant? In diesem Artikel schauen wir einmal ins Detail.

06.06.2025

ABAP - XCO Class Runner

Kategorie - ABAP

Wie sieht es mit der Ausführung von ABAP Klassen im Bereich von XCO aus? Schauen wir uns dazu den Class Runner genauer an.

04.02.2025

ABAP - XCO UUID

Kategorie - ABAP

Wie generierst du mit den XCO Klassen eindeutige IDs in ABAP? In diesem Artikel erfährst du, wie schnell und einfach das möglich ist.

28.01.2025