Ansicht
Dokumentation

ABAPINTO_CLAUSE - INTO CLAUSE

ABAPINTO_CLAUSE - INTO CLAUSE

ROGBILLS - Synchronize billing plans   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

SELECT, INTO, APPENDING

Kurzreferenz



... ${ INTO
        ( elem1, elem2,  ...) $}
  $| ${ INTO
        $[CORRESPONDING FIELDS OF$] wa $[indicators$] $}
  $| ${ INTO$|APPENDING
        $[CORRESPONDING FIELDS OF$] TABLE itab $[indicators$]
                                             $[PACKAGE SIZE n$] $}
    $[ extended_result $]
    $[ creating $] ... .


Alternativen:

1. ... INTO (elem1, elem2, ...)

2. ... INTO $[CORRESPONDING FIELDS OF$] wa ...

3. ... INTO$|APPENDING $[CORRESPONDING FIELDS OF$] TABLE itab ...

Wirkung

Die Zusätze INTO oder APPENDING bilden die INTO-Klausel einer SELECT-, WITH- oder FETCH-Anweisung. Sie legen fest, welchen ABAP-Datenobjekten die Daten der Ergebnismenge einer Query zugewiesen werden und wie diese Zuweisung erfolgt. Die folgenden Optionen stehen zur Verfügung:

  • Zuweisung an eine hinter INTO angegebene eingeklammerte kommaseparierte Liste einzelner elementarer Datenobjekte elem1, elem2, ....
  • Zuweisung an einen einzigen hinter INTO angegebenen Arbeitsbereich wa.
  • Zuweisung an eine hinter INTO oder APPENDING angegebene interne Tabelle itab.

Die Datenobjekte elem1, elem2, ...., wa und itab können als vorhandene Hostvariablen angegeben oder mit @DATA inline deklariert werden. Ein Zusatz NEW erlaubt es, die Zielbereiche implizit als anonyme Datenobjekte zu erzeugen.

Die Zusätze haben folgende Bedeutung:

  • Mit CORRESPONDING FIELDS OF können beim Schreiben in Arbeitsbereiche wa und interne Tabellen itab Spalten der Ergebnismenge an namensgleiche Komponenten strukturierter Zielbereiche zugewiesen werden.
  • Mit PACKAGE SIZE können die Zeilen der Ergebnismenge beim Schreiben in interne Tabellen in Pakete unterteilt werden.
  • Mit indicators können sogenannte Indikatoren angegeben werden. Derzeit ist die Angabe eines Null-Indikators möglich, der Informationen darüber enthält, ob eine Spalte der Ergebnismenge den Null-Wert enthält.
  • Mit extended_result kann ein erweitertes Ergebnis in einem Ergebnisobjekt zur Verfügung gestellt werden.

Die Zusätze können alle gemeinsam verwendet werden, mit folgenden Ausnahmen:

  • Der Zusatz CORRESPONDING FIELDS OF kann nicht zusammen mit Inline-Deklarationen @DATA für wa oder itab verwendet werden.
  • Der Zusatz APPENDING kann nicht zusammen mit NEW verwendet werden.

Wenn der Zielbereich über Feldsymbole oder Referenzvariablen angegeben wird, wird bei einer mit ENDSELECT abgeschlossenen SELECT-Schleife genau einmal beim Eintritt in die Schleife bestimmt, auf welches Datenobjekt ein Feldsymbol oder eine Referenzvariable zeigt. Dieses Datenobjekt wird bei jedem Schleifendurchgang als Zielbereich verwendet. Eine Änderung der Zuordnung eines Feldsymbols oder einer Referenzvariable innerhalb der Schleife hat darauf keine Auswirkung.

Die INTO-Klausel muss die letzte Klausel einer Hauptquery sein und die Zusätze UP TO, OFFSET und die Zusätze abap_options müssen hinter der INTO-Klausel stehen.

