Merge pull request #1037 from mkaesemann/settingsBuffer

Possible improvement for settings as described in issue #1032
This commit is contained in:
Lars Hvam 2017-10-29 08:17:57 +01:00 committed by GitHub
commit b457546963
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -372,8 +372,9 @@ CLASS lcl_persist_settings DEFINITION FINAL.
METHODS read METHODS read
RETURNING RETURNING
VALUE(ro_settings) TYPE REF TO lcl_settings. VALUE(ro_settings) TYPE REF TO lcl_settings.
PRIVATE SECTION.
PRIVATE SECTION.
DATA: mo_settings TYPE REF TO lcl_settings.
ENDCLASS. ENDCLASS.
@ -1879,15 +1880,30 @@ CLASS lcl_persist_settings IMPLEMENTATION.
METHOD modify. METHOD modify.
DATA: settings TYPE string.
settings = io_settings->get_settings_xml( ).
lcl_app=>db( )->modify( lcl_app=>db( )->modify(
iv_type = lcl_settings=>c_dbtype_settings iv_type = lcl_settings=>c_dbtype_settings
iv_value = '' iv_value = ''
iv_data = io_settings->get_settings_xml( ) ). iv_data = settings ).
" Settings have been modified: Update Buffered Settings
IF mo_settings IS BOUND.
mo_settings->set_xml_settings( settings ).
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD read. METHOD read.
IF mo_settings IS BOUND.
" Return Buffered Settings
ro_settings = mo_settings.
RETURN.
ENDIF.
" Settings have changed or have not yet been loaded
CREATE OBJECT ro_settings. CREATE OBJECT ro_settings.
TRY. TRY.
@ -1902,6 +1918,8 @@ CLASS lcl_persist_settings IMPLEMENTATION.
ENDTRY. ENDTRY.
mo_settings = ro_settings.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.