From 8deda9f140c6bae8e8209a586428622e364193c4 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sun, 13 Aug 2017 15:00:20 +0000 Subject: [PATCH 1/2] Add support for ENHO WDYENH --- src/zabapgit_object_enho.prog.abap | 198 ++++++++++++++++++++++++++++- 1 file changed, 196 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 176963fd5..5757cf218 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -131,6 +131,196 @@ CLASS lcl_object_enho_wdyc IMPLEMENTATION. ENDCLASS. "lcl_object_enho_wdyconf IMPLEMENTATION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_wdyconf DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +CLASS lcl_object_enho_wdyn DEFINITION. + + PUBLIC SECTION. + METHODS: constructor + IMPORTING + is_item TYPE lif_defs=>ty_item + io_files TYPE REF TO lcl_objects_files. + INTERFACES: lif_object_enho. + + PRIVATE SECTION. + DATA: ms_item TYPE lif_defs=>ty_item, + mo_files TYPE REF TO lcl_objects_files. + +ENDCLASS. "lcl_object_enho_wdyconf DEFINITION + +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_wdyconf IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +CLASS lcl_object_enho_wdyn IMPLEMENTATION. + + METHOD constructor. + ms_item = is_item. + mo_files = io_files. + ENDMETHOD. "constructor + + METHOD lif_object_enho~deserialize. + + DATA: ls_enh_data TYPE enhwdyn, + li_tool TYPE REF TO if_enh_tool, + lo_wdyn TYPE REF TO cl_enh_tool_wdy, + package TYPE devclass. + + io_xml->read( + EXPORTING + iv_name = 'COMPONENT_DATA' + CHANGING + cg_data = ls_enh_data ). + + package = iv_package. + + TRY. + cl_enh_factory=>create_enhancement( + EXPORTING + enhname = |{ ms_item-obj_name }| + enhtype = '' + enhtooltype = 'WDYENH' + IMPORTING + enhancement = li_tool + CHANGING + devclass = package ). + + lo_wdyn ?= li_tool. + + lo_wdyn->initialize( ls_enh_data-component_name ). + + lo_wdyn->set_component_data( ls_enh_data-component_data ). + + LOOP AT ls_enh_data-controller_data ASSIGNING FIELD-SYMBOL(). + + lo_wdyn->set_controller_data( p_controller_name = -controller_name + p_enh_data = ). + + ENDLOOP. + + LOOP AT ls_enh_data-view_data ASSIGNING FIELD-SYMBOL(). + + lo_wdyn->set_view_data( p_view_name = -view_name + p_enh_data = ). + + ENDLOOP. + + lo_wdyn->if_enh_object~save( ). + lo_wdyn->if_enh_object~unlock( ). + + CATCH cx_root. + lcx_exception=>raise( |error deserializing ENHO wdyn { ms_item-obj_name }| ). + ENDTRY. + + +* DATA: lv_enhname TYPE enhname, +* lo_wdyconf TYPE REF TO cl_wdr_cfg_enhancement, +* li_tool TYPE REF TO if_enh_tool, +* ls_obj TYPE wdy_config_key, +* lv_package TYPE devclass. +* +* +* io_xml->read( EXPORTING iv_name = 'ORIGINAL_OBJECT' +* CHANGING cg_data = ls_obj ). +* +* lv_enhname = ms_item-obj_name. +* lv_package = iv_package. +* TRY. +* cl_enh_factory=>create_enhancement( +* EXPORTING +* enhname = lv_enhname +* enhtype = '' +* enhtooltype = cl_wdr_cfg_enhancement=>tooltype +* IMPORTING +* enhancement = li_tool +* CHANGING +* devclass = lv_package ). +* lo_wdyconf ?= li_tool. +* +** todo +** io_xml->read_xml() +** CL_WDR_CFG_PERSISTENCE_UTILS=>COMP_XML_TO_TABLES( ) +** lo_wdyconf->set_enhancement_data( ) +* ASSERT 0 = 1. +* +* lo_wdyconf->if_enh_object~save( ). +* lo_wdyconf->if_enh_object~unlock( ). +* CATCH cx_enh_root. +* lcx_exception=>raise( 'error deserializing ENHO wdyconf' ). +* ENDTRY. + + ENDMETHOD. "lif_object_enho~deserialize + + METHOD lif_object_enho~serialize. + + DATA: lo_wdyn TYPE REF TO cl_enh_tool_wdy, + component_name TYPE wdy_component_name, + ls_enh_data TYPE enhwdyn. + + lo_wdyn ?= ii_enh_tool. + + component_name = lo_wdyn->get_component_name( ). + + TRY. + lo_wdyn->get_all_data_for_comp( + EXPORTING + p_component_name = component_name + IMPORTING + p_enh_data = ls_enh_data ). + + io_xml->add( iv_name = 'TOOL' + ig_data = ii_enh_tool->get_tool( ) ). + + io_xml->add( iv_name = 'COMPONENT_DATA' + ig_data = ls_enh_data ). + + CATCH cx_enh_not_found. + lcx_exception=>raise( |error serializing ENHO wdyn { ms_item-obj_name }| ). + ENDTRY. + +* DATA: lo_wdyconf TYPE REF TO cl_wdr_cfg_enhancement, +* lt_data TYPE wdy_cfg_expl_data_tab, +* ls_outline TYPE wdy_cfg_outline_data, +* ls_obj TYPE wdy_config_key, +* li_document TYPE REF TO if_ixml_document, +* li_element TYPE REF TO if_ixml_element. +* +* +* lo_wdyconf ?= ii_enh_tool. +* +* ls_obj = lo_wdyconf->get_original_object( ). +* io_xml->add( iv_name = 'TOOL' +* ig_data = ii_enh_tool->get_tool( ) ). +* io_xml->add( iv_name = 'ORIGINAL_OBJECT' +* ig_data = ls_obj ). +* +** only works on new ABAP versions, parameters differ between versions +* CALL METHOD lo_wdyconf->('GET_ENHANCEMENT_DATA') +* EXPORTING +* p_scope = 1 +* IMPORTING +* p_enh_data = lt_data. +* +* CALL METHOD cl_wdr_cfg_persistence_utils=>('COMP_TABLES_TO_XML') +* EXPORTING +* outline_data = ls_outline +* expl_data_tab = lt_data +* IMPORTING +* element = li_element +* CHANGING +* document = li_document. +* +* io_xml->add_xml( iv_name = 'ENHANCEMENT_DATA' +* ii_xml = li_element ). + + ENDMETHOD. "lif_object_enho~serialize + +ENDCLASS. "lcl_object_enho_wdyconf IMPLEMENTATION + *----------------------------------------------------------------------* * CLASS lcl_object_enho_clif DEFINITION @@ -891,7 +1081,7 @@ CLASS lcl_object_enho DEFINITION INHERITING FROM lcl_objects_super FINAL. IMPORTING iv_tool TYPE enhtooltype RETURNING - value(ri_enho) TYPE REF TO lif_object_enho + VALUE(ri_enho) TYPE REF TO lif_object_enho RAISING lcx_exception. @@ -988,9 +1178,13 @@ CLASS lcl_object_enho IMPLEMENTATION. EXPORTING is_item = ms_item io_files = mo_files. + WHEN 'WDYENH'. + CREATE OBJECT ri_enho TYPE lcl_object_enho_wdyn + EXPORTING + is_item = ms_item + io_files = mo_files. * ToDo: * WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr -* WHEN 'ENHWDYN'. "cl_enh_tool_wdy WHEN OTHERS. lcx_exception=>raise( |Unsupported ENHO type { iv_tool }| ). ENDCASE. From e8f146e5b5ff7e06fdf1a35c27152ed0222eaf0a Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sun, 13 Aug 2017 15:28:49 +0000 Subject: [PATCH 2/2] cleanup --- src/zabapgit_object_enho.prog.abap | 96 ++++++------------------------ 1 file changed, 17 insertions(+), 79 deletions(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 5757cf218..043bf3647 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -168,13 +168,23 @@ CLASS lcl_object_enho_wdyn IMPLEMENTATION. DATA: ls_enh_data TYPE enhwdyn, li_tool TYPE REF TO if_enh_tool, lo_wdyn TYPE REF TO cl_enh_tool_wdy, + tool_type TYPE enhtooltype, package TYPE devclass. + FIELD-SYMBOLS: TYPE enhwdyc, + TYPE enhwdyv. + io_xml->read( EXPORTING - iv_name = 'COMPONENT_DATA' + iv_name = 'TOOL' CHANGING - cg_data = ls_enh_data ). + cg_data = tool_type ). + + io_xml->read( + EXPORTING + iv_name = 'COMPONENT_DATA' + CHANGING + cg_data = ls_enh_data ). package = iv_package. @@ -183,7 +193,7 @@ CLASS lcl_object_enho_wdyn IMPLEMENTATION. EXPORTING enhname = |{ ms_item-obj_name }| enhtype = '' - enhtooltype = 'WDYENH' + enhtooltype = tool_type IMPORTING enhancement = li_tool CHANGING @@ -195,17 +205,17 @@ CLASS lcl_object_enho_wdyn IMPLEMENTATION. lo_wdyn->set_component_data( ls_enh_data-component_data ). - LOOP AT ls_enh_data-controller_data ASSIGNING FIELD-SYMBOL(). + LOOP AT ls_enh_data-controller_data ASSIGNING . lo_wdyn->set_controller_data( p_controller_name = -controller_name - p_enh_data = ). + p_enh_data = ). ENDLOOP. - LOOP AT ls_enh_data-view_data ASSIGNING FIELD-SYMBOL(). + LOOP AT ls_enh_data-view_data ASSIGNING . lo_wdyn->set_view_data( p_view_name = -view_name - p_enh_data = ). + p_enh_data = ). ENDLOOP. @@ -216,43 +226,6 @@ CLASS lcl_object_enho_wdyn IMPLEMENTATION. lcx_exception=>raise( |error deserializing ENHO wdyn { ms_item-obj_name }| ). ENDTRY. - -* DATA: lv_enhname TYPE enhname, -* lo_wdyconf TYPE REF TO cl_wdr_cfg_enhancement, -* li_tool TYPE REF TO if_enh_tool, -* ls_obj TYPE wdy_config_key, -* lv_package TYPE devclass. -* -* -* io_xml->read( EXPORTING iv_name = 'ORIGINAL_OBJECT' -* CHANGING cg_data = ls_obj ). -* -* lv_enhname = ms_item-obj_name. -* lv_package = iv_package. -* TRY. -* cl_enh_factory=>create_enhancement( -* EXPORTING -* enhname = lv_enhname -* enhtype = '' -* enhtooltype = cl_wdr_cfg_enhancement=>tooltype -* IMPORTING -* enhancement = li_tool -* CHANGING -* devclass = lv_package ). -* lo_wdyconf ?= li_tool. -* -** todo -** io_xml->read_xml() -** CL_WDR_CFG_PERSISTENCE_UTILS=>COMP_XML_TO_TABLES( ) -** lo_wdyconf->set_enhancement_data( ) -* ASSERT 0 = 1. -* -* lo_wdyconf->if_enh_object~save( ). -* lo_wdyconf->if_enh_object~unlock( ). -* CATCH cx_enh_root. -* lcx_exception=>raise( 'error deserializing ENHO wdyconf' ). -* ENDTRY. - ENDMETHOD. "lif_object_enho~deserialize METHOD lif_object_enho~serialize. @@ -282,41 +255,6 @@ CLASS lcl_object_enho_wdyn IMPLEMENTATION. lcx_exception=>raise( |error serializing ENHO wdyn { ms_item-obj_name }| ). ENDTRY. -* DATA: lo_wdyconf TYPE REF TO cl_wdr_cfg_enhancement, -* lt_data TYPE wdy_cfg_expl_data_tab, -* ls_outline TYPE wdy_cfg_outline_data, -* ls_obj TYPE wdy_config_key, -* li_document TYPE REF TO if_ixml_document, -* li_element TYPE REF TO if_ixml_element. -* -* -* lo_wdyconf ?= ii_enh_tool. -* -* ls_obj = lo_wdyconf->get_original_object( ). -* io_xml->add( iv_name = 'TOOL' -* ig_data = ii_enh_tool->get_tool( ) ). -* io_xml->add( iv_name = 'ORIGINAL_OBJECT' -* ig_data = ls_obj ). -* -** only works on new ABAP versions, parameters differ between versions -* CALL METHOD lo_wdyconf->('GET_ENHANCEMENT_DATA') -* EXPORTING -* p_scope = 1 -* IMPORTING -* p_enh_data = lt_data. -* -* CALL METHOD cl_wdr_cfg_persistence_utils=>('COMP_TABLES_TO_XML') -* EXPORTING -* outline_data = ls_outline -* expl_data_tab = lt_data -* IMPORTING -* element = li_element -* CHANGING -* document = li_document. -* -* io_xml->add_xml( iv_name = 'ENHANCEMENT_DATA' -* ii_xml = li_element ). - ENDMETHOD. "lif_object_enho~serialize ENDCLASS. "lcl_object_enho_wdyconf IMPLEMENTATION