Für die Beispielanwendung dieses Buches benötigen wir Daten, mit denen wir arbeiten können. Dazu erstellen wir als Erstes eine Tabelle im ABAP Dictionary. Dabei lernen Sie ganz nebenbei, wie Sie mit dem ABAP Dictionary umgehen, um Objekte anzulegen.
2 ABAP Dictionary 

Bereits in der Standardauslieferung des SAP-Systems sind Tausende Tabellen enthalten. Dennoch benötigen Kunden zusätzlich eigene Tabellen für individuelle Anforderungen – die wichtigsten Arbeiten im Zusammenhang mit dem Anlegen und Pflegen von Tabellen erledigen wir daher gleich am Anfang.
In diesem Kapitel wird eine Tabelle angelegt und gefüllt, auf die Sie in den weiteren Kapiteln immer wieder zugreifen werden. Sie ist die grundlegende Tabelle unserer Beispielanwendung, einer Teilnehmerverwaltung für die Teilnehmer von IT-Kursen. In dieser Tabelle legen Sie für jeden Teilnehmer einen Datensatz an, ändern und pflegen ihn. Schrittweise erarbeiten Sie sich so das Wissen für immer schwierigere Aufgaben.
[»] Tabellen in der Praxis
Natürlich werden in der Praxis die Daten der SAP-Komponenten nicht in einer Tabelle gepflegt, sondern auf viele Tabellen verteilt, die über Beziehungen zu komplexen Datenmodellen verknüpft sind. Doch um die Grundprinzipien zu verstehen, genügt uns vorerst eine einzige Tabelle.
2.1 Einstieg in das ABAP Dictionary 

Verzweigen Sie zunächst in das ABAP Dictionary – entweder über den Navigationspfad SAP Menü • Werkzeuge • ABAP Workbench • Entwicklung • Dictionary oder über den Transaktionscode SE11. Der Einstiegsbildschirm des ABAP Dictionarys wird nun angezeigt (siehe Abbildung 2.1).
Abbildung 2.1 Einstieg in das ABAP Dictionary
[»] ABAP Dictionary außerhalb des SAP GUI
Seit dem Release SAP NetWeaver 7.31 besteht mit den ABAP Development Tools for SAP NetWeaver (ADT), auch ABAP in Eclipse genannt, die Möglichkeit, innerhalb der Open-Source-Entwicklungsumgebung Eclipse ABAP-Programme zu entwickeln. Eclipse ist eine kostenlose, Java-basierte Entwicklungsumgebung, die vor allem bei Java-Entwicklern sehr beliebt ist.
Für den Einstieg sollten Sie die klassische Entwicklungsumgebung über den SAP GUI verwenden, die daher auch die Grundlage für alle Beispiele in diesem Buch darstellt. Im Zusammenhang mit dem ABAP Dictionary ist jedoch zu erwähnen, dass es seit SAP NetWeaver 7.40 einige neue Objekttypen gibt (externe Views, DDL-Sourcen), die nur in Eclipse gepflegt werden können. Wir gehen hier jedoch nicht weiter auf diese Objekttypen ein, weil sie eher für fortgeschrittene Entwickler von Bedeutung sind.
2.1.1 Datenbanktabellen 

Von diesem Einstiegsbild aus können Sie sich ein Dictionary-Objekt – Datenbanktabelle, View, Datentyp, Typgruppe, Domäne, Suchhilfe oder Sperrobjekt – anzeigen lassen, es ändern oder anlegen. Vorerst soll Sie hier nur die Arbeit mit Datenbanktabellen interessieren.
In SAP-Systemen gibt es drei Arten von Datenbanktabellen:
-
transparente Tabellen
-
Pool-Tabellen
-
Cluster-Tabellen
Bei Pool- und Cluster-Tabellen liegen die Daten in einem zugeordneten Tabellen-Pool bzw. -Cluster auf der physischen Datenbank. Beide sind Tabellentypen zur Ablage spezieller Daten, wie beispielsweise Programmparameter, Dynpro-Folgen oder Dokumentationen, und können Daten aus mehreren Tabellen gemeinsam in einem Pool bzw. Cluster halten. Pool- und Cluster-Tabellen dienen üblicherweise nicht der Speicherung betriebswirtschaftlicher Anwendungsdaten, da diese grundsätzlich in transparenten Tabellen liegen.
[»] Transparente Tabellen
Wie beschrieben, arbeiten wir ausschließlich mit SAP-Werkzeugen, um auf der physischen Datenbank Objekte anzulegen oder zu pflegen. Transparente Tabellen sind die einzige Tabellenart, bei der 1:1 zu der im ABAP Dictionary hinterlegten Tabellendefinition auch entsprechende physische Tabellendefinitionen auf der physischen Datenbank angelegt werden.
Ein Tabellen-Pool besteht auf der physischen Datenbank aus nur einer einzigen Tabelle. Alle Tabellen, die diesem Pool zugeordnet sind, heißen Pool-Tabellen. In der Pool-Tabelle sind alle Sätze der Tabellen des Pools abgelegt, die über den Namen der Pool-Tabelle und Schlüsselfelder identifiziert werden.
Ein Tabellen-Cluster besteht aus mehreren Cluster-Tabellen. Der Tabellen-Cluster fasst Datensätze mit gleichem Schlüssel aus mehreren Cluster-Tabellen zu einem physischen Datensatz zusammen. Die Anzahl der Datensätze wird hierdurch geringer; gleichzeitig wird ein Datensatz jedoch länger, sodass häufig Fortsetzungssätze angelegt werden müssen.
[ ! ] Nur mit Open SQL
Eine 1:1-Umsetzung wie bei transparenten Tabellen erfolgt bei beiden Tabellentypen nicht; deshalb müssen auch keine technischen Einstellungen oder Indizes gepflegt werden. Für die Verarbeitung dieser Tabellentypen sind aber die im ABAP Dictionary gespeicherten Informationen zwingend notwendig. Im »Brandfall« können diese Tabellentypen deshalb auch nicht über Native SQL, sondern immer nur mit Open SQL verarbeitet werden.
2.1.2 Tabelle anlegen und pflegen 

