In diesem Kapitel lernen Sie die zahlreichen Funktionen der Tabellenpflegesicht näher kennen: Tabellen erweitern, Nicht-Schlüsselfelder und Schlüsselfelder pflegen, Felder hinzufügen und löschen u.v.m.
7 Modifikation von transparenten Datenbanktabellen 

Modifikationen an Datenbanktabellen können unterschiedlicher Natur sein. In diesem Kapitel lernen Sie die verschiedenen Möglichkeiten kennen, wie Sie bei einer bestehenden Tabelle beispielsweise nachträglich Felder anhängen oder sie anderweitig verändern können.
Erinnern Sie sich an unsere transparente Datenbanktabelle aus Kapitel 2, »ABAP Dictionary«. Die bisher angelegte Tabelle besteht aus den Feldern für den Systemmandanten: Teilnehmernummer, Teilnehmername und Geburtsdatum des Teilnehmers. Schlüsselfelder sind die beiden Felder MANDANT und TNUMMER (siehe Abbildung 7.1).
Als Vorbereitung für die nächsten Schritte werden Sie die Tabelle modifizieren. Im simpelsten Fall werden zusätzliche Felder zu den bestehenden hinzugefügt. Bei Nicht-Schlüsselfeldern in kundeneigenen Tabellen ist diese Vorgehensweise relativ einfach. Aufwendiger ist die Ergänzung von SAP-Standardtabellen, die Sie nur durch Append-Strukturen (siehe Abschnitt 7.3.1, »Append-Strukturen pflegen«) erweitern dürfen, oder die Manipulation von Schlüsselfeldern.
Abbildung 7.1 Teilnehmertabelle mit vier Feldern
Bei der Manipulation von Schlüsselfeldern muss die Tabelle in der Datenbank angepasst werden. Dabei hängt es u. a. vom Datenbanksystem ab, ob die Anpassung bedeutet, Tabellenfelder zu löschen und neu anzulegen, den Datenbankkatalog zu ändern oder die Tabelle umzusetzen. Eventuell sind aufwendige Reorganisationsarbeiten notwendig, und es besteht das Risiko des Datenverlustes.
[+] Tabellenumsetzung
Bei Änderungen von Tabellenstrukturen will man meist die in der Tabelle enthaltenen Daten erhalten. In einigen Fällen bedient sich das SAP-System dazu eines Mechanismus, der Tabellenumsetzung. Dabei existieren die alte Tabelle (noch mit Daten) und die neue Tabelle (noch ohne Daten) für kurze Zeit parallel, und das System überträgt die Daten mittels des ABAP-Befehls MOVE-CORRESPONDING von der alten in die neue Tabelle.
Auch das Löschen von Feldern aus Tabellen ist nicht immer ganz einfach – insbesondere dann nicht, wenn bereits Daten in den zu löschenden Feldern eingetragen sind. Selbstverständlich können Sie Tabellen auch kopieren oder vollständig löschen.
7.1 Datenbanktabelle kopieren 

