2.2 Datenelemente und Domänen 

Wir durchlaufen nun exemplarisch die Reihenfolge Feld – Datenelement – Domäne und legen dabei alle Objekte an. Als Beispiel dient zunächst ein Feld, in dem Sie den Namen des Systemmandanten speichern; d. h. des Mandanten, mit dem Sie sich angemeldet haben. Objekte, wie z. B. Tabellen, sind mandantenunabhängig zentral in der Datenbank abgelegt und könnten auch aus anderen Mandanten heraus angesprochen werden. Für die Identifizierung des richtigen Datensatzes ist die Einschränkung auf den richtigen Mandanten eine große Hilfe.
2.2.1 Datenelement anlegen 

Das erste Feld soll MANDANT heißen und ein Schlüsselfeld sein. Als Datenelement verwenden Sie das bestehende Element MANDT. Tragen Sie diese Angaben ein, und klicken Sie auf den Button Sichern ((Strg) + (S)). Beachten Sie anschließend die rechten, blau hinterlegten Spalten der ersten Zeile (siehe Abbildung 2.6).
Da das Datenelement MANDT bereits aktiv existiert, wurden alle Attribute des Datenelementes und der entsprechenden Domäne automatisch übernommen, in unserem Beispiel der Datentyp, die Länge, die Anzahl der Dezimalstellen und eine Kurzbeschreibung. Mehr Arbeit haben Sie für dieses Tabellenfeld nicht zu leisten.
Abbildung 2.6 Tabellenfeld mit bestehendem Datenelement anlegen
Ein bisschen umfangreicher wird die Angelegenheit, wenn sowohl das Datenelement als auch die Domäne neu erfunden werden sollen. Denken Sie aber bei der weiteren Arbeit daran, dass Sie das Rad nicht immer wieder neu erfinden müssen und es durchaus eine sinnvolle und bessere Alternative sein kann, wie gezeigt, auf bestehende Objekte wie Datenelemente oder Domänen zurückzugreifen.
Das zweite Feld der Tabelle soll eine eindeutige Teilnehmernummer zwischen 1 und 99.999 beinhalten. Als Feldnamen tragen Sie »TNUMMER« ein, für den Namen des Datenelementes müssen Sie nur den Kundennamensraum beachten, im Übrigen können Sie ihn frei wählen – beispielsweise ZTNUMMER. Nachdem Sie beides eingetragen und auch dieses Feld zum Schlüsselfeld gemacht haben, sichern Sie Ihre Arbeit wieder.
Im Gegensatz zur ersten Zeile bleiben dieses Mal die blau hinterlegten Felder hinter der Spalte Datenelement unausgefüllt, da es ja noch gar nicht existiert. Um beim Anlegen eines Datenelementes nicht umständlich durch die ABAP Workbench navigieren zu müssen, verwenden Sie an dieser Stelle die sogenannte Vorwärtsnavigation. Hierzu klicken Sie doppelt auf das Objekt, das Sie interessiert – in unserem Fall das Datenelement ZTNUMMER –, und das System fragt, ob Sie das Datenelement anlegen möchten (siehe Abbildung 2.7). Diese Frage bestätigen Sie mit Ja, und Sie landen im Dialog zur Pflege des Datenelementes (siehe Abbildung 2.8).
Abbildung 2.7 Objekt anlegen
Abbildung 2.8 Datenelement pflegen
Auf der Registerkarte Datentyp geben Sie die verknüpfte Domäne an. Denken Sie daran, dass Datenelemente und Domänen verschiedene Objekttypen sind. Sie können deshalb für die neu anzulegende Domäne wieder einen anderen Namen erfinden, aber auch denselben Namen wie für das Datenelement verwenden.
Im Übrigen ist wiederum nur der Kundennamensraum zu beachten. Durch den Objekttyp Domäne hat das System kein Problem bei der Identifizierung des richtigen Objektes. In unserem Beispiel soll die Domäne zur Vereinfachung und Vereinheitlichung auch ZTNUMMER heißen. Tragen Sie die Domäne in das entsprechende Feld ein, und sichern Sie das Datenelement.
Zunächst müssen Sie wieder eine Kurzbeschreibung des Objektes eingeben, z. B. »Datenelement für Teilnehmernummer«. Da das Datenelement ein eigenes Objekt ist, möchte das System wissen, ob das Objekt transportiert werden soll oder nicht. Sie müssen deshalb wieder einen Paketnamen angeben. Wie zuvor werden Sie Ihre ersten Gehversuche aber nicht transportieren und speichern das Datenelement als Lokales Objekt ab (siehe Abbildung 2.9).
Abbildung 2.9 Datenelement sichern
Auf der Registerkarte Feldbezeichner müssen Sie als Nächstes die Bezeichnungen des Feldes angeben, die später in Dialogprogrammen und Listen ausgegeben werden. In Bildschirmmasken späterer Dialogprogramme können Sie das Tabellenfeld z. B. mit seinem Kurz-, Mittel- oder Langtext einbauen; in Listen erhält die Spalte für das Feld eine Überschrift. Alle Texte hierzu pflegen Sie an dieser Stelle und füllen die entsprechenden Felder der Spalte Feldbezeichner mit den Angaben aus Abbildung 2.10. Nachdem Sie Ihre Eingaben gesichert haben, rechnet das System die Textlängen aus und füllt die Werte der Spalte Länge. Das notwendige Minimum, um ein Datenelement anzulegen, ist somit erfüllt.
Abbildung 2.10 Feldbezeichner pflegen
[+] Dokumentation
Da die Erfahrung zeigt, dass man sich als Entwickler ebenso wie als Anwender zu oft über schlecht dokumentierte Programme anderer Entwickler ärgert, werden wir es an dieser Stelle natürlich besser machen und legen einen erklärenden Text für unser Datenelement an. Falls jemand später nicht weiß, wofür dieses Feld gedacht ist – obwohl es z. B. vom Namen her für ein Projekt sinnvoll erscheint –, erhält die Person eine sachliche Erklärung und Hilfestellung für die Eingabe oder Verwendung in eigenen Programmen.
Wie alle Texte wird auch die Dokumentation sprachabhängig in der Anmeldesprache gepflegt, in unserem Beispiel in Deutsch. Bei Bedarf werden die Texte und Dokumentationen mittels eines separaten Werkzeugs in die Zielsprache übersetzt.
Nach einem Klick auf die Schaltfläche Dokumentation (siehe Abbildung 2.10) wird Ihnen der Bildschirm eines anderen SAP-Werkzeugs angezeigt: des SAPscript-Editors. SAPscript ist ein schon in die Jahre gekommenes, aber unverwüstliches Tool. Neben seinem Einsatz in der Online-Dokumentation wird es in der SAP-Welt u. a. für die Formulargestaltung verwendet und verfügt über einen eigenen Editor und einen eigenen Kommandosatz. Klicken Sie einfach in den Abschnitt &DEFINITION& und schreiben den Hilfetext »Bitte geben Sie eine Teilnehmernummer zwischen 1 und 99999 ein« in die Zeile unterhalb des Eintrags (siehe Abbildung 2.11), sichern Ihre Eingabe und gehen Sie über die (F3)-Taste zur Pflege des Datenelementes zurück.
Abbildung 2.11 Hilfetext pflegen
2.2.2 Domäne anlegen 