Hinweise

  • Ob Daten besser in eine interne Tabelle oder in einen Arbeitsbereich eingelesen werden sollen, hängt von der Art der weiteren Verarbeitung ab: Werden Daten in einem Programm nur einmal benötigt, so sollten sie mit einer SELECT-Schleife zeilenweise in einen Arbeitsbereich eingelesen werden. Das Einlesen in eine interne Tabelle benötigt mehr Speicherplatz, ohne diesen Nachteil durch eine wesentlich höhere Lesegeschwindigkeit auszugleichen. Werden Daten dagegen in einem Programm mehrfach benötigt, so sollten sie in eine interne Tabelle eingelesen werden. Der Nachteil des höheren Speicherbedarfs wird hier durch den Vorteil der einmaligen Selektion mehr als kompensiert.
  • Sollen Daten in eine interne Tabelle eingelesen werden, so ist es günstiger, sie auf ein Mal in die interne Tabelle einzulesen, als sie Zeile für Zeile in einen Arbeitsbereich zu lesen und dessen Inhalt in die interne Tabelle einzufügen.
  • Die INTO-Klausel und ihre Regeln sind von der impliziten ABAP-SQL- Mandantenbehandlung nicht betroffen. Insbesondere kann die Mandantenspalte einer Zielstruktur mit anderen Werten als der Mandantenkennung gefüllt werden, beispielsweise bei der Zuordnung einzeln angegebenen Spalten einer Select-Liste.
  • Für die Anweisung SELECT gibt es noch eine obsolete Kurzform, in welcher die Angabe von INTO oder APPENDING weggelassen werden kann.
  • Hinter der Anweisung FETCH können derzeit noch keine Referenzvariablen für LOB-Handles bzw. LOB-Handle-Strukturen angegeben werden.
  • Die Angabe von Hostvariablen ohne Fluchtsymbol @ ist obsolet. In den strikten Modi der Syntaxprüfung ab Release muss das Fluchtsymbol @ angegeben werden.
  • Außerhalb des strikten Modus der Syntaxprüfung ab Release muss die INTO-Klausel noch nicht die letzte Klausel einer Hauptquery sein.

Alternative 1

... INTO (elem1, elem2, ... )


Wirkung

Angabe einer eingeklammerten und kommaseparierten Liste von elementaren Datenobjekten elem1, elem2, ... als Zielbereiche der INTO-Klausel. Diese Angabe ist nur dann möglich, wenn die Spalten der Ergebnismenge durch eine oder mehrere explizit in der SELECT-Liste angegebene Spaltenangaben col_spec definiert wird. Jedes der Datenobjekte elem1, elem2, ... kann als vorhandene Hostvariable angegeben oder mit @DATA inline deklariert werden. Der Zusatz NEW ermöglicht das Anlegen von anonymen Datenobjekten.

Die kommaseparierte Liste muss genauso viele Elemente haben, wie die Ergebnismenge Spalten enthält. Der Inhalt der Spalten in der Ergebnismenge wird gemäß der hinter SELECT festgelegten Reihenfolge von links nach rechts den in der Liste angegebenen Datenobjekten zugewiesen. Die einzelnen Zuweisungen erfolgen nach den Zuweisungsregeln. Wenn dabei ein LOB einer Referenzvariable für LOB-Handles zugewiesen wird, wird ein LOB-Handle erzeugt. Wenn mit einer Offset-/Längenangabe auf ein Teilfeld eines Datenobjekts zugegriffen wird, darf die Angabe +off nicht weggelassen werden. Ist die Ergebnismenge leer, bleiben die Datenobjekte unverändert. Kommt es beim Schreiben in die Datenobjekte zu einer behandelbaren Ausnahme, ist ihr Inhalt beim Behandeln der Ausnahme undefiniert.

