Rheinwerk < openbook > SAP-Wissen aus erster Hand
SAP-Wissen aus erster Hand.
 
Inhaltsverzeichnis
Vorwort zur vierten Auflage
1 ABAP und die ersten Schritte im SAP-System
2 ABAP Dictionary
3 Programmieren im ABAP Editor
4 Felder und Berechnungen
5 Modifikation von Zeichenketten
6 Debugging von Programmen
7 Modifikation von transparenten Datenbanktabellen
8 Rechnen mit Datum und Zeit, Mengen und Währungen
9 Mit Daten in einer Datenbanktabelle arbeiten
10 Programmablaufsteuerung und logische Ausdrücke
11 Selektionsbildschirme
12 Interne Tabellen
13 Modularisierung von Programmen
14 Weiterführende Themen
A Icons auf einen Blick
B Abkürzungsverzeichnis
C Die Autoren
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 23 KB

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Einstieg in ABAP von Karl-Heinz Kühnhauser, Thorsten Franz
Buch: Einstieg in ABAP

Einstieg in ABAP
Pfeil 12 Interne Tabellen
Pfeil 12.1 Sinn und Zweck interner Tabellen
Pfeil 12.2 Aufbau und Arten von internen Tabellen
Pfeil 12.3 Interne Standardtabelle anlegen
Pfeil 12.3.1 Objektorientierte Schreibweise mit Workarea
Pfeil 12.3.2 Obsolete Schreibweise mit Kopfzeile
Pfeil 12.4 Interne Standardtabelle füllen
Pfeil 12.4.1 Interne Tabelle mit Workarea füllen
Pfeil 12.4.2 Interne Tabelle mit Kopfzeile füllen
Pfeil 12.5 Interne Tabelle zeilenweise verarbeiten
Pfeil 12.5.1 Interne Tabelle mit Workarea verarbeiten
Pfeil 12.5.2 Interne Tabelle mit Kopfzeile verarbeiten
Pfeil 12.6 Inhalte von internen Tabellen löschen
Pfeil 12.6.1 Workareas und interne Tabellen mit Workarea löschen
Pfeil 12.6.2 Interne Tabellen mit Kopfzeile löschen
Pfeil 12.7 Codebeispiel zu ITAB mit Workarea
Pfeil 12.8 Codebeispiel zu ITAB mit Kopfzeile

Wie Sie mit internen Tabellen arbeiten, z. B. Datensätze aus einer Datenbanktabelle in eine interne Tabelle übertragen und diese dort verarbeiten, erfahren Sie in diesem Kapitel.

 
Zum Seitenanfang

12    Interne Tabellen Zur vorigen ÜberschriftZur nächsten Überschrift

Tabellen auf der Datenbank? Kein Problem. Tabellen im Arbeitsspeicher? Nie gehört. Im SAP-System gibt es beides. In diesem Kapitel werden Sie die Tabellen im Arbeitsspeicher kennen und schätzen lernen.

Bisher haben Sie Datenbanktabellen und Workareas kennengelernt. Die Struktur einer Datenbanktabelle oder Feldleiste haben Sie über die Struktur der Datenbanktabelle im ABAP Dictionary festgelegt und bei Workareas lediglich darauf verwiesen. Damit waren die Strukturen von Workareas und Datenbanktabellen in den bisherigen Beispielen identisch. Das ABAP Dictionary ist allerdings nur eine von zwei Möglichkeiten, wie Sie Strukturen deklarieren können.

Die andere Möglichkeit besteht in den ABAP-Programmen direkt: Während die Struktur im ABAP Dictionary dauerhaft gespeichert bleibt, existiert die Struktur im ABAP-Quellcode nur temporär. Sie wird erst beim Aufruf des Programms deklariert; dann werden die nötigen Speicherbereiche reserviert, und die Struktur ist nur während der Laufzeit des ABAP-Programms im Arbeitsspeicher vorhanden. Arbeitsbereiche können während der Programmausführung gefüllt und verändert werden. Endet das Programm, werden alle reservierten Speicherbereiche wieder freigegeben und gegebenenfalls gelöscht bzw. überschrieben.

