
Implementieren Sie eine Klasse, die das Interface IF_PERS_EXTERNAL_TABLE realisiert, um eine externe Tabelle, die bereits benutzerspezifische Daten enthält, für die Benutzer- bzw. Rollenpflege zugänglich zu machen.
Verwenden Sie die Klasse CL_SUPER_PERS_ACCESS, um das Interface zu implementieren. Von dieser Klasse können alle nötigen Methoden geerbt werden. Es ist aus Kompatibilitätsgründen empfehlenswert, die eigene Implementation immer von dieser Klasse abzuleiten. Dadurch kann die Stabilität bei eventuellen Erweiterungen des Interfaces besser gewährleistet werden.
Im Folgenden wird kurz die Bedeutung der enthaltenen Methoden erläutert.
| Parameter | Typ | Beschreibung |
|---|---|---|
| P_USER_SOURCE | UNAME | Name des Quellbenutzers |
| P_USER_TARGET | UNAME | Name des Zielbenutzers |
| P_PERS_KEY | SPERS_KEY | Schlüssel für das Personalisierungsobjekt |
| P_NO_BUFFER | CHAR1 | Kennzeichen für die Umgehung der Pufferung |
| Parameter | Typ | Beschreibung |
|---|---|---|
| P_USER | UNAME | Name des Benutzers, dessen Personalisierungsdaten gelöscht werden sollen |
| P_PERS_KEY | SPERS_KEY | Schlüssel für das Personalisierungsobjekt |
| Parameter | Typ | Beschreibung |
|---|---|---|
| P_USER_SOURCE | UNAME | Alter Benutzername |
| P_USER_TARGET | UNAME | Neuer Benutzername |
| P_PERS_KEY | SPERS_KEY | Schlüssel für das Personalisierungsobjekt |
| Parameter | Typ | Beschreibung |
|---|---|---|
| P_UNAME | UNAME | Name des Quellbenutzers |
| P_PERS_KEY | SPERS_KEY | Schlüssel für das Personalisierungsobjekt |
| P_COMMIT | CHAR1 | Kennzeichen für die Pufferung: Wenn das Kennzeichen auf 'X' gesetzt ist, werden die Daten nicht gepuffert. |
| Parameter | Typ | Beschreibung |
|---|---|---|
| P_ROLE_NAME | AGR_NAME | Name der zu transportierenden Rolle |
| P_PERS_KEY | SPERS_KEY | Schlüssel für das Personalisierungsobjekt |
| P_ORDER | TRKORR | Transportauftrag, mit dem die Daten transportiert werden |
Die Methoden für den Dialog, das Löschen, Kopieren und Umbenennen von Rollen müssen analog implementiert werden.
Die Dialogmethode zur Systemebene kann analog zu der Methode zur Benutzer- und Rollenebene implementiert werden.
Die Methode zum Transport von Daten zur Systemebene kann analog zur entsprechenden Methode auf Rollenebene implementiert werden.
Mit Hilfe dieser Methode werden alle Daten vom Puffer auf die Datenbank geschrieben.
Implementieren Sie die Methode SAVE_BUFFER. Für die Integration in die Benutzer- bzw. Rollenpflege wird eine Pufferung der Daten benötigt.
Die Implementation der eigenen Zugriffsmethoden kann mit Hilfe von Vererbung realisiert werden.
Dazu steht die Klasse CL_SUPER_PERS_ACCESS zur Verfügung. In der eigenen abgeleiteten Klasse müssen Sie lediglich den Konstruktor implementieren. Weisen Sie im Konstruktor die Bezeichner für den Tabellennamen und für das Feld zu, das den Benutzer- bzw. Rollennamen enthält. Erzeugen Sie für den Zugriff dynamisch eine Kopfzeile und eine interne Tabelle.
In der Beispielklasse SPERSD_REUSE_EXTERNAL ist dies für die Tabelle SPERS_FAV realisiert.
method CONSTRUCTOR.
* ...
data: l_fieldname type fieldname.
* set types for buffer table
types: t_buffer_table_user type standard table of spersd_fav
with default key.
types: t_buffer_line_user type spersd_fav.
types: t_buffer_table_role type standard table of spersd_fav
with default key.
types: t_buffer_line_role type spersd_fav.
* set user table name
table_user = 'SPERSD_FAV'.
field_user = 'UNAME'.
* set user table name
table_role = 'SPERSD_FAV'.
field_role = 'ROLE'.
* create buffer table and work area
create data buffer_table_user type t_buffer_table_user.
create data buffer_line_user type t_buffer_line_user.
* create buffer table and work area
create data buffer_table_role type t_buffer_table_role.
create data buffer_line_role type t_buffer_line_role.
* set hidden fields for generic dialog
l_fieldname = 'MANDT'.
append l_fieldname to dialog_fields_hide.
l_fieldname = 'UNAME'.
append l_fieldname to dialog_fields_hide.
l_fieldname = 'ROLE'.
append l_fieldname to dialog_fields_hide.
l_fieldname = 'NUM'.
append l_fieldname to dialog_fields_hide.
endmethod.In dem Beispiel werden zunächst die Tabellentypen für die benutzer- und die rollenabhängigen Daten definiert und die entsprechenden Puffertabellen angelegt. Außerdem werden die Namen der Tabellenfelder spezifiziert, die bei Benutzung des generischen Dialogs nicht angezeigt werden sollen.