Wenn die Ergebnismenge einzeilig ist, werden die Spalten dieser Zeile an die Datenobjekte zugewiesen. Bei einer mehrzeiligen Ergebnismenge wird durch die Anweisungen SELECT und WITH eine SELECT-Schleife geöffnet, die mit ENDSELECT oder ENDWITH abgeschlossen werden muss. In einer SELECT-Schleife werden die Spalten der Ergebnismenge zeilenweise den Datenobjekten zugewiesen und können in der Schleife ausgewertet werden. Bei Verwendung in der Anweisung FETCH werden die Spalten der Zeile an der aktuellen Cursor-Position entnommen.

Hinweise

  • Wenn die Ergebnismenge über die Angabe von * oder data_source~* in der SELECT-Liste definiert wird, kann keine kommaseparierte Liste von Datenobjekten angegeben werden.
  • Die kommaseparierte Liste kann sich über mehrere Programmzeilen erstrecken.

Beispiel

Einlesen der drei Spalten einer Ergebnismenge in drei elementare Datenobjekte. Das erste Datenobjekt carrid ist eine zuvor deklarierte Hostvariable. Das zweite Datenobjekt carrname ist eine inline deklarierte Hostvariable. Das dritte Datenobjekt ist ein anonymes Datenobjekt, das mit NEW erzeugt wird und auf das eine inline deklarierte Datenreferenzvariable dref zeigt.

Beispiel

Einlesen der vier Spalten einer Ergebnismenge in vier einzeln angegebene Komponenten einer Struktur. Im Vergleich zum Schreiben in einen Arbeitsbereich unter Verwendung von CORRESPONDING FIELDS (s.u.) entfällt hier der Namensvergleich durch das Laufzeit-Framework.

Alternative 2

... INTO $[CORRESPONDING FIELDS OF$] wa


Wirkung

Angabe eines einzigen Arbeitsbereichs wa als Zielbereich der INTO-Klausel. Diese Angabe ist für alle Ergebnismengen möglich. Das Datenobjekt wa kann als vorhandene Hostvariable angegeben oder mit @DATA inline deklariert werden. Der Zusatz NEW ermöglicht das Anlegen von einem anonymen Datenobjekt.

Wenn die Ergebnismenge einzeilig ist, wird diese Zeile dem Arbeitsbereich wa zugewiesen. Bei einer mehrzeiligen Ergebnismenge wird durch die Anweisungen SELECT und WITH eine SELECT-Schleife geöffnet, die mit ENDSELECT oder ENDWITH abgeschlossen werden muss. In einer SELECT-Schleife wird die Ergebnismenge zeilenweise an den Arbeitsbereich wa zugewiesen und kann in der Schleife ausgewertet werden. Hinter ENDSELECT bzw. ENDWITH enthält der Arbeitsbereich wa die zuletzt zugewiesene Zeile. Bei Verwendung in der Anweisung FETCH wird eine Zeile an der aktuellen Cursor-Position entnommen. Ist die Ergebnismenge leer, bleibt der Arbeitsbereich unverändert. Kommt es während des Befüllens des Arbeitsbereichs zu einer behandelbaren Ausnahme, ist sein Inhalt beim Behandeln der Ausnahme undefiniert.

Wenn der optionale Zusatz CORRESPONDING FIELDS OF angegeben ist, muss wa eine Struktur sein. Der Zusatz bewirkt, bewirkt, dass nur die Inhalte von Spalten, für die es namensgleiche Komponenten in wa gibt, diesen zugewiesen wird. Wenn der Zusatz CORRESPONDING FIELDS OF nicht angegeben ist, muss wa den unter Arbeitsbereiche in Anweisungen beschriebenen Voraussetzungen genügen. Die Zuweisung der Zeilen der Ergebnismenge richtet sich wie folgt nach der Definition der Ergebnismenge in der SELECT-Liste:

  • Definition der Ergebnismenge durch * ohne Zusatz CORRESPONDING FIELDS OF in der INTO-Klausel:
