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
@ -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'