From 62fe6910487a79bf092024af0fa58b1602b262b7 Mon Sep 17 00:00:00 2001 From: larshp Date: Wed, 18 Jan 2017 19:08:18 +0000 Subject: [PATCH 1/5] ENHO: starting wdyconf --- src/zabapgit_object_enho.prog.abap | 104 ++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 83f9f2cca..b6c45a16c 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -18,6 +18,104 @@ INTERFACE lif_object_enho. ENDINTERFACE. +CLASS lcl_object_enho_wdyconf DEFINITION. + + PUBLIC SECTION. + METHODS: constructor + IMPORTING + is_item TYPE ty_item + io_files TYPE REF TO lcl_objects_files. + INTERFACES: lif_object_enho. + + PRIVATE SECTION. + DATA: ms_item TYPE ty_item, + mo_files TYPE REF TO lcl_objects_files. + +ENDCLASS. + +CLASS lcl_object_enho_wdyconf IMPLEMENTATION. + + METHOD constructor. + ms_item = is_item. + mo_files = io_files. + ENDMETHOD. + + METHOD lif_object_enho~deserialize. + + DATA: lv_enhname TYPE enhname, + lo_wdyconf TYPE REF TO cl_wdr_cfg_enhancement, + li_tool TYPE REF TO if_enh_tool, + lv_package TYPE devclass. + + +* io_xml->read( EXPORTING iv_name = 'SHORTTEXT' +* CHANGING cg_data = lv_shorttext ). + + 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 +* 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. + + METHOD lif_object_enho~serialize. + + 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, + li_document TYPE REF TO if_ixml_document, + li_element TYPE REF TO if_ixml_element. + + + lo_wdyconf ?= ii_enh_tool. + + lo_wdyconf->get_enhancement_data( + EXPORTING + p_scope = 1 + IMPORTING + p_enh_data = lt_data ). + + 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 ). +* todo + + io_xml->add( iv_name = 'TOOL' + ig_data = ii_enh_tool->get_tool( ) ). +* io_xml->add( ig_data = lv_shorttext +* iv_name = 'SHORTTEXT' ). + + ENDMETHOD. + +ENDCLASS. + + CLASS lcl_object_enho_clif DEFINITION. PUBLIC SECTION. @@ -820,9 +918,13 @@ CLASS lcl_object_enho IMPLEMENTATION. EXPORTING is_item = ms_item io_files = mo_files. + WHEN cl_wdr_cfg_enhancement=>tooltype. + CREATE OBJECT ri_enho TYPE lcl_object_enho_wdyconf + EXPORTING + is_item = ms_item + io_files = mo_files. * ToDo: * WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr -* WHEN cl_wdr_cfg_enhancement=>tooltype. * WHEN 'ENHWDYN'. "cl_enh_tool_wdy WHEN OTHERS. lcx_exception=>raise( |Unsupported ENHO type { iv_tool }| ). From 6b51b28a6bf14a1f44ac68188bf42fafe6a737ef Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 19 Jan 2017 11:08:47 +0100 Subject: [PATCH 2/5] ENHO: support for serializing wdyconf #542 --- src/zabapgit_object_enho.prog.abap | 21 +++++++++++++-------- src/zabapgit_xml.prog.abap | 17 ++++++++++++++++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index b6c45a16c..466d59b64 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -45,11 +45,12 @@ CLASS lcl_object_enho_wdyconf IMPLEMENTATION. 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 = 'SHORTTEXT' -* CHANGING cg_data = lv_shorttext ). + io_xml->read( EXPORTING iv_name = 'ORIGINAL_OBJECT' + CHANGING cg_data = ls_obj ). lv_enhname = ms_item-obj_name. lv_package = iv_package. @@ -66,9 +67,9 @@ CLASS lcl_object_enho_wdyconf IMPLEMENTATION. 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( ). @@ -84,12 +85,19 @@ CLASS lcl_object_enho_wdyconf IMPLEMENTATION. 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 ). + lo_wdyconf->get_enhancement_data( EXPORTING p_scope = 1 @@ -104,12 +112,9 @@ CLASS lcl_object_enho_wdyconf IMPLEMENTATION. element = li_element CHANGING document = li_document ). -* todo - io_xml->add( iv_name = 'TOOL' - ig_data = ii_enh_tool->get_tool( ) ). -* io_xml->add( ig_data = lv_shorttext -* iv_name = 'SHORTTEXT' ). + io_xml->add_xml( iv_name = 'ENHANCEMENT_DATA' + ii_xml = li_element ). ENDMETHOD. diff --git a/src/zabapgit_xml.prog.abap b/src/zabapgit_xml.prog.abap index 824505338..23e1828c4 100644 --- a/src/zabapgit_xml.prog.abap +++ b/src/zabapgit_xml.prog.abap @@ -180,6 +180,9 @@ CLASS lcl_xml_output DEFINITION FINAL INHERITING FROM lcl_xml CREATE PUBLIC. RAISING lcx_exception, set_raw IMPORTING ii_raw TYPE REF TO if_ixml_element, + add_xml + IMPORTING iv_name TYPE clike + ii_xml TYPE REF TO if_ixml_element, render IMPORTING iv_normalize TYPE sap_bool DEFAULT abap_true is_metadata TYPE ty_metadata OPTIONAL @@ -230,7 +233,18 @@ CLASS lcl_xml_output IMPLEMENTATION. mi_xml_doc->get_root( )->append_child( li_doc->get_root( )->get_first_child( ) ). ENDIF. - ENDMETHOD. "add + ENDMETHOD. + + METHOD add_xml. + + DATA: li_element TYPE REF TO if_ixml_element. + + li_element = mi_xml_doc->create_element( iv_name ). + li_element->append_child( ii_xml ). + + mi_xml_doc->get_root( )->get_first_child( )->get_first_child( )->append_child( li_element ). + + ENDMETHOD. METHOD render. @@ -280,6 +294,7 @@ CLASS lcl_xml_input DEFINITION FINAL INHERITING FROM lcl_xml CREATE PUBLIC. RAISING lcx_exception, get_raw RETURNING VALUE(ri_raw) TYPE REF TO if_ixml_node, +* todo, add read_xml to match add_xml in lcl_xml_output get_metadata RETURNING VALUE(rs_metadata) TYPE ty_metadata. From 1e4884be596b12943b39b2b64e43681642c6736c Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 19 Jan 2017 11:27:22 +0100 Subject: [PATCH 3/5] ENHO: wdyconf downport --- src/zabapgit_object_enho.prog.abap | 143 ++++++++++++++++++++--------- 1 file changed, 102 insertions(+), 41 deletions(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 466d59b64..3515f207c 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -16,8 +16,13 @@ INTERFACE lif_object_enho. ii_enh_tool TYPE REF TO if_enh_tool RAISING lcx_exception. -ENDINTERFACE. +ENDINTERFACE. "lif_object_enho +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_wdyconf DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_wdyconf DEFINITION. PUBLIC SECTION. @@ -31,14 +36,19 @@ CLASS lcl_object_enho_wdyconf DEFINITION. DATA: ms_item TYPE ty_item, mo_files TYPE REF TO lcl_objects_files. -ENDCLASS. +ENDCLASS. "lcl_object_enho_wdyconf DEFINITION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_wdyconf IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_wdyconf IMPLEMENTATION. METHOD constructor. ms_item = is_item. mo_files = io_files. - ENDMETHOD. + ENDMETHOD. "constructor METHOD lif_object_enho~deserialize. @@ -78,7 +88,7 @@ CLASS lcl_object_enho_wdyconf IMPLEMENTATION. lcx_exception=>raise( 'error deserializing ENHO wdyconf' ). ENDTRY. - ENDMETHOD. + ENDMETHOD. "lif_object_enho~deserialize METHOD lif_object_enho~serialize. @@ -98,29 +108,35 @@ CLASS lcl_object_enho_wdyconf IMPLEMENTATION. io_xml->add( iv_name = 'ORIGINAL_OBJECT' ig_data = ls_obj ). - lo_wdyconf->get_enhancement_data( +* 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 ). + p_enh_data = lt_data. - cl_wdr_cfg_persistence_utils=>comp_tables_to_xml( + 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 ). + document = li_document. io_xml->add_xml( iv_name = 'ENHANCEMENT_DATA' ii_xml = li_element ). - ENDMETHOD. + ENDMETHOD. "lif_object_enho~serialize -ENDCLASS. +ENDCLASS. "lcl_object_enho_wdyconf IMPLEMENTATION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_clif DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_clif DEFINITION. PUBLIC SECTION. @@ -142,8 +158,13 @@ CLASS lcl_object_enho_clif DEFINITION. io_clif TYPE REF TO cl_enh_tool_clif RAISING lcx_exception. -ENDCLASS. +ENDCLASS. "lcl_object_enho_clif DEFINITION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_clif IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_clif IMPLEMENTATION. METHOD serialize_includes. @@ -179,7 +200,7 @@ CLASS lcl_object_enho_clif IMPLEMENTATION. ENDIF. ENDLOOP. - ENDMETHOD. + ENDMETHOD. "serialize_includes METHOD serialize. @@ -221,7 +242,7 @@ CLASS lcl_object_enho_clif IMPLEMENTATION. io_xml->add( iv_name = 'TAB_METHODS' ig_data = lt_tab_methods ). - ENDMETHOD. + ENDMETHOD. "serialize METHOD deserialize. @@ -273,10 +294,15 @@ CLASS lcl_object_enho_clif IMPLEMENTATION. ENDLOOP. - ENDMETHOD. + ENDMETHOD. "deserialize -ENDCLASS. +ENDCLASS. "lcl_object_enho_clif IMPLEMENTATION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_badi DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_badi DEFINITION. PUBLIC SECTION. @@ -290,14 +316,19 @@ CLASS lcl_object_enho_badi DEFINITION. DATA: ms_item TYPE ty_item, mo_files TYPE REF TO lcl_objects_files. -ENDCLASS. +ENDCLASS. "lcl_object_enho_badi DEFINITION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_badi IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_badi IMPLEMENTATION. METHOD constructor. ms_item = is_item. mo_files = io_files. - ENDMETHOD. + ENDMETHOD. "constructor METHOD lif_object_enho~serialize. @@ -340,7 +371,7 @@ CLASS lcl_object_enho_badi IMPLEMENTATION. io_xml->add( iv_name = 'IMPL' ig_data = lt_impl ). - ENDMETHOD. + ENDMETHOD. "lif_object_enho~serialize METHOD lif_object_enho~deserialize. @@ -387,10 +418,15 @@ CLASS lcl_object_enho_badi IMPLEMENTATION. lcx_exception=>raise( 'error deserializing ENHO badi' ). ENDTRY. - ENDMETHOD. + ENDMETHOD. "lif_object_enho~deserialize -ENDCLASS. +ENDCLASS. "lcl_object_enho_badi IMPLEMENTATION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_hook DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_hook DEFINITION. PUBLIC SECTION. METHODS: constructor @@ -421,14 +457,19 @@ CLASS lcl_object_enho_hook DEFINITION. CHANGING ct_impl TYPE enh_hook_impl_it RAISING lcx_exception. -ENDCLASS. +ENDCLASS. "lcl_object_enho_hook DEFINITION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_hook IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_hook IMPLEMENTATION. METHOD constructor. ms_item = is_item. mo_files = io_files. - ENDMETHOD. + ENDMETHOD. "constructor METHOD lif_object_enho~serialize. @@ -468,7 +509,7 @@ CLASS lcl_object_enho_hook IMPLEMENTATION. io_xml->add( iv_name = 'SPACES' ig_data = lt_spaces ). - ENDMETHOD. + ENDMETHOD. "lif_object_enho~serialize METHOD hook_impl_serialize. * handle normalization of XML values @@ -491,7 +532,7 @@ CLASS lcl_object_enho_hook IMPLEMENTATION. ENDWHILE. ENDLOOP. ENDLOOP. - ENDMETHOD. + ENDMETHOD. "hook_impl_serialize METHOD hook_impl_deserialize. @@ -515,7 +556,7 @@ CLASS lcl_object_enho_hook IMPLEMENTATION. ENDIF. ENDLOOP. - ENDMETHOD. + ENDMETHOD. "hook_impl_deserialize METHOD lif_object_enho~deserialize. @@ -583,10 +624,15 @@ CLASS lcl_object_enho_hook IMPLEMENTATION. lcx_exception=>raise( 'error deserializing ENHO hook' ). ENDTRY. - ENDMETHOD. + ENDMETHOD. "lif_object_enho~deserialize -ENDCLASS. +ENDCLASS. "lcl_object_enho_hook IMPLEMENTATION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_interface DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_interface DEFINITION. PUBLIC SECTION. @@ -601,14 +647,19 @@ CLASS lcl_object_enho_interface DEFINITION. DATA: ms_item TYPE ty_item, mo_files TYPE REF TO lcl_objects_files. -ENDCLASS. +ENDCLASS. "lcl_object_enho_interface DEFINITION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_interface IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_interface IMPLEMENTATION. METHOD constructor. ms_item = is_item. mo_files = io_files. - ENDMETHOD. + ENDMETHOD. "constructor METHOD lif_object_enho~serialize. @@ -634,7 +685,7 @@ CLASS lcl_object_enho_interface IMPLEMENTATION. io_files = mo_files io_clif = lo_enh_intf ). - ENDMETHOD. + ENDMETHOD. "lif_object_enho~serialize METHOD lif_object_enho~deserialize. @@ -679,10 +730,15 @@ CLASS lcl_object_enho_interface IMPLEMENTATION. lcx_exception=>raise( 'error deserializing ENHO interface' ). ENDTRY. - ENDMETHOD. + ENDMETHOD. "lif_object_enho~deserialize -ENDCLASS. +ENDCLASS. "lcl_object_enho_interface IMPLEMENTATION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_class DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_class DEFINITION. PUBLIC SECTION. @@ -697,14 +753,19 @@ CLASS lcl_object_enho_class DEFINITION. DATA: ms_item TYPE ty_item. DATA: mo_files TYPE REF TO lcl_objects_files. -ENDCLASS. +ENDCLASS. "lcl_object_enho_class DEFINITION +*----------------------------------------------------------------------* +* CLASS lcl_object_enho_class IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* CLASS lcl_object_enho_class IMPLEMENTATION. METHOD constructor. ms_item = is_item. mo_files = io_files. - ENDMETHOD. + ENDMETHOD. "constructor METHOD lif_object_enho~serialize. @@ -746,7 +807,7 @@ CLASS lcl_object_enho_class IMPLEMENTATION. io_files = mo_files io_clif = lo_enh_class ). - ENDMETHOD. + ENDMETHOD. "lif_object_enho~serialize METHOD lif_object_enho~deserialize. @@ -809,9 +870,9 @@ CLASS lcl_object_enho_class IMPLEMENTATION. lcx_exception=>raise( 'error deserializing ENHO class' ). ENDTRY. - ENDMETHOD. + ENDMETHOD. "lif_object_enho~deserialize -ENDCLASS. +ENDCLASS. "lcl_object_enho_class IMPLEMENTATION *----------------------------------------------------------------------* * CLASS lcl_object_enho DEFINITION @@ -831,7 +892,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. @@ -854,7 +915,7 @@ CLASS lcl_object_enho IMPLEMENTATION. METHOD lif_object~changed_by. rv_user = c_user_unknown. " todo - ENDMETHOD. + ENDMETHOD. "lif_object~changed_by METHOD lif_object~exists. @@ -935,7 +996,7 @@ CLASS lcl_object_enho IMPLEMENTATION. lcx_exception=>raise( |Unsupported ENHO type { iv_tool }| ). ENDCASE. - ENDMETHOD. + ENDMETHOD. "factory METHOD lif_object~deserialize. @@ -992,6 +1053,6 @@ CLASS lcl_object_enho IMPLEMENTATION. METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. - ENDMETHOD. + ENDMETHOD. "lif_object~compare_to_remote_version ENDCLASS. "lcl_object_enho IMPLEMENTATION \ No newline at end of file From bf1d9a13e3d643ec5e74c9cbfd0783d54650db7d Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Thu, 19 Jan 2017 14:18:59 +0100 Subject: [PATCH 4/5] Table deletion without pop-up --- src/zabapgit_object_tabl.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index c956017d5..773fbdd22 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -106,7 +106,7 @@ CLASS lcl_object_tabl IMPLEMENTATION. CALL FUNCTION 'RS_DD_DELETE_OBJ' EXPORTING - no_ask = abap_false + no_ask = abap_true objname = lv_objname objtype = 'T' EXCEPTIONS From a32ab9d4fb729bca6f5804c1bab88cb7b1214463 Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Thu, 19 Jan 2017 14:24:23 +0100 Subject: [PATCH 5/5] Removes activation pop-up screen --- src/zabapgit_objects.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 383f0ea69..bf88bc542 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -56,7 +56,7 @@ CLASS lcl_objects_activation IMPLEMENTATION. CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' EXPORTING activate_ddic_objects = iv_ddic - with_popup = abap_true + with_popup = abap_false TABLES objects = gt_objects EXCEPTIONS