Wenn mit * alle Spalten der Datenquellen gelesen werden, CORRESPONDING FIELDS OF nicht angegeben ist und die SELECT-Anweisung nicht die Hauptquery einer WITH-Anweisung ist, verhält sich SELECT wie folgt:
  • Einem Arbeitsbereich ohne LOB-Handle-Komponenten wird die Zeile der Ergebnismenge linksbündig und unkonvertiert gemäß der Struktur der Ergebnismenge zugewiesen. Nicht betroffene Teile von wa behalten ihren vorherigen Inhalt. Um nach der Zuweisung typgerecht auf die Komponenten der Ergebnismenge zugreifen zu können, muss der Arbeitsbereich wa wie die Ergebnismenge strukturiert sein.

  • Alle übrigen Kombinationen
Besteht die Ergebnismenge aus einer einzigen explizit hinter SELECT angegebenen Spalte, einem einzigen SQL-Ausdruck oder einem einzigen Aggregatausdruck, kann wa ein elementares Datenobjekt oder eine Struktur sein. Wenn die Ergebnismenge aus mehreren Spalten besteht, muss sie eine Struktur sein und es gilt Folgendes:
  • Ist der Zusatz CORRESPONDING FIELDS nicht angegeben, muss wa genügend viele Komponenten enthalten und die Inhalte der Spalten werden in der hinter SELECT angegebenen Reihenfolge von links nach rechts den Komponenten von wa zugewiesen. Der Inhalt überzähliger Komponenten von wa wird nicht verändert.

  • Ist der Zusatz CORRESPONDING FIELDS angegeben, werden nur die Inhalte von Spalten, für die es namensgleiche Komponenten in wa gibt, diesen zugewiesen. Die mit AS definierten Aliasnamen werden berücksichtigt. Mehrfach auftretende Spalten und Aggregatausdrücke können bei Angabe von CORRESPONDING FIELDS nur über Aliasnamen zugewiesen werden. Falls wa Unterstrukturen enthält, werden diese vom Zusatz CORRESPONDING FIELDS aufgelöst und die vollständigen über den Strukturkomponentenselektor verknüpften Namen betrachtet. Tritt ein Spaltenname mehrfach auf, ohne dass Aliasnamen vergeben wurden, wird die letzte aufgeführte Spalte zugewiesen. Wenn es mindestens eine Namensübereinstimmung gibt, werden alle Spalten, für die es keine Namensübereinstimmung gibt, implizit aus der in der SELECT-Liste und damit aus der Ergebnismenge entfernt. Wenn es keine Namensübereinstimmung gibt, werden keine Spalten aus der Ergebnismenge entfernt. Bei der Angabe von * für die SELECT-Liste kann dies zu deren impliziten Umsetzung in eine Liste von Spalten führen.

Die einzelnen Zuweisungen erfolgen nach den Zuweisungsregeln. Wenn dabei ein LOB einer Referenzvariable für LOB-Handles zugewiesen wird, wird ein LOB-Handle erzeugt. Wenn mit einer Offset-/Längenangabe auf ein Teilfeld von wa zugegriffen wird, darf die Angabe +off nicht weggelassen werden.

Bei der Verwendung von CORRESPONDING FIELDS müssen die Spalten der in der SELECT-Liste definierten Ergebnismenge auf einer bestimmten Ebene zu den Komponenten des Zielbereichs passen. Unter anderem muss es mindestens eine Namensübereinstimmung geben oder für jede explizit aufgeführte Spalte muss es auch eine gleichnamige Komponente im Zielbereich geben.

