To provide an external table that already contains user-specific data for user or role maintenance, implement a class that in turn implements interface IF_PERS_EXTERNAL_TABLE.
Use class CL_SUPER_PERS_ACCESS to implement the interface. From this class all the necessary methods can be inherited. For compatibility reasons, always derive your implementation from this class. This improves stability if the interface is enhanced.
The methods contained will be described briefly below.
Parameter | Type | Description |
---|---|---|
P_USER_SOURCE | UNAME | Name of the source user |
P_USER_TARGET | UNAME | Name of the target user |
P_PERS_KEY | SPERS_KEY | Key for the personalization object |
P_NO_BUFFER | CHAR1 | Flag for avoiding buffering |
Parameter | Type | Description |
---|---|---|
P_USER | UNAME | Name of the user whose personalization data should be deleted |
P_PERS_KEY | SPERS_KEY | Key for the personalization object |
Parameter | Type | Description |
---|---|---|
P_USER_SOURCE | UNAME | Old user name |
P_USER_TARGET | UNAME | New user name |
P_PERS_KEY | SPERS_KEY | Key for the personalization object |
Parameter | Type | Description |
---|---|---|
P_UNAME | UNAME | Name of the source user |
P_PERS_KEY | SPERS_KEY | Key for the personalization object |
P_COMMIT | CHAR1 |
Flag for buffering: If the flag is 'X', the data is not buffered. |
Parameter | Type | Description |
---|---|---|
P_ROLE_NAME | AGR_NAME | Name of the role to be transported |
P_PERS_KEY | SPERS_KEY | Key for the personalization object |
P_ORDER | TRKORR | Transport request with which the data is transported. |
The methods for the dialog and for deleting, copying, and renaming roles must be implemented in the same way.
The dialog method for system data can be implemented analogously to that for users and roles.
The method for transporting data to the system can be implemented analogously to that for roles.
With this method, all the data is written from the buffer to the database.
Implement the SAVE_BUFFER method. Buffer the data if it is to be integrated in the user or role maintenance.
You can implement your own access methods with inheritance.
Class CL_SUPER_PERS_ACCESS can be used here. You only need to implement the constructor in your own derived class. Assign the names of the table and the field containing the user and role names in the constructor. Dynamically create a header line and an internal table for the access.
This is implemented in example class SPERSD_REUSE_EXTERNAL for table SPERS_FAV.
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 the example, the table types for the user-specific and role-specific data is defined and the corresponding buffer tables are created. The names of the table fields that should not be displayed when the generic dialog is used are also specified.