7.4 Schlüsselfelder von Tabellen manipulieren 

Solange nur Nicht-Schlüsselfelder in der Tabelle und in den zugeordneten Strukturen verändert werden, können Sie davon ausgehen, dass die Änderungen die physische Datenbank nicht sehr tiefgreifend betreffen.
Jede Veränderung an Schlüsselfeldern betrifft hingegen die physische Datenbank tiefgreifend und erfordert eine Anpassung der physischen Tabellenstruktur. Hierzu ein Beispiel: In unserer ersten Tabelle ZTEILNEHMER gab es vier Felder; zwei davon waren Schlüsselfelder: MANDANT und TNUMMER (siehe Abbildung 7.36).
Abbildung 7.36 Tabelle mit zwei Schlüsselfeldern
Um nun nachträglich ein drittes Feld als Schlüsselfeld zu definieren, müssen Sie als Erstes berücksichtigen, dass Schlüsselfelder als Block am Anfang der Feldliste stehen. Das dritte Schlüsselfeld müsste daher in die dritte Zeile geschoben werden, falls es sich um ein zusätzliches oder anderes Feld als TNAME handeln sollte.
Dies erreichen Sie relativ einfach über die Buttons Ausschneiden, Kopieren, Einsetzen, Zeile einfügen und Zeile löschen, die sich ebenfalls auf der Registerkarte Felder direkt über der ersten Zeile befinden. Stellen Sie beispielsweise den Cursor in die Zeile vor der einzufügenden Zeile, und erzeugen Sie über den Button Zeile einfügen eine Leerzeile. In unserem Beispiel verwenden wir das Feld TNAME allerdings als weiteres Schlüsselfeld, das Sie als Key-Feld markieren, und aktivieren anschließend die Tabelle (siehe Abbildung 7.37).
Abbildung 7.37 Um ein zusätzliches Schlüsselfeld ergänzte Tabelle
[ ! ] Risiken beim Entfernen von Schlüsselfeldern
Nach dem Einpflegen von Datensätzen könnte die Tabelle Datensätze enthalten, die sich zwar hinsichtlich der Schlüsselfelder eindeutig voneinander unterscheiden, aber sonst teilweise Redundanzen aufweisen (siehe Abbildung 7.38). Derartige Datenkonstellationen können beim Entfernen oder Löschen von Schlüsselfeldern zu erheblichen Problemen führen. Falls beispielsweise das Feld TNUMMER zu einem Nicht-Schlüsselfeld würde, wäre der Schlüssel für zwei Teilnehmer mit dem Namen Ericson nicht mehr eindeutig und hätte Datenverlust zur Folge.
Abbildung 7.38 Tabelle mit ähnlichen Datensätzen
Wenn Sie das Feld TNAME wieder zu einem Nicht-Schlüsselfeld umwandeln und versuchen, die Tabelle zu aktivieren, erhalten Sie die Fehlermeldung, dass bei der Aktivierung der Tabelle Fehler aufgetreten seien.
Lassen Sie sich mittels des Ja-Buttons das Fehlerprotokoll anzeigen, sehen Sie, dass das Löschen von Schlüsselfeldern tatsächlich eine physische Umsetzung der Tabelle auf der Datenbank erfordert (siehe Abbildung 7.39).
Die physische Umsetzung der Tabelle nehmen Sie über die Datenbank-Utility des ABAP Dictionarys vor, das Sie über Hilfsmittel • Datenbankobjekt • Datenbank-Utility erreichen (siehe Abbildung 7.40).
Abbildung 7.39 Fehlerprotokoll beim Aktivieren der Tabelle
Abbildung 7.40 Aufruf des Datenbank-Utilitys
Die Datenbank-Utility stellt die einheitliche Benutzeroberfläche für alle zertifizierten Datenbanksysteme dar. Mit diesem Werkzeug passen Sie die Datenbank an und aktivieren gleichzeitig die Tabelle.
Da es sich um eine kleine Tabelle mit wenigen Datensätzen und einer geringen Anzahl abhängiger Objekte handelt, führen Sie die Datenbankoperation am besten direkt im Dialog aus und versuchen auch, die Daten zu erhalten (siehe Abbildung 7.41). In anderen Fällen mit komplexen Datensätzen müssen Sie mit erheblichen Laufzeiten rechnen, sodass sich die Verarbeitung im Hintergrund empfiehlt. Für uns genügt aber die Verarbeitungsart Direkt, und Sie starten die Anpassung und Aktivierung über den Button Aktivieren und Datenbank anpassen.
Abbildung 7.41 Datenbank-Utility
Die folgende Sicherheitsabfrage (Auftrag: Anpassen) beantworten Sie mit dem Button Ja, und Sie erhalten in der Statuszeile die Meldung »Auftrag für ZTEILNEHMER erfolgreich durchgeführt«. Wenn Sie nun in den Tabellen-Pflegebildschirm des ABAP Dictionarys zurückgehen, sehen Sie, dass die Tabelle den Status aktiv hat; alle Datensätze der Tabelle bleiben erhalten.