Was ist eine interne Tabelle?
INTERNE TABELLE werden verwendet, um Daten aus einer festen Struktur für die dynamische Verwendung in ABAP zu erhalten. Jede Zeile in der internen Tabelle hat dieselbe Feldstruktur. Die Hauptverwendung für interne Tabellen ist das Speichern und Formatieren von Daten aus einer Datenbanktabelle innerhalb eines Programms.
In diesem Tutorial lernen Sie:
- Was ist eine interne Tabelle?
- Was ist ein Arbeitsbereich?
- Unterschied zwischen interner Tabelle und Arbeitsbereich?
- Arten von internen Tabellen
- Interne Tabellen erstellen
- Interne Tabellen füllen
- Interne Tabellen kopieren
- Intern lesen
- Interne Tabellen löschen
Was ist ein Arbeitsbereich?
Arbeitsbereiche sind einzelne Datenzeilen. Sie sollten das gleiche Format wie alle internen Tabellen haben. Es wird verwendet, um die Daten in einer internen Tabelle zeilenweise zu verarbeiten.
Unterschied zwischen interner Tabelle und Arbeitsbereich?
Ein Bild sagt mehr als tausend Worte :-)
Arten von internen Tabellen
Es gibt zwei Arten von internen Tabellen.
- Interne Tabellen mit HEADER-Zeile
- Interne Tabellen ohne HEADER-Zeile.
Interne Tabellen mit Kopfzeile
- Hier erstellt das System automatisch den Arbeitsbereich.
- Der Arbeitsbereich hat den gleichen Datentyp wie die interne Tabelle.
- Dieser Arbeitsbereich wird als HEADER-Linie bezeichnet.
- Hier werden alle Änderungen oder Aktionen am Inhalt der Tabelle vorgenommen. Dadurch können Datensätze direkt in die Tabelle eingefügt oder direkt von der internen Tabelle aus aufgerufen werden.
Interne Tabellen ohne Kopfzeile :
- Hier ist der Tabelle kein Arbeitsbereich zugeordnet.
- Der Arbeitsbereich ist explizit anzugeben, wenn auf solche Tabellen zugegriffen werden muss.
- Daher kann auf diese Tabellen nicht direkt zugegriffen werden.
Interne Tabellen erstellen
Es gibt viele Möglichkeiten, eine interne Tabelle zu erstellen. Schauen wir sie uns
einzeln an. 1. Mit der Type-Anweisung
Erstellen wir nun eine interne Tabelle itab mit der TYPE-Anweisung.
Die Syntax lautet -
Typen: Zeilenanfang,Spalte1 Typ I,Spalte2 Typ I,Ende der Linie.
Beispiel:
TYPEN: Zeilenanfang,empno Typ I,empname (20) Typ c,Ende der Linie.
Die Anweisung TYPES erstellt eine Strukturlinie wie definiert.
Um eine interne Tabelle zu erstellen, verwenden Sie den folgenden Befehl:
Daten itab Typ Zeile tritt auf 10.
Eine interne Tabelle itab wird mit der Struktur der Zeile erstellt. Neben der Deklaration der Struktur einer internen Tabelle definiert die OCCURS-Klausel auch, wie viele Tabelleneinträge im Hauptspeicher verwaltet werden (in diesem Fall 10). Zusätzliche Datensätze werden in den Paging-Bereich geschrieben und können die Leistung
beeinträchtigen. 2. Durch Verweisen auf eine andere Tabelle
Sie können eine interne Tabelle erstellen, indem Sie auf eine vorhandene Tabelle verweisen. Die vorhandene Tabelle kann eine Standard-SAP-Tabelle, eine Z-Tabelle oder eine andere interne Tabelle sein.
Syntax-
Daten[mit Kopfzeile].
Beispiel-
DATA itab TYPE line OCCURS 10 with header line.
Hier wird eine interne Tabelle itab der Typzeile mit einer Kopfzeile erstellt. Bitte beachten Sie „mit Kopfzeile“ ist optional
3.By Bezug auf bestehende Struktur
Syntax-
DatenLIKE treten n [mit Kopfzeile] auf.
Beispiel-
DATEN itab LIKE sline OCCURS 10.
Hier wird eine Tabelle itab mit einer Struktur wie in Zeile
4 erstellt. Durch Erstellen einer neuen Struktur
erstellen wir nun eine interne Tabelle mit einer eigenen Struktur. Hier wird die Tabelle standardmäßig mit einer Kopfzeile erstellt .
Syntax -
Daten: Beginn vontritt auf, ,…,Ende von .
Beispiel -
Daten: Beginn von itab tritt 10,Spalte1 Typ I,Spalte 2 (4) Typ C,column3 wie mara-ernam,Ende von itab.
Interne Tabelle itab wird erstellt
Interne Tabellen füllen
Nachdem wir einige interne Tabellen erfolgreich erstellt haben, wollen wir sehen, wie wir sie mit einigen Datensätzen füllen. Zum Auffüllen von Tabellen stehen verschiedene Methoden zur Verfügung. 1.Anfügen von Daten Zeile für Zeile Die erste verfügbare Methode ist die Verwendung der APPEND-Anweisung.Mit der Anweisung APPEND können wir entweder eine Zeile aus einem anderen Arbeitsbereich zur internen Tabelle hinzufügen oder eine erste Zeile zur internen Tabelle hinzufügen…
Syntax -
APPEND [Hier wird der ArbeitsbereichTO / INITIAL LINE TO] .
Die Systemvariable SY-TABIX enthält den Index der angehängten Zeile.
Beispiel:
Daten: Beginn von itab tritt 10,col1 Typ C,col2 Typ I,Ende von itab.Fügen Sie die erste Zeile an itab an.
Ergebnisse: '' '0'
Anfangszeilen fügt der Tabelle eine Zeile hinzu, die mit dem richtigen Wert für ihren Typ initialisiert wurde. Hier ist col1 ein Zeichen und col2 ist eine ganze Zahl. Dann fügt APPEND initial line eine Zeile hinzu, die in Bezug auf den Datentyp der Spalten initialisiert wurde, dh Platz für col1 und 0 für col2. 2.Verwenden der COLLECT-AnweisungCOLLECT ist eine andere Form der Anweisung, die zum Auffüllen der internen Tabellen verwendet wird. Im Allgemeinen wird COLLECT beim Einfügen von Zeilen in eine interne Tabelle mit einem eindeutigen Standardschlüssel verwendet.
Syntax-
COLLECT [INTO] .
Bei Tabellen mit Kopfzeile wird die Option INTO weggelassen. Angenommen, es gibt bereits einen Eintrag mit einem Schlüssel, der mit demjenigen übereinstimmt, den Sie anhängen möchten. Dann wird der Tabelle keine neue Zeile hinzugefügt, aber die numerischen Felder beider Einträge werden hinzugefügt, und es ist nur ein Eintrag vorhanden, der dem Schlüssel entspricht . Der Wert von SY-TABIX wird in die Zeile des ursprünglichen Eintrags geändert. Andernfalls verhält sich COLLECT ähnlich wie APPEND und SY-TABIX enthält den Index der verarbeiteten Zeile. 3 . Verwenden der INSERT-Anweisung DieINSERT-Anweisung fügt der internen Tabelle einen Zeilen- / Arbeitsbereich hinzu. Sie können die Position angeben, an der die neue Zeile hinzugefügt werden soll, indem Sie die INDEX-Klausel mit der INSERT-Anweisung verwenden.
Syntax
INSERT [Hier wird der ArbeitsbereichINTO / INITIAL LINE INTO] [index ].
Interne Tabellen kopieren
Der Inhalt einer internen Tabelle kann mithilfe der Anweisung APPEND LINES oder INSERT LINES in eine andere kopiert werden. Eine einfachere Möglichkeit besteht darin, eine der folgenden Syntaxen zu verwenden.Verschieben Sienach .ODER = .
Diese kopieren den Inhalt von ITAB1 nach ITAB2. Bei internen Tabellen mit Kopfzeile müssen wir [] verwenden, um vom Arbeitsbereich zu unterscheiden. Um den Inhalt interner Tabellen mit der Kopfzeile zu kopieren, wird die Syntax wie folgt:
itab1 [] = itab2 [].
Lesen Sie die internen Tabellen
Wir sind jetzt mit der Erstellung interner Tabellen und deren Auffüllung mit Daten vertraut. Wir werden nun sehen, wie wir die Daten tatsächlich verwenden oder aus den internen Tabellen abrufen. 1. Verwenden von Loop-EndloopEine der Möglichkeiten, auf die interne Tabelle zuzugreifen oder diese zu lesen, ist die Verwendung von LOOP-ENDLOOP.Syntax
LOOP AT[INTO ]… ENDLOOP.
Wenn Sie hier LOOP AT ITABLE sagen, wird die interne Tabelle ITABLE Zeile für Zeile gelesen. Sie können während eines beliebigen Teils der LOOP-ENDLOOP-Struktur auf die Werte der Spalten für diese Zeile zugreifen. Der Wert des SY-SUBRC wird auf 0 gesetzt , auch wenn nur ein Datensatz gelesen wird. 2. Verwenden von READDie andere Methode zum Lesen der internen Tabelle ist die Verwendung der READ-Anweisung.
Syntax-
TABELLE LESEN[IN ] INDEX .
Diese Anweisung liest die aktuelle Zeile oder Zeile, wie durch den Index
Interne Tabellen löschen
Es gibt viele Möglichkeiten, Zeilen aus einer internen Tabelle zu löschen. 1.Löschen von Linien in einer Schleife.Dies ist der einfachste Weg, um Zeilen zu löschen.
Sytax
LÖSCHEN SIE.
Diese Anweisung funktioniert nur innerhalb einer Schleife. Es löscht die aktuelle Zeile. Sie können die Zeilen in einer Schleife bedingt löschen, indem Sie die WHERE-Klausel hinzufügen. 2.Löschen von Zeilen mithilfe des Index.
Dies wird verwendet, um eine Zeile aus der internen Tabelle an einem beliebigen bekannten Index zu löschen.
Syntax
DELETEDie Zeile mit dem IndexINDEX .