Im Pflegebildschirm des Datenelementes haben Sie auf der Registerkarte Datentyp bereits den Domänennamen eingepflegt. Nachdem die Arbeit mit dem Datenelement vorerst abgeschlossen ist, können wir uns dem Anlegen der Domäne zuwenden. Am besten arbeiten Sie wieder mit der Vorwärtsnavigation, d. h. einem Doppelklick auf den Domänennamen ZTNUMMER.
Sie werden nun gefragt, ob Sie die Domäne anlegen möchten, und beantworten die Frage mit Ja; Ihnen wird der Pflegebildschirm für die Domäne angezeigt (siehe Abbildung 2.12). Bevor wir uns den Registerkarten der Domäne zuwenden, müssen Sie wieder eine Kurzbeschreibung eingeben, beispielsweise »Domäne für Teilnehmernummer«.
Abbildung 2.12 Domäne pflegen
Auf der Registerkarte Definition müssen Sie zunächst den Datentyp der Domäne angeben. In der Praxis sollten Sie viel früher, bereits bei der Konzeption der Tabelle »auf dem Papier«, alle Attribute des Feldes festlegen. Aber zur Information können Sie über die (F4)-Taste sehen, welche Datentypen im ABAP Dictionary enthalten sind und über welche Eigenschaften sie verfügen. Für unser Beispiel wählen Sie als Datentyp NUMC, d. h. eine Zeichenfolge nur mit Ziffern und der Ausgabelänge 5. Anschließend sichern Sie das Domänenobjekt wieder als Lokales Objekt.
Nach der bisherigen Deklaration der Domäne könnte es zusätzlich sinnvoll sein, den Bereich für gültige Werte einzugrenzen. Auf dem Pflegebildschirm für die Domäne existiert hierzu die Registerkarte Wertebereich (siehe Abbildung 2.13).
Abbildung 2.13 Wertebereich einer Domäne festlegen
Grundsätzlich sind hier drei verschiedene Eingrenzungen möglich: Einzelwerte, Intervalle oder eine Wertetabelle. Falls Sie in diese Felder etwas eintragen, akzeptiert das System nur noch die hier definierten und damit gültigen Werte; alle anderen Eingaben werden abgewiesen. Beachten Sie jedoch, dass die Reaktion des Systems vom Datentyp abhängig ist. So können Festwerte, d. h. Einzelwerte und Intervalle, nicht für alle Datentypen eingetragen werden, und auch die Eingabeprüfung bei Dialogbildschirmen hängt vom Datentyp ab:
-
Einzelwerte
Bei der Pflege von Einzelwerten wird jeder gültige Wert einzeln aufgeführt und beschrieben. Die Pflege von Einzelwerten in der Domäne ist nur bei einer relativ kleinen Anzahl zulässiger Eingaben sinnvoll. -
Intervalle
Pflegt man in der Domäne gültige Intervalle ein, wird jeweils der kleinste und der größte Wert eines Intervalls angegeben. Alle Werte dazwischen sind ebenfalls gültig, einschließlich der Grenzen. -
Wertetabelle
Das Arbeiten mit einer Wertetabelle ist bei großen Datenmengen zu empfehlen, wenn absehbar ist, dass Eingabeprüfungen für das Feld gegen eine entsprechende Tabelle erfolgen sollen. Beachten Sie, dass nur durch das Eintragen der Wertetabelle noch keine Prüfung eingerichtet wird. Hierzu muss erst noch ein Fremdschlüssel in das Tabellenfeld implementiert werden. Auf die Arbeit mit Fremdschlüsseln gehen wir in Abschnitt 7.2.3, »Fremdschlüssel pflegen«, ein.
In diesem Beispiel verzichten wir darauf, Festwerte oder Wertetabellen einzutragen, und sichern die Domäne. Um sicherzugehen und formale Fehler auszuschließen, sollten Sie im nächsten Schritt die Domäne prüfen, entweder über Domäne • Prüfen • Prüfen (siehe Abbildung 2.14), die Tastenkombination (Strg) + (F2) oder über den Prüfen-Button. Im günstigen Fall erhalten Sie die Meldung, dass das System keine Inkonsistenzen gefunden hat, und können dazu übergehen, die Domäne zu aktivieren.
Abbildung 2.14 Domäne prüfen
Noch hat die Domäne den Status neu (überarbeitet) (siehe Abbildung 2.15). Um sie in einem Datenelement wirklich verwenden zu können, muss sie den Status aktiv haben – dies erreichen Sie, indem Sie die Domäne aktivieren. Auch hierfür gibt es wieder die Möglichkeit, über das Menü zu navigieren (Domäne • Aktivieren), eine Tastenkombination zu verwenden ((Strg) + (F3)) oder den Aktivieren-Button () anzuklicken.
Abbildung 2.15 Domäne aktivieren
Im folgenden Dialogfenster erhalten Sie eine Übersicht über alle momentan inaktiven Objekte; die Domäne ist bereits markiert (siehe Abbildung 2.16).
Abbildung 2.16 Objekte aktivieren
Bei Bedarf können Sie die anderen, inaktiven Objekte ebenfalls markieren und aktivieren. Falls die Arbeit an diesen Objekten aber noch nicht abgeschlossen ist, sollten Sie keine unnötigen Risiken eingehen und, wie geplant, nur die gewünschte Domäne aktivieren.
Bestätigen Sie Ihre Auswahl über den Button mit dem grünen Häkchen links unten bzw. über die (¢)-Taste, und Sie erhalten unten in der Statuszeile die Meldung angezeigt, dass das Objekt aktiviert wurde. Zur Kontrolle können Sie auch den Status vergleichen, der jetzt auf aktiv steht (siehe Abbildung 2.17). Die Domäne ist damit systemglobal verwendbar. Mit (F3) verlassen Sie den Pflegebildschirm und kehren zum Datenelement zurück.
Abbildung 2.17 Aktivierte Domäne
2.2.3 Datenelement prüfen und aktivieren 

