To provide a dialog for central access to the personalization data, a function module must be implemented with a fixed interface and stored when the key for the personalization object is registered.
FUNCTION BMENU_SETTINGS_EDIT.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" REFERENCE(P_PERS_OBJECT) TYPE REF TO CL_PERS_OBJECT_DATA
*" REFERENCE(P_VIEW_MODE) TYPE CHAR1
*" EXCEPTIONS
*" DIALOG_CANCELED
*" PERS_OBJECT_ERROR
*"----------------------------------------------------------------------
* clear global data
clear d215_settings.
* set global structure
call method p_pers_object->get_data
exporting
p_reload_data = space
importing
p_pers_data = d215_settings
exceptions
data_type_error = 1
no_data_found = 2
internal_error = 3
others = 4.
case sy-subrc.
when 1 or 3 or 4.
raise pers_object_error.
endcase.
* set view mode
d215_view_mode = p_view_mode.
* call dialog
call screen 215 starting at 10 5.
case d215_okcode.
when okay_command.
* set object data
call method p_pers_object->set_data
exporting
p_pers_data = d215_settings
p_write_through = space
exceptions
data_type_error = 1
internal_error = 2
others = 3.
if sy-subrc <> 0.
raise pers_object_error.
endif.
when cancel_command.
raise dialog_canceled.
endcase.
endfunction.
In the example, the data is read from the personalization object and written in a structure for the screen.
If the dialog is to support the buffering mechanism, the data may not be written directly to the database when they are stored (flag p_write_through must be space).