Hinweise

  • Unter obigen zweiten Punkt "alle übrigen Kombinationen" fällt auch die Angabe von data_source~* in der SELECT-Liste. In diesem Fall muss wa eine Struktur sein. Dies gilt insbesondere auch dann, wenn nur eine Datenquelle data_source~* angegeben ist. Für die Angabe eines einzelnen data_source~* gelten somit andere Regeln gelten als für die Angabe von *, auch wenn beide Angaben die gleichen Ergebnismengen definieren.
  • Beim Zusatz CORRESPONDING FIELDS werden Namen, die nur mit dem Zusatz AS name der Anweisung INCLUDE oder beim Einbinden von Strukturen im ABAP Dictionary definiert wurden, nicht berücksichtigt. Eine mit dem Zusatz RENAMING WITH SUFFIX der Anweisung INCLUDE oder analog im ABAP Dictionary umbenannte Komponente wird dagegen berücksichtigt.
  • Beim Zusatz CORRESPONDING FIELDS wird die Zuordnung der gleichnamigen Felder falls statisch erkennbar bei der Programmgenerierung und ansonsten einmal bei Ausführung der SELECT-Anweisung bestimmt.
  • Wenn beim Lesen einzelner Spalten die Struktur der Ergebnismenge statisch bekannt ist, wird prinzipiell empfohlen, mit einer Liste von Datenobjekten oder mit Inline-Deklarationen zu arbeiten statt mit dem Zusatz CORRESPONDING FIELDS.
  • Wenn bei Verwendung des Zusatzes INTO CORRESPONDING alle benötigten Informationen statisch vorhanden sind, wird die Zuordnung der Felder bei der Programmgenerierung vorgenommen. Ansonsten findet die Zuordnung einmal bei Ausführung der SELECT-Anweisung statt, was eine geringfügige Erhöhung der Laufzeit bewirkt.
  • Der Zusatz INTO CORRESPONDING beeinflusst die SELECT-Liste, die tatsächlich an die Datenbank übergeben wird und damit die Ergebnismenge der SELECT-Anweisung. Wenn es mindestens eine Namensübereinstimmung gibt, werden alle Spalten, für die es keine Namensübereinstimmung gibt, implizit aus der SELECT-Liste entfernt. Wenn es keine Namensübereinstimmung gibt, werden keine Spalten entfernt. Bei der Angabe von * für die SELECT-Liste kann dies zu deren impliziten Umsetzung in eine Liste von Spalten führen.
  • Bei den Varianten mit dem Zusatz INTO CORRESPONDING FIELDS ist die Gefahr gegeben, dass die Zielbereiche mehr Komponenten enthalten, als tatsächlich gefüllt werden. Dies sollte nur dann der Fall sein, wenn die nicht versorgten Komponenten danach noch im Programm versorgt werden. Ansonsten sollte mit passenden Arbeitsbereichen gearbeitet werden, da sonst insbesondere bei internen Tabellen viel Speicherplatz durch Initialwerte belegt werden kann.

Beispiel

Einlesen aller Spalten einer Zeile einer Ergebnismenge in strukturierte Arbeitsbereiche. In der ersten SELECT-Anweisung ist wa eine zuvor deklarierte Hostvariable. In der zweiten SELECT-Anweisung ist wa_inl eine inline deklarierte Hostvariable. In der dritten SELECT-Anweisung wird der Arbeitsbereich mit NEW als anonymes Datenobjekt erzeugt, auf das eine inline deklarierte Datenreferenzvariable dref zeigt.

Beispiel

Einlesen der vier Spalten einer Ergebnismenge in vier jeweils namensgleiche Komponenten eines Arbeitsbereichs, die dort in einer anderen Reihenfolge vorliegen.

Alternative 3

... INTO$|APPENDING $[CORRESPONDING FIELDS OF$] TABLE itab


Zusatz:

... PACKAGE SIZE n

Wirkung

Angabe einer internen Tabelle itab als Zielbereich der INTO-Klausel. Diese Angabe ist für alle Ergebnismengen möglich. Das Datenobjekt itab kann als vorhandene Hostvariable angegeben oder mit @DATA inline deklariert werden. Der Zusatz NEW erlaubt die Erzeugung eines anonymen Datenobjekts.