Beim Anlegen einer neuen Tabelle müssen Sie sich zuerst einen Namen überlegen. Der Tabellenname hat maximal 16 Stellen, wobei zwischen Groß- und Kleinschreibung nicht unterschieden wird. Beachten müssen Sie, dass – wie bei fast allen Objekten – unterschiedliche Namensräume für Standard-SAP-Objekte und kundenindividuelle Objekte verwendet werden.
Nach den Namenskonventionen beginnen Kundenobjekte mit einem Z, Y oder einem sogenannten Präfixnamensraum. Ein Präfixnamensraum ist eine von Schrägstrichen eingerahmte, eindeutig bei SAP reservierte Buchstabenfolge, die dem Namen der Entwicklungsobjekte vorangestellt wird und die kein anderer SAP-Kunde in seinen kundenindividuellen Objekten verwenden darf – beispielsweise /SAPPRESS/.
Abbildung 2.2 Datenbanktabelle anlegen
Damit wird garantiert, dass Objektnamen wirklich eindeutig sind und es beispielsweise bei Unternehmensfusionen nicht zu Namenskonflikten kommt. Für unsere Übungszwecke sind jedoch die herkömmlichen Kundennamensräume Z und Y ausreichend. Deshalb nennen Sie Ihre erste Datenbanktabelle »ZTEILNEHMER« und klicken auf die Schaltfläche Anlegen (siehe Abbildung 2.2).
Der Pflegebildschirm des ABAP Dictionarys mit fünf Registerkarten erscheint: Eigenschaften, Auslieferung und Pflege, Felder, Eingabehilfe/-prüfung sowie Währungs-/Mengenfelder. Im Feld Kurzbeschreibung unter Eigenschaften geben Sie einen aussagekräftigen, erklärenden Text ein, z. B. »Tabelle der Kursteilnehmer«. Auf der Registerkarte Auslieferung und Pflege müssen zwei Felder ausgefüllt werden:
-
Auslieferungsklasse
Die Auslieferungsklasse regelt den Transport der Datensätze der Tabelle bei der Installation oder einem Upgrade, bei einer Mandantenkopie oder dem Transport zu einem anderen SAP-System. Je nach Auslieferungsklasse haben SAP und Kunden unterschiedliche Schreibrechte.Geben Sie in diesem Feld ein »A« für die Anwendungstabelle der Stamm- und Bewegungsdaten ein. Stammdaten sind Anwendungsdaten, die sich relativ selten ändern, wie beispielsweise Materialnummern oder Personalnummern. Bewegungsdaten ändern sich häufig, wie beispielsweise Rechnungspositionen.
Die Tabellen der verschiedenen Auslieferungsklassen werden bei Mandantenkopie, Neuinstallation oder Upgrade auch unterschiedlich behandelt. Bei einer Mandantenkopie werden beispielsweise Stamm- und Bewegungsdaten grundsätzlich nicht mit kopiert.
-
Data Browser/Tabellensicht-Pflege
Die Einstellungen im Feld Data Browser/Tabellensicht-Pflege regeln, in welchem Umfang die SAP-Standard-Pflegewerkzeuge für die Anzeige und Pflege der Datensätze verwendet werden dürfen. Wenn Sie diese Rechte einschränken, kann es geschehen, dass beispielsweise im Dictionary keine neuen Datensätze erfasst werden können.Aus diesem Grund wählen Sie für dieses Feld Anzeige/Pflege erlaubt, da Sie so für Ihre Arbeit im Dictionary alle nötigen Rechte haben und neue Datensätze erfassen oder Datensätze verändern und löschen können (siehe Abbildung 2.3).
Abbildung 2.3 Tabelle sichern
Bevor Sie damit jedoch beginnen, sollten Sie den bisherigen Stand der Arbeit sichern, am einfachsten über den Button Sichern oder – wie der Button-Tooltip schon sagt – über die Tastenkombination (Strg) + (S).
Im folgenden Dialogfenster treffen Sie eine wichtige Entscheidung: Sie legen fest, ob Ihre Tabelle in ein anderes SAP-System transportiert werden kann oder nicht. Soll die Tabelle transportiert werden, müssen Sie ein Paket angeben. Ein Paket bündelt zusammengehörige Objekte der ABAP Workbench und definiert die Transportschicht, die wiederum bestimmt, ob Objekte einem transportierbaren Änderungsauftrag zu einem Zielsystem zugeordnet werden oder ob sie auf dem aktuellen lokalen SAP-System verbleiben.
[+] Transport – ja oder nein?
Es gilt, gut zu überlegen: Im »wirklichen Leben«, d. h. in einer mehrstufigen Systemlandschaft, würden Sie von den Systemverantwortlichen den Namen des Paketes erfragen und eintragen, weil Sie z. B. auf dem Test- und Entwicklungssystem Objekte anlegen, die später für ein Produktivsystem bestimmt wären. Für Ihre ersten Gehversuche im Übungsbeispiel ist dies jedoch nicht notwendig, sondern es genügt, wenn die Tabelle und Ihre ersten Reports lokal auf dem Test- und Entwicklungssystem verbleiben.
Speichern Sie die Tabelle als Lokales Objekt (siehe Abbildung 2.4). Sie wird damit automatisch dem Paket $TMP zugeordnet. Objekte dieses Paketes $TMP werden nie transportiert und unterliegen auch keiner Versionsverwaltung.
Abbildung 2.4 Objektkatalogeintrag anlegen
Im nächsten Schritt tragen Sie auf der Registerkarte Felder (siehe Abbildung 2.5) die Felder der Tabelle ein und legen fest, ob ein Feld ein Schlüsselfeld ist, ob es auf der Datenbank mit einem Initialwert versehen werden soll und welches Datenelement die betriebswirtschaftlichen Attribute des Feldes beschreibt:
-
Feld
Bei der Wahl des Feldnamens müssen Sie keine Namenskonventionen beachten; dennoch sollte der Feldname möglichst sinnvoll gewählt sein. Da ein Feld der Tabelle immer über die Tabelle angesprochen wird, und zwar in der Form Tabellenname-Feldname, ist der Unterschied zwischen Kundenfeldern und SAP-Feldern hier kein Problem. Der Feldname hat maximal 30 Stellen. -
Key
Unter Key legen Sie fest, ob ein Feld ein Schlüsselfeld ist. Schlüsselfelder müssen lückenlos zusammenhängend am Anfang der Tabelle stehen. Über Schlüsselfelder wird eine Zeile eindeutig identifiziert, und sie dienen als Sortier- und Suchkriterium. Maximal sind 16 Schlüsselfelder möglich. -
Initialwerte
Der Eintrag Initialwert ist interessant, falls das Feld in einem Datensatz leer, d. h. ohne gültigen Wert ist. Soll das Feld auf der Datenbank, je nach Typ, mit dem entsprechenden Initialwert vorbelegt werden, beispielsweise eine Integerzahl mit dem Wert 0, muss hier ein Eintrag erfolgen; im Übrigen bleibt das Feld wirklich leer. Der Feldinhalt kann aber auch jederzeit nachträglich mit einem gültigen Wert gefüllt werden. Die Vorbelegung mit Initialwerten ist in der Regel vorzuziehen, da in dem Feld auf der Datenbank sonst Nullwerte auftreten können. Diese sind in der Programmierung leicht mit initialen Werten zu verwechseln, was zu unangenehmen Fehlern führen kann. -
Datenelement
In der Spalte Datenelement tragen Sie den Namen eines Datenelementes ein bzw. wählen ein vorgegebenes Datenelement aus. Im Datenelement sind einige Attribute eines Feldes wie Länge, Typ etc. hinterlegt.
Abbildung 2.5 Tabelle pflegen
[»] Betriebswirtschaftliche und technische Attribute
Eine Besonderheit des ABAP Dictionarys ist, dass die Feldattribute in der Regel nicht direkt beim Feld abgelegt werden, sondern getrennt davon in eigenen Dictionary-Objekten. Man unterscheidet hierbei betriebswirtschaftliche und technische Attribute: Die betriebswirtschaftlichen Attribute eines Feldes liegen im zugehörigen Datenelement, die technischen in der zugehörigen Domäne. Den Namen des Datenelementes tragen Sie deshalb hier ein, den der Domäne beim Datenelement. Diesen Vorgang betrachten wir aber gleich noch näher.
Diese Zerlegung hat u. a. den Vorteil, dass Datenelemente und Domänen als eigene Dictionary-Objekte mehrfach verwendbar sind: Felder verschiedener Tabellen können auf dasselbe Datenelement verweisen, und Änderungen von Feldattributen können an einer Stelle zentral gepflegt werden. Abhängige Objekte werden dann zur Laufzeit automatisch nachgeneriert.