Damit ABAP-Programme gut laufen, ist es wichtig, dass man interne Tabellen effizient verarbeitet. Seit es neue ABAP-Versionen gibt, ist der Zugriff auf Tabellen viel besser. Ein Operator, der besonders wichtig ist, ist READ TABLE INTO. Der hat gegenüber älteren Techniken viele Vorteile. In diesem Blogpost zeigen wir euch praxisnahe Beispiele, erklären, wie der Operator funktioniert, und vergleichen moderne Methoden mit älteren ABAP-Techniken.
Grundlagen: Warum READ TABLE INTO?
Der READ TABLE INTO-Operator wird in ABAP benutzt, um aus einer internen Tabelle eine Zeile zu lesen und in eine Arbeitsstruktur oder eine Workarea zu übernehmen. Das ist praktisch, wenn man Daten über einen eindeutigen Schlüssel oder eine Indexposition gezielt verarbeiten will. Außerdem kann man damit in Workareas direkt auf die Daten zugreifen. Das verbessert die Performance und spart Speicherplatz. Und es ist besonders praktisch, wenn man mit großen Datenmengen arbeitet, weil man damit gezielt lesen kann, ohne die ganze Tabelle durchsuchen zu müssen. Wenn man dann noch sortierte Tabellen und optimierte Suchalgorithmen hat, kann READ TABLE INTO richtig effizient sein.
Syntax für READ TABLE INTO:
DATA: lt_table TYPE TABLE OF ty_structure,
ls_row TYPE ty_structure.
READ TABLE lt_table INTO ls_row WITH KEY field1 = 'Wert'.
IF sy-subrc = 0.
WRITE: 'Eintrag gefunden:', ls_row-field2.
ELSE.
WRITE: 'Kein Eintrag gefunden'.
ENDIF.
Hier wird lt_table nach einem bestimmten Wert in field1 durchsucht. Falls ein Eintrag gefunden wird, wird er in ls_row gespeichert.
Vergleich: READ TABLE INTO vs. ältere Methoden
Früher, bevor es die modernen ABAP-Versionen gab, haben die Leute oft andere Methoden benutzt, um auf Tabellen zuzugreifen. Eine der beliebtesten war LOOP AT, um in einer Zeile nach der anderen zu suchen und die gewünschten Daten rauszuholen. Das war aber oft ziemlich langsam, vor allem bei großen Tabellen. Jeder Durchlauf musste die ganze Tabelle durchgehen.
Eine andere Methode war READ TABLE ohne die INTO-Klausel, wodurch die gefundene Zeile direkt über das interne Tabellenfeld referenziert wurde. Das führte aber zu Performance-Problemen und mehr Komplexität im Code, vor allem, wenn viele Daten verarbeitet werden mussten.
LOOP AT lt_table INTO ls_row WHERE field1 = 'Wert'.
WRITE: 'Eintrag gefunden:', ls_row-field2.
EXIT.
ENDLOOP.
Unterschiede und Vorteile von READ TABLE INTO
-
Performance: READ TABLE ist deutlich effizienter als ein LOOP AT WHERE, da direkt auf den Index oder den Schlüssel zugegriffen wird.
-
Bessere Lesbarkeit: Die Verwendung von READ TABLE INTO macht den Code kürzer und verständlicher.
-
Fehlermanagement: Die Nutzung von sy-subrc ermöglicht eine gezielte Fehlerbehandlung.
-
Sortierte Tabellen: In sortierten Tabellen (SORTED TABLE) ist READ TABLE extrem performant, da die Suche über einen binären Suchalgorithmus erfolgt.
Erweiterte Anwendung: READ TABLE ASSIGNING
Neben READ TABLE INTO gibt’s auch die Möglichkeit, mit ASSIGNING direkt eine Feldsymbol-Zuordnung zu erzeugen.Das spart unnötige Kopien und verbessert die Performance, weil es eine direkte Referenz auf die gesuchte Tabellenzeile erzeugt. Es lädt keine neue Kopie des Datensatzes in eine Workarea.Das ist besonders nützlich, wenn große Tabellen verarbeitet werden und Speicheroptimierung wichtig ist. Außerdem kannst du mit Feldsymbolen flexibler arbeiten, weil du Änderungen direkt an der originalen Tabellenzeile vornehmen kannst.
Und noch ein Vorteil: Durch die direkte Zuordnung mit ASSIGNING wird die Anzahl der notwendigen MOVE-Operationen reduziert. Das wirkt sich positiv auf die Laufzeit von ABAP-Programmen aus. Das ist vor allem bei großen Datenverarbeitungen in SAP-Systemen wichtig, um Engpässe zu vermeiden und die Reaktionszeiten zu verbessern.
DATA: lt_table TYPE TABLE OF ty_structure,
<fs_row> TYPE ty_structure.
READ TABLE lt_table ASSIGNING <fs_row> WITH KEY field1 = 'Wert'.
IF sy-subrc = 0.
WRITE: 'Eintrag gefunden:', <fs_row>-field2.
ENDIF.
CloudDNA GmbH – Ihr Experte für performante SAP-Entwicklung
Die CloudDNA GmbH unterstützt Unternehmen dabei, performante und moderne ABAP-Lösungen zu implementieren. Unser Team aus erfahrenen SAP-Entwicklern hilft Ihnen, bestehende Codes zu optimieren und Best Practices in Ihre Entwicklungsprozesse zu integrieren. Wenn Sie an einer Performance-Analyse oder einer Code-Optimierung interessiert sind, sprechen Sie uns an!
Zusammenfassung
In den neuesten ABAP-Versionen gibt’s die Funktion READ TABLE INTO. Damit kannst du Tabellen super schnell durchsuchen. Im Vergleich zu älteren Methoden merkst du sofort, dass sich READ TABLE vor allem bei großen Datenmengen echt lohnt. Und wenn du auch noch ASSIGNING kombinierst, wird’s noch besser. Also, hol dir diese Best Practices und mach deine ABAP-Programme effizienter und einfacher zu warten.