Voraussetzung für die Angabe einer internen Tabelle hinter INTO TABLE oder hinter APPENDING TABLE ist eine mehrzeilige Ergebnismenge. Die interne Tabelle kann eine beliebige Tabellenart Tabellenart haben. Ihr Zeilentyp muss den gleichen Voraussetzungen wie ein Arbeitsbereich wa genügen.

Die mehrzeilige Ergebnismenge wird Zeile für Zeile nach den Regeln von INSERT in die interne Tabelle itab eingefügt, wobei bei einer sortierten Tabelle eine Sortierung vorgenommen wird.

  • Bei Verwendung von INTO wird die interne Tabelle vor dem Einfügen der Zeilen initialisiert.
  • Vorhergehende Zeilen bleiben bei der Verwendung von APPENDING erhalten. APPENDING kann nicht zusammen mit dem Zusatz NEW verwendet werden.

Wenn es zu einem Konflikt mit einem bereits vorhandenen eindeutigen Tabellenschlüssel kommt, führt dies wie bei der Anweisung INSERT LINES OF zu einer unbehandelbaren Ausnahme.

Vor jeder Zuweisung einer Zeile der Ergebnismenge wird eine initiale Zeile der internen Tabelle itab erzeugt und dieser wird die Zeile der Ergebnismenge zugewiesen. Für die Zuweisung einer Zeile der Ergebnismenge an eine Zeile der internen Tabelle mit und ohne CORRESPONDING FIELDS gelten die gleichen Regeln wie bei der Zuweisung an einen einzelnen Arbeitsbereich wa (siehe oben) mit der Ausnahme, dass beim Einfügen in interne Tabellen LOB-Handles zwar als Lokatoren aber nicht als Leseströme erzeugt werden können.

Ohne den Zusatz PACKAGE SIZE, werden alle Zeilen der Ergebnismenge in die interne Tabelle itab eingefügt und die Anweisungen ENDSELECT oder ENDWITH dürfen nicht hinter SELECT bzw. WITH angegeben werden.

Ist die Ergebnismenge leer, wird die interne Tabelle bei Verwendung von INTO initialisiert und bleibt bei Verwendung von APPENDING unverändert. Kommt es während des Befüllens der internen Tabelle zu einer behandelbaren Ausnahme, ist ihr Inhalt beim Behandeln der Ausnahme undefiniert.

Hinweise

  • Bei der Angabe einer internen Tabelle mit eindeutigem primären oder sekundären Tabellenschlüssel kommt es zu einer unbehandelbaren Ausnahme, wenn versucht wird, einen doppelten Eintrag zu erzeugen.
  • Wenn die interne Tabelle bei Verwendung des Zusatzes CORRESPONDING FIELDS mehr Spalten als benötigt enthält, wird in der Regel zuviel Speicher durch initiale Felder belegt und es kommt zu einer Warnung von der Syntaxprüfung. In Fällen, in denen die Spalten benötigt werden, z.B. um sie im Programm mit abgeleiteten Werten zu befüllen, kann die Warnung mit einem Pragma umgangen werden.
  • Da die maximale Anzahl von Datenströmen, die einer -Anweisung zugeordnet sein kann, auf 16 begrenzt ist, hätte es keinen Sinn, beim Einlesen von internen Tabellen Leseströme zu erzeugen.
  • Statt mit APPENDING TABLE Vereinigungsmengen auf dem AS ABAP zu bilden kann dies inzwischen mit UNION direkt auf der Datenbank geschehen, wobei SQL-Ausdrücke zur Berechnung von Spaltenwerten verwendet werden können.

Beispiel

Einlesen aller Spalten aller Zeilen einer Ergebnismenge in strukturierte interne Tabellen. In der ersten SELECT-Anweisung ist itab eine zuvor deklarierte Hostvariable. In der zweiten SELECT-Anweisung ist itab_inl eine inline deklarierte Hostvariable. In der dritten SELECT-Anweisung wird die interne Tabelle mit NEW als anonymes Datenobjekt erzeugt, auf das eine inline deklarierte Datenreferenzvariable dref zeigt.

