Ansicht
Dokumentation

ABENITAB_KEY_SECONDARY_UPDATE - ITAB KEY SECONDARY UPDATE

ABENITAB_KEY_SECONDARY_UPDATE - ITAB KEY SECONDARY UPDATE

TXBHW - Original Tax Base Amount in Local Currency   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Aktualisierung von Sekundärschlüsseln

Bei allen Anweisungen, die den Inhalt und Aufbau einer internen Tabelle ändern, wird die interne Verwaltung der Sekundärschlüssel automatisch wie folgt aktualisiert:

  • Bei allen Operationen, die Zeilen in Tabellen einfügen oder Zeilen aus Tabellen löschen, wird die Sekundärschlüsselverwaltung von eindeutigen Schlüsseln sofort aktualisiert, d.h. ein eindeutiger Sekundärschlüssel ist direkt nach der Operation aktuell (direct update). Nicht-eindeutige sekundäre Tabellenschlüssel werden dagegen nicht sofort, sondern erst bei der nächsten expliziten Verwendung des Sekundärschlüssels über USING KEY bzw. WITH KEY ... COMPONENTS aktualisiert (lazy update). Falls eine Aktualisierung zur Verletzung der Eindeutigkeit eines Sekundärschlüssels führt, kommt es zu einer behandelbaren Ausnahme oder einem Laufzeitfehler.
Zu den einfügenden Operationen gehören Tabellenanweisungen wie INSERT und APPEND sowie Blockoperationen, bei denen der gesamte Tabellenkörper auf einmal gefüllt wird, wie z.B. bei Zuweisungen zwischen internen Tabellen, bei der Parameterübergabe an Prozeduren, beim Füllen interner Tabellen mit SELECT, beim Importieren mit IMPORT usw. Die Operation zum Löschen von Tabellenzeilen ist die Tabellenanweisung DELETE.
  • Bei Operationen, welche die Komponenten sekundärer Tabellenschlüssel in vorhandenen Zeilen ändern, wird die Sekundärschlüsselverwaltung entweder direkt oder erst zu einem bestimmten Synchronisationszeitpunkt aktualisiert.
  • Beim Modifizieren einzelner Zeilen über MODIFY wird ein eindeutiger Sekundärschlüssel direkt aktualisiert (direct update). Sind durch die Modifikation duplikative Einträge entstanden, kommt es zu einer unbehandelbaren Ausnahme.

  • Beim Modifizieren einzelner Zeilen über Feldsymbole oder Datenreferenzen, die auf die Tabellenzeilen zeigen, wird ein eindeutiger Sekundärschlüssel beim nächsten Zugriff auf die interne Tabelle aktualisiert (delayed update). Die Überprüfung der Eindeutigkeit findet ebenfalls erst zum Synchronisationszeitpunkt statt. Eine interne Tabelle kann sich nach einer Modifikation vorhandener Zeilen über Feldsymbole oder Datenreferenzen also in einem inkonsistenten Zustand bezüglich der eindeutigen Sekundärschlüssel befinden, der erst bei der nächsten Verwendung der Tabelle zur zugehörigen Ausnahme führt

Ein nicht-eindeutiger Schlüssel wird in beiden Fällen bei der nächsten expliziten Verwendung des sekundären Tabellenschlüssels aktualisiert (lazy update).

Mit den Methoden FLUSH_ITAB_KEY und FLUSH_ITAB_KEYS der Klasse CL_ABAP_ITAB_UTILITIESkönnen einzelne oder alle Sekundärschlüssel einer internen Tabelle ausnahmsweise auch explizit aktualisiert werden. Diese Methoden können zu Analyse- und Testzwecken eingesetzt werden. Weiterhin kann ihr Einsatz nach ändernden Zugriffen sinnvoll sein, wenn der nächste Zugriff nicht unmittelbar danach stattfindet, um eventuelle Ausnahmen an Ort und Stelle zu behandeln.

Das Beispiel zum Löschen über Tabellenschlüssel demonstriert die Laufzeiten, die zum Aufbau des Sekundärschlüssels benötigt werden, und wann sie auftreten.






CPI1466 during Backup   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 4982 Date: 20240523 Time: 161640     sap01-206 ( 81 ms )