Die internen Tabellen verhalten sich genau wie die in ABAP deklarierten Strukturen. Der Unterschied ist lediglich, dass eine temporäre Struktur – ein Arbeitsbereich – nur eine Zeile hat, während eine interne Tabelle beliebig viele Zeilen haben kann. Alle Zeilen der internen Tabelle haben wie bei einer Datenbanktabelle dieselbe Struktur, d. h. denselben Zeilenaufbau.

 
Zum Seitenanfang

12.1    Sinn und Zweck interner Tabellen Zur vorigen ÜberschriftZur nächsten Überschrift

Interne Tabellen werden im ABAP-Quellcode deklariert und sind folglich ebenfalls nur temporär im Arbeitsspeicher vorhanden. Beim Programmstart werden die internen Tabellen deklariert, während der Programmverarbeitung modifiziert, und nach dem Programmende sind sowohl Inhalte als auch Struktur nicht mehr vorhanden. Zwischenergebnisse oder Berechnungen für Listausgaben etc. sind damit nicht gespeichert. Dies ist auch nicht nötig, da die Endergebnisse möglichst in einem anderen Medium – einer Ausgabeliste, einem Beleg, einer Datei, auf einem Datenträger oder in einer Datenbanktabelle – abgelegt wurden. Darüber hinaus liegen die zur Berechnung erforderlichen Daten nach wie vor auf der Datenbank, sodass die Endergebnisse jederzeit reproduzierbar sind.

[+]  Verarbeitungsgeschwindigkeit

Immer wenn Sie komplexe Datenstrukturen oder große Datenmengen in Form von strukturierten Datensätzen verarbeiten möchten, haben interne Tabellen Vorteile hinsichtlich der Verarbeitungsgeschwindigkeit. Da die internen Tabellen im Arbeitsspeicher liegen, erfolgt der Zugriff auf eine Tabellenzeile oder auf ein Tabellenfeld einer internen Tabelle wesentlich schneller als der Zugriff auf eine Datenbanktabelle.

Interne Tabellen können beliebig deklarierte Strukturen enthalten. So könnte man beispielsweise die Strukturen mehrerer Datenbanktabellen in der Struktur einer internen Tabelle zusammenfassen. Es wäre aber auch möglich, die Struktur der internen Tabelle ausschließlich aus Feldern zusammenzusetzen, die nur im ABAP-Programm deklariert sind. Auch Mischformen sind möglich, bei denen Dictionary-Strukturen um programmspezifische Felder ergänzt werden.

Auf diese Weise lässt sich ein Datensatz beispielsweise so aufbauen, dass alle relevanten Daten dieses Satzes in einer einzigen internen Tabellenzeile liegen. Dabei ist es dann unerheblich, aus wie vielen Datenbanktabellen und ergänzenden Berechnungen die Felder der internen Tabellenzeile ursprünglich gefüllt wurden. Der vollständige Satz lässt sich von hier aus einfach verarbeiten, drucken etc. Zudem sind Sortierungen der gesamten internen Tabelle nach spezifischen Kriterien problemlos möglich, beispielsweise für bestimmte Formulare oder Listen.

Den Inhalt einer internen Tabelle kann man auch als den Tabellenrumpf bezeichnen. Früher besaßen interne Tabellen zusätzlich zu ihrem Tabellenrumpf eine sogenannte Kopfzeile, die ohne explizite Deklaration eines zusätzlichen Datenobjektes die Funktion einer Workarea erfüllte, doch dieses Konstrukt ist obsolet und wird nur noch aus Kompatibilitätsgründen unterstützt. Heute verwendet man dafür eine explizit deklarierte Workarea. Im Tabellenrumpf stehen die Tabellenzeilen; eine Tabellenzeile entspricht einem Datensatz. Wie bei einer Datenbanktabelle haben alle Zeilen denselben Aufbau und dieselbe Struktur. Für die lesende Verarbeitung von Datensätzen muss jeder Datensatz aus dem Tabellenrumpf in die Workarea bzw. Kopfzeile gestellt werden; von dort aus erfolgt dann die Weiterverarbeitung. Bei der schreibenden Verarbeitung bereiten wir eine Zeile zuerst in der Workarea auf und übertragen sie anschließend an den Tabellenrumpf, indem wir sie anhängen oder einfügen.