Gleichgültig, ob Sie kundeneigene oder SAP-Standardtabellen bearbeiten: In beiden Fällen kann es ratsam sein, kein Risiko einzugehen und die Tabelle zunächst zu kopieren, anstatt Veränderungen am Original vorzunehmen. Beim Kopieren wird lediglich die Tabelle mit ihren Eigenschaften und Feldern – nur die Struktur, d. h. das leere Gerüst ohne Inhalt – reproduziert, die Daten bleiben jedoch an Ort und Stelle. So können Sie vor der Manipulation am Original erst einmal testen, ob das, was Sie sich vorstellen, auch wirklich funktioniert. Selbst wenn das Kopieren eine doppelte Datenhaltung bedeutet und damit redundante Daten erzeugt werden, die eigentlich vermieden werden sollten, gibt es doch immer wieder Anforderungen, die zumindest temporär das Kopieren ganzer Tabellenstrukturen sinnvoll erscheinen lassen.
Den Kopiervorgang starten Sie im Einstiegsbild des ABAP Dictionarys, das Sie über Transaktion SE11 oder SAP Menü • Werkzeuge • ABAP Workbench • Entwicklung • Dictionary erreichen. Hier geben Sie die zu kopierende Tabelle an, in unserem Beispiel »ZTEILNEHMER« (siehe Abbildung 7.2). Über den Kopieren-Button () leiten Sie den Kopiervorgang ein, und Ihnen wird ein Fenster angezeigt, in dem das System die Quelltabelle vorschlägt (siehe Abbildung 7.3).
Abbildung 7.2 Datenbanktabelle kopieren
Abbildung 7.3 Quelltabelle und Zieltabelle beim Kopiervorgang
Nach der Überprüfung der Quelltabelle geben Sie die Zieltabelle ein und drücken auf die (¢)-Taste. Im Folgebild möchte das System wieder von Ihnen wissen, zu welchem Paket, d. h. zu welcher Gruppe von Anwendungen Ihr Objekt gehören soll (siehe Abbildung 7.4).
Abbildung 7.4 Zieltabelle einem Paket zuordnen und speichern
[»] Paketnamen
Statt des Begriffs Paket wird nach wie vor häufig auch der Begriff Entwicklungsklasse verwendet. In der Praxis wissen Sie natürlich, in welchem Arbeitsgebiet Sie tätig sind, beispielsweise in der Finanzbuchhaltung, und Sie wissen auch, wie die Pakete für kundenspezifische Anwendungen in der Finanzbuchhaltung heißen. Im Zweifel fragen Sie hier aber Ihren Systemadministrator nach den gängigen Namenskonventionen.
Da in unserem Lernbeispiel weiterhin alle Objekte als lokale Objekte gespeichert werden sollen, klicken Sie zum Sichern nur auf den Button Lokales Objekt und erhalten in der Statuszeile die Meldung, dass die Tabelle von ZTEILNEHMER nach ZTEILNEHMER02 kopiert wurde. Das System hat damit automatisch das Paket $TMP eingetragen.
Nach diesem Schritt landen Sie wieder im Startbild des ABAP Dictionarys, in dem nun die Zieltabelle zur weiteren Bearbeitung angezeigt wird (siehe Abbildung 7.5). Die kopierte Tabelle ist noch nicht aktiviert und damit noch nicht verwendbar. Sie müssen deshalb über den Button Ändern in das ABAP Dictionary wechseln, um die Tabelle zu pflegen.
Abbildung 7.5 Angezeigte Zieltabelle ändern
Am Tabellenstatus neu der Zieltabelle sehen Sie die Bestätigung, dass die Tabelle noch nicht mit Daten gefüllt werden kann (siehe Abbildung 7.6). Sollen die Struktur der Tabelle und ihre Eigenschaften unverändert bleiben, klicken Sie bereits jetzt auf den Aktivieren-Button (). Damit wird für die Tabelle ein Laufzeitobjekt generiert.
Abbildung 7.6 Tabellenstatus der Zieltabelle nach dem Kopieren
[»] Aktivierungsprotokoll
Bei Bedarf können Sie sich auch das Aktivierungsprotokoll anzeigen lassen. Falls das System Warnungen bei der Aktivierung in das Protokoll schreibt, müssen Sie entscheiden, ob diese Warnungen negative Auswirkungen auf Ihre weitere Arbeit mit der Tabelle haben. Im Übrigen können Warnungen auch durch formale Prüfungen im System entstehen, die für den konkreten Fall aber unbedeutend sind und damit ignoriert werden können. Beispielsweise können Sie den Warnhinweis, dass die Erweiterungskategorie für die Tabelle oder Struktur fehlt, ignorieren.
Das Laufzeitobjekt enthält alle Informationen für den optimalen Zugriff von ABAP-Programmen und optimiert die Performance des Systems; erst danach können Sie Datensätze in die Tabelle schreiben. Nach der erfolgreichen Aktivierung erhalten Sie in der Statuszeile die Meldung »Objekt wurde aktiviert«.
Um nachzuprüfen, ob die Tabelle wirklich keine Datensätze beinhaltet, oder auch um schnell zu sehen, wie viele Datensätze in einer Tabelle enthalten sind, lassen Sie sich am besten anzeigen, wie viele Zeilen die Tabelle enthält. Hierzu navigieren Sie über Hilfsmittel • Tabelleninhalt • Anzeigen und gelangen in den Bildschirm des Data Browsers (siehe Abbildung 7.7).
Abbildung 7.7 Tabelleninhalt anzeigen
Dort öffnen Sie über den Button Anzahl Einträge ein Fenster für die Anzahl der Tabelleneinträge und sehen, dass die Tabelle leer ist; die Datensätze der Quelltabelle wurden demnach tatsächlich nicht mit kopiert (siehe Abbildung 7.8). Über den Schließen-Button verlassen Sie das Fenster wieder. Vom Data Browser gelangen Sie mit dem Zurück-Button () wieder zum Pflegebildschirm der Tabelle im ABAP Dictionary.
Abbildung 7.8 Anzahl der Datensätze in einer Tabelle prüfen
Vom Bildschirm Dictionary: Tabelle ändern ausgehend, können Sie jetzt mit einem einfachen Pflegedialog Datensätze in die Zieltabelle eingeben, und zwar über Hilfsmittel • Tabelleninhalt • Einträge erfassen. Hiermit verzweigen Sie in den Bildschirm zur Erfassung von Datensätzen, in dem Sie nun einige sinnvolle Testdatensätze eingeben können. Empfehlenswert sind ca. drei bis fünf Datensätze, die sich auch hinsichtlich Nicht-Schlüsselfeld-Inhalten unterscheiden. Da wir uns bei der weiteren Arbeit immer wieder auf diese Datensätze und die Tabelle beziehen werden, sollten die Datensätze auch zur manuellen Kontrolle leicht identifizierbar sein.
[+] Speichern nicht vergessen
Jeden Datensatz speichern Sie über den Sichern-Button (). Nach dem Erfassen des letzten Datensatzes kehren Sie mit dem Zurück-Button (
) in den Bildschirm für die Tabellenpflege zurück.