mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
808 lines
29 KiB
ABAP
808 lines
29 KiB
ABAP
*&---------------------------------------------------------------------*
|
|
*& Include ZABAPGIT_OBJECT_WDYN
|
|
*&---------------------------------------------------------------------*
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_object_wdyn DEFINITION
|
|
*----------------------------------------------------------------------*
|
|
*
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_object_wdyn DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
|
|
|
PUBLIC SECTION.
|
|
INTERFACES lif_object.
|
|
ALIASES mo_files FOR lif_object~mo_files.
|
|
|
|
PRIVATE SECTION.
|
|
|
|
DATA:
|
|
mt_components TYPE TABLE OF wdy_ctlr_compo_vrs,
|
|
mt_sources TYPE TABLE OF wdy_ctlr_compo_source_vrs.
|
|
|
|
METHODS:
|
|
get_limu_objects
|
|
RETURNING VALUE(rt_objects) TYPE wdy_md_transport_keys,
|
|
read
|
|
RETURNING VALUE(rs_component) TYPE wdy_component_metadata
|
|
RAISING lcx_exception,
|
|
read_controller
|
|
IMPORTING is_key TYPE wdy_md_controller_key
|
|
RETURNING VALUE(rs_controller) TYPE wdy_md_controller_meta_data
|
|
RAISING lcx_exception,
|
|
read_definition
|
|
IMPORTING is_key TYPE wdy_md_component_key
|
|
RETURNING VALUE(rs_definition) TYPE wdy_md_component_meta_data
|
|
RAISING lcx_exception,
|
|
read_view
|
|
IMPORTING is_key TYPE wdy_md_view_key
|
|
RETURNING VALUE(rs_view) TYPE wdy_md_view_meta_data
|
|
RAISING lcx_exception,
|
|
recover_controller
|
|
IMPORTING is_controller TYPE wdy_md_controller_meta_data
|
|
RAISING lcx_exception,
|
|
recover_definition
|
|
IMPORTING is_definition TYPE wdy_md_component_meta_data
|
|
RAISING lcx_exception,
|
|
recover_view
|
|
IMPORTING is_view TYPE wdy_md_view_meta_data
|
|
RAISING lcx_exception,
|
|
delta_controller
|
|
IMPORTING is_controller TYPE wdy_md_controller_meta_data
|
|
RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object
|
|
RAISING lcx_exception,
|
|
delta_definition
|
|
IMPORTING is_definition TYPE wdy_md_component_meta_data
|
|
RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object
|
|
RAISING lcx_exception,
|
|
delta_view
|
|
IMPORTING is_view TYPE wdy_md_view_meta_data
|
|
RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object
|
|
RAISING lcx_exception,
|
|
add_fm_param_exporting
|
|
IMPORTING i_name TYPE string
|
|
i_value TYPE any
|
|
CHANGING ct_param TYPE abap_func_parmbind_tab,
|
|
add_fm_param_tables
|
|
IMPORTING i_name TYPE string
|
|
CHANGING ct_value TYPE ANY TABLE
|
|
ct_param TYPE abap_func_parmbind_tab,
|
|
add_fm_exception
|
|
IMPORTING i_name TYPE string
|
|
i_value TYPE i
|
|
CHANGING ct_exception TYPE abap_func_excpbind_tab.
|
|
|
|
ENDCLASS. "lcl_object_wdyn DEFINITION
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_object_wdyn IMPLEMENTATION
|
|
*----------------------------------------------------------------------*
|
|
*
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_object_wdyn IMPLEMENTATION.
|
|
|
|
METHOD lif_object~has_changed_since.
|
|
rv_changed = abap_true.
|
|
ENDMETHOD. "lif_object~has_changed_since
|
|
|
|
METHOD lif_object~changed_by.
|
|
rv_user = c_user_unknown. " todo
|
|
ENDMETHOD. "lif_object~changed_by
|
|
|
|
METHOD lif_object~get_metadata.
|
|
rs_metadata = get_metadata( ).
|
|
ENDMETHOD. "lif_object~get_metadata
|
|
|
|
METHOD lif_object~exists.
|
|
|
|
DATA: lv_component_name TYPE wdy_component-component_name.
|
|
|
|
|
|
SELECT SINGLE component_name FROM wdy_component
|
|
INTO lv_component_name
|
|
WHERE component_name = ms_item-obj_name
|
|
AND version = 'A'. "#EC CI_GENBUFF
|
|
rv_bool = boolc( sy-subrc = 0 ).
|
|
|
|
ENDMETHOD. "lif_object~exists
|
|
|
|
METHOD delta_definition.
|
|
|
|
DATA: ls_key TYPE wdy_md_component_key,
|
|
lv_found TYPE abap_bool,
|
|
ls_obj_new TYPE svrs2_versionable_object,
|
|
li_component TYPE REF TO if_wdy_md_component,
|
|
ls_obj_old TYPE svrs2_versionable_object.
|
|
|
|
|
|
ls_key-component_name = is_definition-definition-component_name.
|
|
|
|
lv_found = cl_wdy_md_component=>check_existency( ls_key-component_name ).
|
|
IF lv_found = abap_false.
|
|
TRY.
|
|
cl_wdy_md_component=>create_complete(
|
|
EXPORTING
|
|
name = ls_key-component_name
|
|
IMPORTING
|
|
component = li_component ).
|
|
li_component->save_to_database( ).
|
|
li_component->unlock( ).
|
|
CATCH cx_wdy_md_exception.
|
|
lcx_exception=>raise( 'error creating dummy component' ).
|
|
ENDTRY.
|
|
ENDIF.
|
|
|
|
ls_obj_new-objtype = wdyn_limu_component_definition.
|
|
ls_obj_new-objname = ls_key-component_name.
|
|
|
|
ls_obj_old-objtype = wdyn_limu_component_definition.
|
|
ls_obj_old-objname = ls_key-component_name.
|
|
|
|
APPEND is_definition-definition TO ls_obj_old-wdyd-defin.
|
|
ls_obj_old-wdyd-descr = is_definition-descriptions.
|
|
ls_obj_old-wdyd-cusag = is_definition-component_usages.
|
|
ls_obj_old-wdyd-intrf = is_definition-interface_implementings.
|
|
ls_obj_old-wdyd-libra = is_definition-library_usages.
|
|
ls_obj_old-wdyd-ctuse = is_definition-ext_ctlr_usages.
|
|
ls_obj_old-wdyd-ctmap = is_definition-ext_ctx_mappings.
|
|
|
|
CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA'
|
|
EXPORTING
|
|
obj_old = ls_obj_new
|
|
obj_new = ls_obj_old
|
|
CHANGING
|
|
delta = rs_delta
|
|
EXCEPTIONS
|
|
inconsistent_objects = 1.
|
|
IF sy-subrc <> 0.
|
|
lcx_exception=>raise( 'error from SVRS_MAKE_OBJECT_DELTA' ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD. "delta_definition
|
|
|
|
METHOD delta_controller.
|
|
|
|
DATA: li_controller TYPE REF TO if_wdy_md_controller,
|
|
lv_found TYPE abap_bool,
|
|
ls_key TYPE wdy_md_controller_key,
|
|
ls_obj_new TYPE svrs2_versionable_object,
|
|
ls_obj_old TYPE svrs2_versionable_object.
|
|
|
|
FIELD-SYMBOLS: <ls_component> LIKE LINE OF mt_components,
|
|
<ls_source> LIKE LINE OF mt_sources,
|
|
<lt_ctrl_exceptions> TYPE ANY TABLE,
|
|
<lt_ctrl_exception_texts> TYPE ANY TABLE,
|
|
<excp> TYPE ANY TABLE,
|
|
<excpt> TYPE ANY TABLE.
|
|
|
|
|
|
ls_key-component_name = is_controller-definition-component_name.
|
|
ls_key-controller_name = is_controller-definition-controller_name.
|
|
|
|
lv_found = cl_wdy_md_controller=>check_existency(
|
|
component_name = ls_key-component_name
|
|
controller_name = ls_key-controller_name ).
|
|
IF lv_found = abap_false.
|
|
TRY.
|
|
li_controller ?= cl_wdy_md_controller=>create_complete(
|
|
component_name = ls_key-component_name
|
|
controller_name = ls_key-controller_name
|
|
controller_type = is_controller-definition-controller_type ).
|
|
li_controller->save_to_database( ).
|
|
li_controller->unlock( ).
|
|
CATCH cx_wdy_md_exception.
|
|
lcx_exception=>raise( 'error creating dummy controller' ).
|
|
ENDTRY.
|
|
ENDIF.
|
|
|
|
ls_obj_new-objtype = wdyn_limu_component_controller.
|
|
ls_obj_new-objname = ls_key.
|
|
|
|
ls_obj_old-objtype = wdyn_limu_component_controller.
|
|
ls_obj_old-objname = ls_key.
|
|
|
|
APPEND is_controller-definition TO ls_obj_old-wdyc-defin.
|
|
|
|
LOOP AT mt_components ASSIGNING <ls_component>
|
|
WHERE component_name = ls_key-component_name
|
|
AND controller_name = ls_key-controller_name.
|
|
APPEND <ls_component> TO ls_obj_old-wdyc-ccomp.
|
|
ENDLOOP.
|
|
LOOP AT mt_sources ASSIGNING <ls_source>
|
|
WHERE component_name = ls_key-component_name
|
|
AND controller_name = ls_key-controller_name.
|
|
APPEND <ls_source> TO ls_obj_old-wdyc-ccoms.
|
|
ENDLOOP.
|
|
|
|
ls_obj_old-wdyc-descr = is_controller-descriptions.
|
|
ls_obj_old-wdyc-cusag = is_controller-controller_usages.
|
|
ls_obj_old-wdyc-ccomt = is_controller-controller_component_texts.
|
|
ls_obj_old-wdyc-cpara = is_controller-controller_parameters.
|
|
ls_obj_old-wdyc-cpart = is_controller-controller_parameter_texts.
|
|
ls_obj_old-wdyc-cnode = is_controller-context_nodes.
|
|
ls_obj_old-wdyc-cattr = is_controller-context_attributes.
|
|
ls_obj_old-wdyc-cmapp = is_controller-context_mappings.
|
|
* Version 702 doesn't have these two attributes so we
|
|
* use them dynamically for downward compatibility
|
|
ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS' OF STRUCTURE is_controller
|
|
TO <lt_ctrl_exceptions>.
|
|
IF sy-subrc = 0.
|
|
ASSIGN COMPONENT 'EXCP' OF STRUCTURE ls_obj_old-wdyc TO <excp>.
|
|
IF sy-subrc = 0.
|
|
<excp> = <lt_ctrl_exceptions>.
|
|
ENDIF.
|
|
ENDIF.
|
|
ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS_TEXTS' OF STRUCTURE is_controller
|
|
TO <lt_ctrl_exception_texts>.
|
|
IF sy-subrc = 0.
|
|
ASSIGN COMPONENT 'EXCPT' OF STRUCTURE ls_obj_old-wdyc TO <excpt>.
|
|
IF sy-subrc = 0.
|
|
<excpt> = <lt_ctrl_exception_texts>.
|
|
ENDIF.
|
|
ENDIF.
|
|
ls_obj_old-wdyc-fgrps = is_controller-fieldgroups.
|
|
|
|
CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA'
|
|
EXPORTING
|
|
obj_old = ls_obj_new
|
|
obj_new = ls_obj_old
|
|
CHANGING
|
|
delta = rs_delta
|
|
EXCEPTIONS
|
|
inconsistent_objects = 1.
|
|
IF sy-subrc <> 0.
|
|
lcx_exception=>raise( 'error from SVRS_MAKE_OBJECT_DELTA' ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD. "delta_controller
|
|
|
|
METHOD delta_view.
|
|
|
|
DATA: ls_key TYPE wdy_md_view_key,
|
|
ls_obj_new TYPE svrs2_versionable_object,
|
|
ls_obj_old TYPE svrs2_versionable_object,
|
|
lv_found TYPE abap_bool,
|
|
li_view TYPE REF TO if_wdy_md_abstract_view.
|
|
|
|
FIELD-SYMBOLS: <ls_def> LIKE LINE OF ls_obj_old-wdyv-defin.
|
|
|
|
|
|
ls_key-component_name = is_view-definition-component_name.
|
|
ls_key-view_name = is_view-definition-view_name.
|
|
|
|
lv_found = cl_wdy_md_abstract_view=>check_existency(
|
|
component_name = ls_key-component_name
|
|
name = ls_key-view_name ).
|
|
IF lv_found = abap_false.
|
|
TRY.
|
|
li_view = cl_wdy_md_abstract_view=>create(
|
|
component_name = is_view-definition-component_name
|
|
view_name = is_view-definition-view_name
|
|
type = is_view-definition-type ).
|
|
li_view->save_to_database( ).
|
|
li_view->unlock( ).
|
|
CATCH cx_wdy_md_exception.
|
|
lcx_exception=>raise( 'error creating dummy view' ).
|
|
ENDTRY.
|
|
ENDIF.
|
|
|
|
ls_obj_new-objtype = wdyn_limu_component_view.
|
|
ls_obj_new-objname = ls_key.
|
|
|
|
ls_obj_old-objtype = wdyn_limu_component_view.
|
|
ls_obj_old-objname = ls_key.
|
|
|
|
APPEND INITIAL LINE TO ls_obj_old-wdyv-defin ASSIGNING <ls_def>.
|
|
MOVE-CORRESPONDING is_view-definition TO <ls_def>.
|
|
|
|
ls_obj_old-wdyv-descr = is_view-descriptions.
|
|
ls_obj_old-wdyv-vcont = is_view-view_containers.
|
|
ls_obj_old-wdyv-vcntt = is_view-view_container_texts.
|
|
ls_obj_old-wdyv-ibplg = is_view-iobound_plugs.
|
|
ls_obj_old-wdyv-ibplt = is_view-iobound_plug_texts.
|
|
ls_obj_old-wdyv-plpar = is_view-plug_parameters.
|
|
ls_obj_old-wdyv-plprt = is_view-plug_parameter_texts.
|
|
ls_obj_old-wdyv-uiele = is_view-ui_elements.
|
|
ls_obj_old-wdyv-uicon = is_view-ui_context_bindings.
|
|
ls_obj_old-wdyv-uievt = is_view-ui_event_bindings.
|
|
ls_obj_old-wdyv-uiddc = is_view-ui_ddic_bindings.
|
|
ls_obj_old-wdyv-uiprp = is_view-ui_properties.
|
|
ls_obj_old-wdyv-navil = is_view-navigation_links.
|
|
ls_obj_old-wdyv-navit = is_view-navigation_target_refs.
|
|
ls_obj_old-wdyv-vshno = is_view-vsh_nodes.
|
|
ls_obj_old-wdyv-vshpl = is_view-vsh_placeholders.
|
|
ls_obj_old-wdyv-views = is_view-viewset_properties.
|
|
|
|
CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA'
|
|
EXPORTING
|
|
obj_old = ls_obj_new
|
|
obj_new = ls_obj_old
|
|
CHANGING
|
|
delta = rs_delta
|
|
EXCEPTIONS
|
|
inconsistent_objects = 1.
|
|
IF sy-subrc <> 0.
|
|
lcx_exception=>raise( 'error from SVRS_MAKE_OBJECT_DELTA' ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD. "delta_view
|
|
|
|
METHOD recover_definition.
|
|
|
|
DATA: ls_key TYPE wdy_md_component_key,
|
|
lv_corrnr TYPE trkorr,
|
|
ls_delta TYPE svrs2_xversionable_object.
|
|
|
|
|
|
ls_delta = delta_definition( is_definition ).
|
|
ls_key-component_name = is_definition-definition-component_name.
|
|
|
|
cl_wdy_md_component=>recover_version(
|
|
EXPORTING
|
|
component_key = ls_key
|
|
delta = ls_delta-wdyd
|
|
CHANGING
|
|
corrnr = lv_corrnr ).
|
|
|
|
ENDMETHOD. "recover_definition
|
|
|
|
METHOD recover_controller.
|
|
|
|
DATA: ls_key TYPE wdy_controller_key,
|
|
lv_corrnr TYPE trkorr,
|
|
ls_delta TYPE svrs2_xversionable_object.
|
|
|
|
|
|
ls_delta = delta_controller( is_controller ).
|
|
ls_key-component_name = is_controller-definition-component_name.
|
|
ls_key-controller_name = is_controller-definition-controller_name.
|
|
|
|
cl_wdy_md_controller=>recover_version(
|
|
EXPORTING
|
|
controller_key = ls_key
|
|
delta = ls_delta-wdyc
|
|
CHANGING
|
|
corrnr = lv_corrnr ).
|
|
|
|
ENDMETHOD. "recover_controller
|
|
|
|
METHOD recover_view.
|
|
|
|
DATA: ls_key TYPE wdy_md_view_key,
|
|
lv_corrnr TYPE trkorr,
|
|
ls_delta TYPE svrs2_xversionable_object.
|
|
|
|
|
|
ls_delta = delta_view( is_view ).
|
|
ls_key-component_name = is_view-definition-component_name.
|
|
ls_key-view_name = is_view-definition-view_name.
|
|
|
|
cl_wdy_md_abstract_view=>recover_version(
|
|
EXPORTING
|
|
view_key = ls_key
|
|
delta = ls_delta-wdyv
|
|
CHANGING
|
|
corrnr = lv_corrnr ).
|
|
|
|
ENDMETHOD. "recover_view
|
|
|
|
METHOD read_controller.
|
|
|
|
DATA: lt_components TYPE TABLE OF wdy_ctlr_compo_vrs,
|
|
lt_sources TYPE TABLE OF wdy_ctlr_compo_source_vrs,
|
|
lt_definition TYPE TABLE OF wdy_controller,
|
|
lt_psmodilog TYPE TABLE OF smodilog,
|
|
lt_psmodisrc TYPE TABLE OF smodisrc,
|
|
lt_fm_param TYPE abap_func_parmbind_tab,
|
|
lt_fm_exception TYPE abap_func_excpbind_tab.
|
|
|
|
FIELD-SYMBOLS: <lt_ctrl_exceptions> TYPE ANY TABLE,
|
|
<lt_ctrl_exception_texts> TYPE ANY TABLE.
|
|
|
|
* Calling FM dynamically because version 702 has less parameters
|
|
|
|
* FM parameters
|
|
add_fm_param_exporting( EXPORTING i_name = 'CONTROLLER_KEY'
|
|
i_value = is_key
|
|
CHANGING ct_param = lt_fm_param ).
|
|
add_fm_param_exporting( EXPORTING i_name = 'GET_ALL_TRANSLATIONS'
|
|
i_value = abap_false
|
|
CHANGING ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'DEFINITION'
|
|
CHANGING ct_value = lt_definition
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'DESCRIPTIONS'
|
|
CHANGING ct_value = rs_controller-descriptions
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_USAGES'
|
|
CHANGING ct_value = rs_controller-controller_usages
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_COMPONENTS'
|
|
CHANGING ct_value = lt_components
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_COMPONENT_SOURCES'
|
|
CHANGING ct_value = lt_sources
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_COMPONENT_TEXTS'
|
|
CHANGING ct_value = rs_controller-controller_component_texts
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_PARAMETERS'
|
|
CHANGING ct_value = rs_controller-controller_parameters
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_PARAMETER_TEXTS'
|
|
CHANGING ct_value = rs_controller-controller_parameter_texts
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTEXT_NODES'
|
|
CHANGING ct_value = rs_controller-context_nodes
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTEXT_ATTRIBUTES'
|
|
CHANGING ct_value = rs_controller-context_attributes
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTEXT_MAPPINGS'
|
|
CHANGING ct_value = rs_controller-context_mappings
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'FIELDGROUPS'
|
|
CHANGING ct_value = rs_controller-fieldgroups
|
|
ct_param = lt_fm_param ).
|
|
* Version 702 doesn't have these two attributes so we
|
|
* use them dynamically for downward compatibility
|
|
ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS' OF STRUCTURE rs_controller TO <lt_ctrl_exceptions>.
|
|
IF sy-subrc = 0.
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_EXCEPTIONS'
|
|
CHANGING ct_value = <lt_ctrl_exceptions>
|
|
ct_param = lt_fm_param ).
|
|
ENDIF.
|
|
ASSIGN COMPONENT 'CONTROLLER_EXCEPTION_TEXTS' OF STRUCTURE rs_controller TO <lt_ctrl_exception_texts>.
|
|
IF sy-subrc = 0.
|
|
add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_EXCEPTION_TEXTS'
|
|
CHANGING ct_value = <lt_ctrl_exception_texts>
|
|
ct_param = lt_fm_param ).
|
|
ENDIF.
|
|
add_fm_param_tables( EXPORTING i_name = 'PSMODILOG'
|
|
CHANGING ct_value = lt_psmodilog
|
|
ct_param = lt_fm_param ).
|
|
add_fm_param_tables( EXPORTING i_name = 'PSMODISRC'
|
|
CHANGING ct_value = lt_psmodisrc
|
|
ct_param = lt_fm_param ).
|
|
|
|
* FM exceptions
|
|
add_fm_exception( EXPORTING i_name = 'NOT_EXISTING'
|
|
i_value = 1
|
|
CHANGING ct_exception = lt_fm_exception ).
|
|
add_fm_exception( EXPORTING i_name = 'OTHERS'
|
|
i_value = 2
|
|
CHANGING ct_exception = lt_fm_exception ).
|
|
|
|
CALL FUNCTION 'WDYC_GET_OBJECT'
|
|
PARAMETER-TABLE
|
|
lt_fm_param
|
|
EXCEPTION-TABLE
|
|
lt_fm_exception.
|
|
IF sy-subrc <> 0.
|
|
lcx_exception=>raise( 'error from WDYC_GET_OBJECT' ).
|
|
ENDIF.
|
|
|
|
APPEND LINES OF lt_components TO mt_components.
|
|
APPEND LINES OF lt_sources TO mt_sources.
|
|
|
|
READ TABLE lt_definition INDEX 1 INTO rs_controller-definition.
|
|
IF sy-subrc <> 0.
|
|
lcx_exception=>raise( 'WDYC, definition not found' ).
|
|
ENDIF.
|
|
|
|
CLEAR: rs_controller-definition-author,
|
|
rs_controller-definition-createdon,
|
|
rs_controller-definition-changedby,
|
|
rs_controller-definition-changedon.
|
|
|
|
ENDMETHOD. "read_controller
|
|
|
|
METHOD read_definition.
|
|
|
|
DATA: lt_definition TYPE TABLE OF wdy_component,
|
|
lt_psmodilog TYPE TABLE OF smodilog,
|
|
lt_psmodisrc TYPE TABLE OF smodisrc.
|
|
|
|
|
|
CALL FUNCTION 'WDYD_GET_OBJECT'
|
|
EXPORTING
|
|
component_key = is_key
|
|
get_all_translations = abap_false
|
|
TABLES
|
|
definition = lt_definition
|
|
descriptions = rs_definition-descriptions
|
|
component_usages = rs_definition-component_usages
|
|
interface_implementings = rs_definition-interface_implementings
|
|
library_usages = rs_definition-library_usages
|
|
ext_ctlr_usages = rs_definition-ext_ctlr_usages
|
|
ext_ctx_mappings = rs_definition-ext_ctx_mappings
|
|
psmodilog = lt_psmodilog " not optional in all versions
|
|
psmodisrc = lt_psmodisrc " not optional in all versions
|
|
EXCEPTIONS
|
|
not_existing = 1
|
|
OTHERS = 2.
|
|
IF sy-subrc = 1.
|
|
RETURN.
|
|
ELSEIF sy-subrc <> 0.
|
|
lcx_exception=>raise( 'error from WDYD_GET_OBJECT' ).
|
|
ENDIF.
|
|
|
|
READ TABLE lt_definition INDEX 1 INTO rs_definition-definition.
|
|
IF sy-subrc <> 0.
|
|
lcx_exception=>raise( 'WDYD, definition not found' ).
|
|
ENDIF.
|
|
|
|
CLEAR: rs_definition-definition-author,
|
|
rs_definition-definition-createdon,
|
|
rs_definition-definition-changedby,
|
|
rs_definition-definition-changedon,
|
|
rs_definition-definition-gendate,
|
|
rs_definition-definition-gentime.
|
|
|
|
ENDMETHOD. "read_definition
|
|
|
|
METHOD read_view.
|
|
|
|
DATA: lt_definition TYPE TABLE OF wdy_view_vrs,
|
|
lt_psmodilog TYPE TABLE OF smodilog,
|
|
lt_psmodisrc TYPE TABLE OF smodisrc.
|
|
|
|
FIELD-SYMBOLS: <ls_definition> LIKE LINE OF lt_definition.
|
|
|
|
|
|
CALL FUNCTION 'WDYV_GET_OBJECT'
|
|
EXPORTING
|
|
view_key = is_key
|
|
get_all_translations = abap_false
|
|
TABLES
|
|
definition = lt_definition
|
|
descriptions = rs_view-descriptions
|
|
view_containers = rs_view-view_containers
|
|
view_container_texts = rs_view-view_container_texts
|
|
iobound_plugs = rs_view-iobound_plugs
|
|
iobound_plug_texts = rs_view-iobound_plug_texts
|
|
plug_parameters = rs_view-plug_parameters
|
|
plug_parameter_texts = rs_view-plug_parameter_texts
|
|
ui_elements = rs_view-ui_elements
|
|
ui_context_bindings = rs_view-ui_context_bindings
|
|
ui_event_bindings = rs_view-ui_event_bindings
|
|
ui_ddic_bindings = rs_view-ui_ddic_bindings
|
|
ui_properties = rs_view-ui_properties
|
|
navigation_links = rs_view-navigation_links
|
|
navigation_target_refs = rs_view-navigation_target_refs
|
|
vsh_nodes = rs_view-vsh_nodes
|
|
vsh_placeholders = rs_view-vsh_placeholders
|
|
viewset_properties = rs_view-viewset_properties
|
|
psmodilog = lt_psmodilog
|
|
psmodisrc = lt_psmodisrc
|
|
EXCEPTIONS
|
|
not_existing = 1
|
|
OTHERS = 2.
|
|
IF sy-subrc <> 0.
|
|
lcx_exception=>raise( 'error from WDYV_GET_OBJECT' ).
|
|
ENDIF.
|
|
|
|
READ TABLE lt_definition INDEX 1 ASSIGNING <ls_definition>.
|
|
ASSERT sy-subrc = 0.
|
|
MOVE-CORRESPONDING <ls_definition> TO rs_view-definition.
|
|
|
|
CLEAR: rs_view-definition-author,
|
|
rs_view-definition-createdon,
|
|
rs_view-definition-changedby,
|
|
rs_view-definition-changedon.
|
|
|
|
ENDMETHOD. "read_view
|
|
|
|
METHOD get_limu_objects.
|
|
|
|
DATA: lv_name TYPE wdy_component_name.
|
|
|
|
|
|
lv_name = ms_item-obj_name.
|
|
CALL FUNCTION 'WDYN_GET_LIMU_OBJECTS'
|
|
EXPORTING
|
|
component_name = lv_name
|
|
IMPORTING
|
|
limu_objects = rt_objects.
|
|
|
|
ENDMETHOD. "get_limu_objects
|
|
|
|
METHOD read.
|
|
|
|
DATA: lt_objects TYPE wdy_md_transport_keys,
|
|
ls_controller_key TYPE wdy_md_controller_key,
|
|
ls_component_key TYPE wdy_md_component_key,
|
|
ls_view_key TYPE wdy_md_view_key.
|
|
|
|
FIELD-SYMBOLS: <ls_object> LIKE LINE OF lt_objects,
|
|
<ls_meta> LIKE LINE OF rs_component-ctlr_metadata,
|
|
<lt_ctrl_exceptions> TYPE ANY TABLE,
|
|
<lt_ctrl_exception_texts> TYPE ANY TABLE.
|
|
|
|
CLEAR mt_components.
|
|
CLEAR mt_sources.
|
|
|
|
lt_objects = get_limu_objects( ).
|
|
|
|
LOOP AT lt_objects ASSIGNING <ls_object>.
|
|
CASE <ls_object>-sub_type.
|
|
WHEN wdyn_limu_component_controller.
|
|
ls_controller_key = <ls_object>-sub_name.
|
|
APPEND read_controller( ls_controller_key ) TO rs_component-ctlr_metadata.
|
|
WHEN wdyn_limu_component_definition.
|
|
ls_component_key = <ls_object>-sub_name.
|
|
rs_component-comp_metadata = read_definition( ls_component_key ).
|
|
WHEN wdyn_limu_component_view.
|
|
ls_view_key = <ls_object>-sub_name.
|
|
APPEND read_view( ls_view_key ) TO rs_component-view_metadata.
|
|
WHEN OTHERS.
|
|
ASSERT 0 = 1.
|
|
ENDCASE.
|
|
ENDLOOP.
|
|
|
|
SORT rs_component-ctlr_metadata BY
|
|
definition-component_name ASCENDING
|
|
definition-controller_name ASCENDING.
|
|
|
|
LOOP AT rs_component-ctlr_metadata ASSIGNING <ls_meta>.
|
|
SORT <ls_meta>-descriptions.
|
|
SORT <ls_meta>-controller_usages.
|
|
SORT <ls_meta>-controller_components.
|
|
SORT <ls_meta>-controller_component_texts.
|
|
SORT <ls_meta>-controller_parameters.
|
|
SORT <ls_meta>-controller_parameter_texts.
|
|
SORT <ls_meta>-context_nodes.
|
|
SORT <ls_meta>-context_attributes.
|
|
SORT <ls_meta>-context_mappings.
|
|
SORT <ls_meta>-fieldgroups.
|
|
* Version 702 doesn't have these two attributes so we
|
|
* use them dynamically for downward compatibility
|
|
ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS' OF STRUCTURE <ls_meta> TO <lt_ctrl_exceptions>.
|
|
IF sy-subrc = 0.
|
|
SORT <lt_ctrl_exceptions>.
|
|
ENDIF.
|
|
ASSIGN COMPONENT 'CONTROLLER_EXCEPTION_TEXTS' OF STRUCTURE <ls_meta> TO <lt_ctrl_exception_texts>.
|
|
IF sy-subrc = 0.
|
|
SORT <lt_ctrl_exception_texts>.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
|
|
SORT mt_components BY
|
|
component_name ASCENDING
|
|
controller_name ASCENDING
|
|
cmpname ASCENDING.
|
|
|
|
SORT mt_sources BY
|
|
component_name ASCENDING
|
|
controller_name ASCENDING
|
|
cmpname ASCENDING
|
|
line_number ASCENDING.
|
|
|
|
ENDMETHOD. "read
|
|
|
|
METHOD add_fm_param_exporting.
|
|
|
|
DATA: ls_param LIKE LINE OF ct_param.
|
|
|
|
ls_param-kind = abap_func_exporting.
|
|
ls_param-name = i_name.
|
|
GET REFERENCE OF i_value INTO ls_param-value.
|
|
|
|
INSERT ls_param INTO TABLE ct_param.
|
|
|
|
ENDMETHOD. "add_fm_param_exporting
|
|
|
|
METHOD add_fm_param_tables.
|
|
|
|
DATA: ls_param LIKE LINE OF ct_param.
|
|
|
|
ls_param-kind = abap_func_tables.
|
|
ls_param-name = i_name.
|
|
GET REFERENCE OF ct_value INTO ls_param-value.
|
|
|
|
INSERT ls_param INTO TABLE ct_param.
|
|
|
|
ENDMETHOD. "add_fm_param_tables
|
|
|
|
METHOD add_fm_exception.
|
|
|
|
DATA: ls_exception LIKE LINE OF ct_exception.
|
|
|
|
ls_exception-name = i_name.
|
|
ls_exception-value = i_value.
|
|
|
|
INSERT ls_exception INTO TABLE ct_exception.
|
|
|
|
ENDMETHOD. "add_fm_exception
|
|
|
|
METHOD lif_object~serialize.
|
|
|
|
DATA: ls_component TYPE wdy_component_metadata.
|
|
|
|
|
|
ls_component = read( ).
|
|
|
|
io_xml->add( iv_name = 'COMPONENT'
|
|
ig_data = ls_component ).
|
|
io_xml->add( ig_data = mt_components
|
|
iv_name = 'COMPONENTS' ).
|
|
io_xml->add( ig_data = mt_sources
|
|
iv_name = 'SOURCES' ).
|
|
|
|
ENDMETHOD. "serialize
|
|
|
|
METHOD lif_object~deserialize.
|
|
|
|
DATA: ls_component TYPE wdy_component_metadata.
|
|
|
|
FIELD-SYMBOLS: <ls_view> LIKE LINE OF ls_component-view_metadata,
|
|
<ls_controller> LIKE LINE OF ls_component-ctlr_metadata.
|
|
|
|
|
|
io_xml->read( EXPORTING iv_name = 'COMPONENT'
|
|
CHANGING cg_data = ls_component ).
|
|
io_xml->read( EXPORTING iv_name = 'COMPONENTS'
|
|
CHANGING cg_data = mt_components ).
|
|
io_xml->read( EXPORTING iv_name = 'SOURCES'
|
|
CHANGING cg_data = mt_sources ).
|
|
|
|
tadir_insert( iv_package ).
|
|
|
|
ls_component-comp_metadata-definition-author = sy-uname.
|
|
ls_component-comp_metadata-definition-createdon = sy-datum.
|
|
recover_definition( ls_component-comp_metadata ).
|
|
|
|
LOOP AT ls_component-ctlr_metadata ASSIGNING <ls_controller>.
|
|
<ls_controller>-definition-author = sy-uname.
|
|
<ls_controller>-definition-createdon = sy-datum.
|
|
recover_controller( <ls_controller> ).
|
|
ENDLOOP.
|
|
LOOP AT ls_component-view_metadata ASSIGNING <ls_view>.
|
|
<ls_view>-definition-author = sy-uname.
|
|
<ls_view>-definition-createdon = sy-datum.
|
|
recover_view( <ls_view> ).
|
|
ENDLOOP.
|
|
|
|
lcl_objects_activation=>add_item( ms_item ).
|
|
|
|
ENDMETHOD. "deserialize
|
|
|
|
METHOD lif_object~delete.
|
|
|
|
DATA: lo_component TYPE REF TO cl_wdy_wb_component,
|
|
lo_request TYPE REF TO cl_wb_request,
|
|
li_state TYPE REF TO if_wb_program_state,
|
|
lv_object_name TYPE seu_objkey.
|
|
|
|
|
|
CREATE OBJECT lo_component.
|
|
|
|
lv_object_name = ms_item-obj_name.
|
|
CREATE OBJECT lo_request
|
|
EXPORTING
|
|
p_object_type = 'YC'
|
|
p_object_name = lv_object_name
|
|
p_operation = swbm_c_op_delete_no_dialog.
|
|
|
|
lo_component->if_wb_program~process_wb_request(
|
|
p_wb_request = lo_request
|
|
p_wb_program_state = li_state ).
|
|
|
|
ENDMETHOD. "delete
|
|
|
|
METHOD lif_object~jump.
|
|
|
|
CALL FUNCTION 'RS_TOOL_ACCESS'
|
|
EXPORTING
|
|
operation = 'SHOW'
|
|
object_name = ms_item-obj_name
|
|
object_type = ms_item-obj_type
|
|
in_new_window = abap_true.
|
|
|
|
ENDMETHOD. "jump
|
|
|
|
METHOD lif_object~compare_to_remote_version.
|
|
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
|
ENDMETHOD. "lif_object~compare_to_remote_version
|
|
|
|
ENDCLASS. "lcl_object_wdyn IMPLEMENTATION
|