WDYN: fix dump, overwriting protected field

This commit is contained in:
larshp 2016-12-15 11:10:39 +00:00
parent 1ee92803d6
commit 4acf442e3c

View File

@ -61,15 +61,15 @@ CLASS lcl_object_wdyn DEFINITION INHERITING FROM lcl_objects_super FINAL.
add_fm_param_exporting add_fm_param_exporting
IMPORTING name TYPE string IMPORTING name TYPE string
value TYPE any value TYPE any
RETURNING value(rs_param) TYPE abap_func_parmbind, RETURNING VALUE(rs_param) TYPE abap_func_parmbind,
add_fm_param_tables add_fm_param_tables
IMPORTING name TYPE string IMPORTING name TYPE string
value TYPE ANY TABLE CHANGING value TYPE ANY TABLE
RETURNING value(rs_param) TYPE abap_func_parmbind, RETURNING VALUE(rs_param) TYPE abap_func_parmbind,
add_fm_exception add_fm_exception
IMPORTING name TYPE string IMPORTING name TYPE string
value TYPE i value TYPE i
RETURNING value(rs_exception) TYPE abap_func_excpbind. RETURNING VALUE(rs_exception) TYPE abap_func_excpbind.
ENDCLASS. "lcl_object_wdyn DEFINITION ENDCLASS. "lcl_object_wdyn DEFINITION
@ -167,8 +167,8 @@ CLASS lcl_object_wdyn IMPLEMENTATION.
ls_obj_new TYPE svrs2_versionable_object, ls_obj_new TYPE svrs2_versionable_object,
ls_obj_old TYPE svrs2_versionable_object. ls_obj_old TYPE svrs2_versionable_object.
FIELD-SYMBOLS: <ls_component> LIKE LINE OF mt_components, FIELD-SYMBOLS: <ls_component> LIKE LINE OF mt_components,
<ls_source> LIKE LINE OF mt_sources, <ls_source> LIKE LINE OF mt_sources,
<lt_ctrl_exceptions> TYPE ANY TABLE, <lt_ctrl_exceptions> TYPE ANY TABLE,
<lt_ctrl_exception_texts> TYPE ANY TABLE, <lt_ctrl_exception_texts> TYPE ANY TABLE,
<excp> TYPE ANY TABLE, <excp> TYPE ANY TABLE,
@ -385,10 +385,10 @@ CLASS lcl_object_wdyn IMPLEMENTATION.
METHOD read_controller. METHOD read_controller.
DATA: lt_components TYPE TABLE OF wdy_ctlr_compo_vrs, DATA: lt_components TYPE TABLE OF wdy_ctlr_compo_vrs,
lt_sources TYPE TABLE OF wdy_ctlr_compo_source_vrs, lt_sources TYPE TABLE OF wdy_ctlr_compo_source_vrs,
lt_definition TYPE TABLE OF wdy_controller, lt_definition TYPE TABLE OF wdy_controller,
lt_psmodilog TYPE TABLE OF smodilog, lt_psmodilog TYPE TABLE OF smodilog,
lt_psmodisrc TYPE TABLE OF smodisrc, lt_psmodisrc TYPE TABLE OF smodisrc,
lt_fm_param TYPE abap_func_parmbind_tab, lt_fm_param TYPE abap_func_parmbind_tab,
lt_fm_exception TYPE abap_func_excpbind_tab. lt_fm_exception TYPE abap_func_excpbind_tab.
@ -403,46 +403,62 @@ CLASS lcl_object_wdyn IMPLEMENTATION.
value = is_key ) INTO TABLE lt_fm_param. value = is_key ) INTO TABLE lt_fm_param.
INSERT add_fm_param_exporting( name = 'GET_ALL_TRANSLATIONS' INSERT add_fm_param_exporting( name = 'GET_ALL_TRANSLATIONS'
value = abap_false ) INTO TABLE lt_fm_param. value = abap_false ) INTO TABLE lt_fm_param.
INSERT add_fm_param_tables( name = 'DEFINITION' INSERT add_fm_param_tables(
value = lt_definition ) INTO TABLE lt_fm_param. EXPORTING name = 'DEFINITION'
INSERT add_fm_param_tables( name = 'DESCRIPTIONS' CHANGING value = lt_definition ) INTO TABLE lt_fm_param.
value = rs_controller-descriptions ) INTO TABLE lt_fm_param. INSERT add_fm_param_tables(
INSERT add_fm_param_tables( name = 'CONTROLLER_USAGES' EXPORTING name = 'DESCRIPTIONS'
value = rs_controller-controller_usages ) INTO TABLE lt_fm_param. CHANGING value = rs_controller-descriptions ) INTO TABLE lt_fm_param.
INSERT add_fm_param_tables( name = 'CONTROLLER_COMPONENTS' INSERT add_fm_param_tables(
value = lt_components ) INTO TABLE lt_fm_param. EXPORTING name = 'CONTROLLER_USAGES'
INSERT add_fm_param_tables( name = 'CONTROLLER_COMPONENT_SOURCES' CHANGING value = rs_controller-controller_usages ) INTO TABLE lt_fm_param.
value = lt_sources ) INTO TABLE lt_fm_param. INSERT add_fm_param_tables(
INSERT add_fm_param_tables( name = 'CONTROLLER_COMPONENT_TEXTS' EXPORTING name = 'CONTROLLER_COMPONENTS'
value = rs_controller-controller_component_texts ) INTO TABLE lt_fm_param. CHANGING value = lt_components ) INTO TABLE lt_fm_param.
INSERT add_fm_param_tables( name = 'CONTROLLER_PARAMETERS' INSERT add_fm_param_tables(
value = rs_controller-controller_parameters ) INTO TABLE lt_fm_param. EXPORTING name = 'CONTROLLER_COMPONENT_SOURCES'
INSERT add_fm_param_tables( name = 'CONTROLLER_PARAMETER_TEXTS' CHANGING value = lt_sources ) INTO TABLE lt_fm_param.
value = rs_controller-controller_parameter_texts ) INTO TABLE lt_fm_param. INSERT add_fm_param_tables(
INSERT add_fm_param_tables( name = 'CONTEXT_NODES' EXPORTING name = 'CONTROLLER_COMPONENT_TEXTS'
value = rs_controller-context_nodes ) INTO TABLE lt_fm_param. CHANGING value = rs_controller-controller_component_texts ) INTO TABLE lt_fm_param.
INSERT add_fm_param_tables( name = 'CONTEXT_ATTRIBUTES' INSERT add_fm_param_tables(
value = rs_controller-context_attributes ) INTO TABLE lt_fm_param. EXPORTING name = 'CONTROLLER_PARAMETERS'
INSERT add_fm_param_tables( name = 'CONTEXT_MAPPINGS' CHANGING value = rs_controller-controller_parameters ) INTO TABLE lt_fm_param.
value = rs_controller-context_mappings ) INTO TABLE lt_fm_param. INSERT add_fm_param_tables(
INSERT add_fm_param_tables( name = 'FIELDGROUPS' EXPORTING name = 'CONTROLLER_PARAMETER_TEXTS'
value = rs_controller-fieldgroups ) INTO TABLE lt_fm_param. CHANGING value = rs_controller-controller_parameter_texts ) INTO TABLE lt_fm_param.
INSERT add_fm_param_tables(
EXPORTING name = 'CONTEXT_NODES'
CHANGING value = rs_controller-context_nodes ) INTO TABLE lt_fm_param.
INSERT add_fm_param_tables(
EXPORTING name = 'CONTEXT_ATTRIBUTES'
CHANGING value = rs_controller-context_attributes ) INTO TABLE lt_fm_param.
INSERT add_fm_param_tables(
EXPORTING name = 'CONTEXT_MAPPINGS'
CHANGING value = rs_controller-context_mappings ) INTO TABLE lt_fm_param.
INSERT add_fm_param_tables(
EXPORTING name = 'FIELDGROUPS'
CHANGING value = rs_controller-fieldgroups ) INTO TABLE lt_fm_param.
* Version 702 doesn't have these two attributes so we * Version 702 doesn't have these two attributes so we
* use them dynamically for downward compatibility * use them dynamically for downward compatibility
ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS' OF STRUCTURE rs_controller TO <lt_ctrl_exceptions>. ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS' OF STRUCTURE rs_controller TO <lt_ctrl_exceptions>.
IF sy-subrc = 0. IF sy-subrc = 0.
INSERT add_fm_param_tables( name = 'CONTROLLER_EXCEPTIONS' INSERT add_fm_param_tables(
value = <lt_ctrl_exceptions> ) INTO TABLE lt_fm_param. EXPORTING name = 'CONTROLLER_EXCEPTIONS'
CHANGING value = <lt_ctrl_exceptions> ) INTO TABLE lt_fm_param.
ENDIF. ENDIF.
ASSIGN COMPONENT 'CONTROLLER_EXCEPTION_TEXTS' OF STRUCTURE rs_controller TO <lt_ctrl_exception_texts>. ASSIGN COMPONENT 'CONTROLLER_EXCEPTION_TEXTS' OF STRUCTURE rs_controller TO <lt_ctrl_exception_texts>.
IF sy-subrc = 0. IF sy-subrc = 0.
INSERT add_fm_param_tables( name = 'CONTROLLER_EXCEPTION_TEXTS' INSERT add_fm_param_tables(
value = <lt_ctrl_exception_texts> ) INTO TABLE lt_fm_param. EXPORTING name = 'CONTROLLER_EXCEPTION_TEXTS'
CHANGING value = <lt_ctrl_exception_texts> ) INTO TABLE lt_fm_param.
ENDIF. ENDIF.
INSERT add_fm_param_tables( name = 'PSMODILOG' INSERT add_fm_param_tables(
value = lt_psmodilog ) INTO TABLE lt_fm_param. EXPORTING name = 'PSMODILOG'
INSERT add_fm_param_tables( name = 'PSMODISRC' CHANGING value = lt_psmodilog ) INTO TABLE lt_fm_param.
value = lt_psmodisrc ) INTO TABLE lt_fm_param. INSERT add_fm_param_tables(
EXPORTING name = 'PSMODISRC'
CHANGING value = lt_psmodisrc ) INTO TABLE lt_fm_param.
* FM exceptions * FM exceptions
INSERT add_fm_exception( name = 'NOT_EXISTING' INSERT add_fm_exception( name = 'NOT_EXISTING'
@ -591,8 +607,8 @@ CLASS lcl_object_wdyn IMPLEMENTATION.
ls_component_key TYPE wdy_md_component_key, ls_component_key TYPE wdy_md_component_key,
ls_view_key TYPE wdy_md_view_key. ls_view_key TYPE wdy_md_view_key.
FIELD-SYMBOLS: <ls_object> LIKE LINE OF lt_objects, FIELD-SYMBOLS: <ls_object> LIKE LINE OF lt_objects,
<ls_meta> LIKE LINE OF rs_component-ctlr_metadata, <ls_meta> LIKE LINE OF rs_component-ctlr_metadata,
<lt_ctrl_exceptions> TYPE ANY TABLE, <lt_ctrl_exceptions> TYPE ANY TABLE,
<lt_ctrl_exception_texts> TYPE ANY TABLE. <lt_ctrl_exception_texts> TYPE ANY TABLE.