Beispiel

Einlesen der vier Spalten einer Ergebnismenge in vier jeweils namensgleiche Komponenten einer internen Tabelle, die dort in einer anderen Reihenfolge vorliegen.

Beispiel

Das folgende Beispiel zu APPENDING TABLE erzeugt die gleiche interne Tabelle wie das Beispiel zu UNION.

Zusatz

... PACKAGE SIZE n

Wirkung

Durch Angabe des Zusatzes PACKAGE SIZE hinter INTO$|APPENDING TABLE werden die Zeilen der Ergebnismenge in Paketen von n Zeilen in die interne Tabelle itab eingefügt. Im Fall der Anweisungen SELECT und WITH wird eine SELECT-Schleife geöffnet, die mit ENDSELECT bzw. ENDWITH abgeschlossen werden muss. Für n wird eine Hostvariable, ein Hostausdruck oder ein Literal vom Typ i erwartet, welche die Anzahl der Zeilen enthalten. Wenn für n ein untypisiertes Literal oder eine Hostvariable angegeben wird, muss sein Inhalt gemäß der Regeln für eine verlustfreie Zuweisung zum Datentyp i passen. n muss vom Typ b, s, i oder int8 sein. Dies wird im strikten Modus der Syntaxprüfung ab Release überprüft. Falls der Inhalt von n kleiner 0 ist, kommt es zu einer unbehandelbaren Ausnahme. Falls der Inhalt von n gleich 0 ist, werden alle Zeilen der Ergebnismenge in die interne Tabelle itab eingefügt. Bei Verwendung in der Anweisung FETCH werden n Zeilen ab der aktuellen Cursor-Position entnommen.

Bei der Verwendung von INTO wird die interne Tabelle vor jedem Einfügen initialisiert und sie enthält in einer SELECT-Schleife nur die Zeilen des aktuellen Pakets. Bei Verwendung von APPENDING wird bei jeder SELECT-Schleife bzw. bei jeder Entnahme mit FETCH ein weiteres Paket zu den vorhandenen Zeilen der internen Tabelle hinzugefügt.

Hinter ENDSELECT bzw. ENDWITH ist der Inhalt von itab bei der Verwendung von INTO undefiniert, d.h., die Tabelle kann entweder die Zeilen des letzten Pakets enthalten oder initial sein. Bei Verwendung von APPENDING behält der Inhalt von itab den Zustand des letzten Schleifendurchgangs bei.

Hinweise

  • Der Zusatz PACKAGE SIZE kann hinter INTO verwendet werden, um die Menge der auf einmal eingelesenen Daten zu beschränken. Ansonsten kann es beim Einlesen einer zu großen Datenmenge in eine interne Tabelle zu einem Laufzeitfehler kommen, wenn deren maximale Größe überschritten wird. Hinter APPENDING kann PACKAGE SIZE diesen Laufzeitfehler natürlich nicht verhindern.
  • Wenn der Zusatz PACKAGE SIZE mit dem Zusatz FOR ALL ENTRIES angegeben ist, werden alle selektierten Zeilen zunächst in eine interne Systemtabelle eingelesen und die Pakete erst bei der Übergabe von der Systemtabelle an die eigentliche Zieltabelle gebildet. Der Zusatz FOR ALL ENTRIES hebt damit die Wirkung von PACKAGE SIZE zur Verhinderung von Speicherüberläufen auf.
  • Der Zusatz PACKAGE SIZE beeinflusst nicht die durch Profilparameter konfigurierbare Größe der Pakete, in denen Daten zwischen Datenbankserver und AS ABAP transportiert werden.

Beispiel

Auslesen und Ausgabe von Spalten der DDIC-Datenbanktabelle SPFLI in Paketen von zehn Zeilen.






PERFORM Short Reference   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 39392 Date: 20240416 Time: 180806     sap01-206 ( 620 ms )