Zum Einstieg sollten Sie auch vor dem Aktivieren des Datenelementes eine Konsistenzprüfung durchführen. Hierzu arbeiten Sie wieder mit dem Menü, der Tastenkombination oder dem Prüfen-Button (, siehe Abbildung 2.18). Im Idealfall haben Sie alles richtig gemacht und können mit der Aktivierung des Datenelementes fortfahren.
Abbildung 2.18 Datenelement prüfen
Dieser Arbeitsschritt entspricht dem beschriebenen Vorgehen für die Domäne: Aktivieren Sie das Datenelement über das Menü oder den Aktivieren-Button (), bestätigen Sie im Folgedialog die Aktivierung des Datenelementes und prüfen Sie, ob die Aktivierung erfolgreich war, d. h. ob der Status aktiv für das Datenelement und die Meldung in der Statuszeile angezeigt wird. Anschließend kehren Sie mit (F3) zur Bearbeitung der Tabellenfelder zurück.
Um in der Tabelle sinnvolle Datensätze ablegen zu können, sollte diese für unser Beispielszenario um weitere Felder ergänzt werden. Es bleibt Ihnen selbst überlassen, wie viele Felder Sie – zur Übung – in die Tabelle einpflegen möchten. Für das weitere Vorgehen genügen vorerst vier Felder, um einen kleinen Datensatz in die Tabelle einzupflegen; das Ergebnis sollte dann wie in Abbildung 2.19 aussehen.
Abbildung 2.19 Beispieltabelle mit vier Feldern
[+] Tabelle prüfen
Vergessen Sie nicht, auch die Tabelle über den Prüfen-Button (), über (Strg) + (F2) oder das Menü auf Inkonsistenzen hin zu überprüfen. Diesen Schritt sollten Sie sich von Anfang an angewöhnen, und er sollte Ihnen in Fleisch und Blut übergehen.
2.2.4 Technische Einstellungen der Tabelle pflegen 