Häufig erfolgen diese Verarbeitungsarten in einer Schleife für alle Zeilen. Doch die Verarbeitung einzelner Sätze ist natürlich ebenso möglich.

Die nunmehr obsolete Arbeitsweise mit Kopfzeilen ähnelte dem ebenfalls in modernem ABAP verbotenen Arbeiten mit der TABLES-Anweisung: In beiden Fällen wird implizit eine Workarea deklariert, die den gleichen Namen besitzt wie die (interne oder transparente) Tabelle und den Zugriff darauf über Kurzformen der entsprechenden ABAP-Anweisungen erlaubt. Einerseits erspart dies dem Entwickler Tipparbeit – andererseits gilt heute Code, bei dem sich Aspekte wie Workarea und Tabellenobjekt so stark vermengen wie in diesen Konstrukten, als wenig transparent und schlecht zu warten.

Zudem eröffnet das Trennen von Tabellenrumpf und Workarea neue Möglichkeiten: Beispielsweise kann man damit interne Tabellen anlegen, deren Zeilentyp wiederum eine interne Tabelle ist. Mehrdimensionale Tabellenverarbeitung ist mit mehreren Workareas technisch kein Problem mehr. Mit einer einzigen Kopfzeile wäre die Welt in dieser Beziehung zweidimensional geblieben. n-dimensionale Tabellenverarbeitung ist allerdings ein spezielles Thema, auf das hier nicht weiter eingegangen werden kann.

[+]  Einfacher Umgang mit Feldern

Der Umgang mit Feldern interner Tabellen gleicht dem Umgang mit Feldern von Datenbanktabellen. Die Felder einer internen Tabelle werden ebenfalls mit Tabellenname-Feldname angesprochen. Vergessen Sie nicht, dass Sie damit – ähnlich wie bei einer Datenbanktabelle – auch immer nur den Feldinhalt ansprechen, der aktuell in der Workarea bzw. Kopfzeile steht. Bereits vor dem Zugriff muss der Arbeitsbereich entsprechend gefüllt sein.

Grundsätzlich kann eine interne Tabelle beliebig viele Zeilen haben. Die Grenzen setzt einerseits die SAP-Architektur bei ca. zwei Gigabytes und andererseits die Systeminstallation insgesamt mit ihren Rahmenbedingungen von Hardware, Betriebssystem etc.

[ ! ]  Verarbeitungsgeschwindigkeit

Natürlich muss man aber auch darauf hinweisen, dass die Verarbeitungsgeschwindigkeit mit zunehmender Zeilenanzahl und Tabellengröße beispielsweise beim Suchen einzelner Sätze tendenziell langsamer wird. Je nach betriebswirtschaftlicher Anforderung und voraussichtlicher Tabellengröße sollten Sie beim Anlegen der internen Tabelle auf den Typ achten; auf die einzelnen Tabellentypen wird im folgenden Abschnitt eingegangen.

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in ABAP Einstieg in ABAP
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: SAP – Der technische Einstieg
SAP – Der technische Einstieg


Zum Rheinwerk-Shop: ABAP Objects – Das umfassende Handbuch
ABAP Objects – Das umfassende Handbuch


Zum Rheinwerk-Shop: ABAP-Entwicklung für SAP S/4HANA
ABAP-Entwicklung für SAP S/4HANA


Zum Rheinwerk-Shop: Kundeneigene Erweiterungen mit ABAP
Kundeneigene Erweiterungen mit ABAP


Zum Rheinwerk-Shop: Schrödinger programmiert ABAP
Schrödinger programmiert ABAP


Zum Rheinwerk-Shop: Migration nach SAP S/4HANA
Migration nach SAP S/4HANA


Zum Rheinwerk-Shop: Design Thinking mit SAP
Design Thinking mit SAP


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2020
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
[Rheinwerk]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern