SAP NetWeaver AS ABAP Release 750, ©Copyright 2016 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation →
ABAP - Programmierrichtlinien →
Robustes ABAP →
Interne Tabellen →
Verdichtetes Befüllen
Hintergrund
Mittels der Anweisung COLLECT können Zeilen verdichtet in eine interne
Tabelle eingefügt werden. Wenn in der Zieltabelle eine Zeile mit dem betreffenden Primärschlüssel
bereits existiert, werden die Werte numerischer Komponenten zu den Werten in der bestehenden Tabellenzeile hinzuaddiert. Anderenfalls wird eine neue Zeile in die Tabelle eingefügt.
Regel
Keine Standardtabellen verdichtet befüllen
Verwenden Sie die Anweisung COLLECT ausschließlich für Hash-Tabellen
oder sortierte Tabellen mit eindeutigem Schlüssel. Für Standardtabellen soll sie nicht mehr verwendet werden.
Details
Die Anweisung COLLECT basiert auf eindeutigen Einträgen bezüglich
des Primärschlüssels und einer stabilen Schlüsselverwaltung. Daher sind nicht alle
Arten von internen Tabellen in gleicher Weise für die Verarbeitung durch COLLECT geeignet:
- Wird die Anweisung COLLECT im Zusammenhang mit einer Standardtabelle
eingesetzt, muss für diese Tabelle zunächst eine eigene interne Hash-Verwaltung aufgebaut
werden. Diese temporäre Hash-Verwaltung kann durch Änderungsoperationen auf der Tabelle
invalidiert werden. Nach einer solchen Änderungsoperation müssen folgende COLLECT-Anweisungen
auf eine lineare Suche zurückgreifen, was die Verarbeitung erheblich verlangsamt. Weiterhin ist der Primärschlüssel einer Standardtabelle nie eindeutig.
- COLLECT kann problemlos für sortierte Tabellen und Hash-Tabellen
verwendet werden, da diese im Gegensatz zu Standardtabellen immer eine eigene stabile Schlüsselverwaltung
haben, die von COLLECT ausgenutzt werden kann. Damit COLLECT
bei sortierten Tabellen garantiert korrekt funktioniert, muss der Primärschlüssel eindeutig
sein. Bei einer sortierten Tabelle mit mehrdeutigem Schlüssel dürfte die Tabelle ausschließlich
über COLLECT gefüllt werden, was nur schwer sicherzustellen ist. Bei Hash-Tabellen ist immer garantiert, dass die Schlüsselwerte eindeutig sind.