Noch liegt die Tabelle lediglich im ABAP Dictionary. Deshalb müssen Sie vor der Aktivierung noch die technischen Einstellungen pflegen. Sie legen dort Speicherparameter fest und bestimmen, ob und wie Datensätze beim Lesen aus der Datenbank in einem Lesepuffer gehalten werden sollen.
Zu den technischen Einstellungen navigieren Sie aus dem Tabellenpflegebildschirm des ABAP Dictionarys über das Menü (Springen • Technische Einstellungen) oder über die Schaltfläche Technische Einstellungen. Es erscheint der entsprechende Pflegebildschirm (siehe Abbildung 2.20).
In unserem Beispiel verwenden wir für die Datenart den Wert APPL0 (Stammdaten in transparenten Tabellen). Sie legen damit bereits den richtigen physischen Bereich für die Tabelle auf der Datenbank fest. Der physische Bereich, auch Tablespace genannt, ist eine Zuordnung zu Verzeichnissen bzw. Laufwerken der Datenbank. Je nach Datenbanksystem, Datenvolumen und der Anzahl von Zugriffen beeinflusst diese Entscheidung das spätere Laufzeitverhalten und soll die Lese- und Schreibzugriffe optimieren. Stammdaten oder Customizing-Daten für die Systemeinstellungen werden in jeweils eigenen anderen physischen Datenbankbereichen abgespeichert.
Bei der Größenkategorie geben Sie »0« ein, da wir für dieses Übungsbeispiel nicht viele Datensätze erwarten. Die Größenkategorie legt die Größe des initialen Speicherplatzes für die Tabelle auf der Datenbank fest. Wählen Sie den Platz zu groß, reservieren Sie ungenutzte Bereiche; wählen Sie den Platz zu klein, müssen Sie häufiger reorganisieren.
Abbildung 2.20 Technische Einstellungen der Tabelle pflegen
[»] Kleinste Kategorie
Lassen Sie sich durch die Zahlen im Hilfefenster nicht irritieren: Diese Vorschlagswerte sind vom verwendeten Datenbanksystem abhängig. Für unser Beispiel reicht einfach die kleinste der vier Größenkategorien aus.
Für die Pufferungsart wählen Sie Pufferung nicht erlaubt. Bei der Pufferung geht es allgemein darum, dass die Tabelle zum Lesen ganz oder teilweise in den Arbeitsspeicher geladen wird – es wird sozusagen »auf Vorrat« gelesen. Aus Performancegründen empfiehlt sich die Pufferung von Tabellen oder Datensätzen bei großen Tabellen mit vielen Lesezugriffen und relativ wenigen Schreibzugriffen. Bei unserem Übungsbeispiel arbeiten wir jedoch nur mit einer sehr kleinen Tabelle.
Nach diesen Einstellungen kehren Sie mit (F3) zur Tabellenpflege zurück und aktivieren die Tabelle. Den Erfolg erkennen Sie an die Meldung in der Statuszeile (»Objekt wurde aktiviert«), aber auch am Status der Tabelle, der jetzt auf aktiv steht (siehe Abbildung 2.21).
Abbildung 2.21 Aktivierte Tabelle
[»] Standarderweiterungskategorie ausreichend
Lassen Sie sich durch die nach der erfolgreichen Aktivierung ausgegebene Warnmeldung nicht irritieren. Jede Tabelle und Struktur kann im ABAP Dictionary mit einer Erweiterungskategorie klassifiziert werden, die bestimmt, wie die Tabelle in Zukunft erweitert werden kann. Die Warnung weist darauf hin, dass hierfür der Standardvorschlag des Systems übernommen wurde – dies ist für uns im Moment völlig ausreichend.