From c1d01d37e34cc306cd27c060bc440f8bd790cd3b Mon Sep 17 00:00:00 2001 From: larshp Date: Mon, 22 Jan 2018 16:55:03 +0000 Subject: [PATCH] lcl_objects_activation to global lcl_objects_activation to global class --- .../zcl_abapgit_objects_activation.clas.abap | 337 ++++++++++++++++ .../zcl_abapgit_objects_activation.clas.xml | 18 + src/zabapgit_object_clas.prog.abap | 4 +- src/zabapgit_object_dcls.prog.abap | 2 +- src/zabapgit_object_ddls.prog.abap | 2 +- src/zabapgit_object_doma.prog.abap | 2 +- src/zabapgit_object_dtel.prog.abap | 2 +- src/zabapgit_object_enho.prog.abap | 2 +- src/zabapgit_object_enqu.prog.abap | 2 +- src/zabapgit_object_jobd.prog.abap | 2 +- src/zabapgit_object_oo_functions.prog.abap | 2 +- src/zabapgit_object_sfbf.prog.abap | 2 +- src/zabapgit_object_sfbs.prog.abap | 2 +- src/zabapgit_object_sfpf.prog.abap | 2 +- src/zabapgit_object_sfpi.prog.abap | 2 +- src/zabapgit_object_sfsw.prog.abap | 3 +- src/zabapgit_object_shlp.prog.abap | 2 +- src/zabapgit_object_tabl.prog.abap | 6 +- src/zabapgit_object_ttyp.prog.abap | 2 +- src/zabapgit_object_type.prog.abap | 2 +- src/zabapgit_object_view.prog.abap | 2 +- src/zabapgit_object_wapa.prog.abap | 6 +- src/zabapgit_object_wdyn.prog.abap | 2 +- src/zabapgit_object_webi.prog.abap | 2 +- src/zabapgit_object_xslt.prog.abap | 2 +- src/zabapgit_objects.prog.abap | 361 +----------------- src/zabapgit_objects_impl.prog.abap | 6 +- 27 files changed, 399 insertions(+), 380 deletions(-) create mode 100644 src/objects/zcl_abapgit_objects_activation.clas.abap create mode 100644 src/objects/zcl_abapgit_objects_activation.clas.xml diff --git a/src/objects/zcl_abapgit_objects_activation.clas.abap b/src/objects/zcl_abapgit_objects_activation.clas.abap new file mode 100644 index 000000000..7e34898e8 --- /dev/null +++ b/src/objects/zcl_abapgit_objects_activation.clas.abap @@ -0,0 +1,337 @@ +CLASS zcl_abapgit_objects_activation DEFINITION + PUBLIC + CREATE PUBLIC . + + PUBLIC SECTION. + CLASS-METHODS add + IMPORTING iv_type TYPE trobjtype + iv_name TYPE clike + iv_delete TYPE abap_bool DEFAULT abap_false + RAISING zcx_abapgit_exception. + + CLASS-METHODS add_item + IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item + RAISING zcx_abapgit_exception. + + CLASS-METHODS activate + IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false + RAISING zcx_abapgit_exception. + + CLASS-METHODS clear. + + PRIVATE SECTION. + CLASS-METHODS fix_class_methods + IMPORTING iv_obj_name TYPE trobj_name + CHANGING ct_objects TYPE dwinactiv_tab. + + CLASS-METHODS use_new_activation_logic + RETURNING VALUE(rv_use_new_activation_logic) TYPE abap_bool. + + CLASS-METHODS activate_new + IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false + RAISING zcx_abapgit_exception. + + CLASS-METHODS activate_old + IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false + RAISING zcx_abapgit_exception. + + CLASS-METHODS activate_ddic + RAISING zcx_abapgit_exception. + + CLASS-METHODS show_activation_errors + IMPORTING iv_logname TYPE ddmass-logname + RAISING zcx_abapgit_exception. + + CLASS-DATA: gt_objects TYPE TABLE OF dwinactiv. + +ENDCLASS. + + + +CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION. + + + METHOD activate. + + IF use_new_activation_logic( ) = abap_true. + + activate_new( iv_ddic ). + + ELSE. + + activate_old( iv_ddic ). + + ENDIF. + + ENDMETHOD. "activate + + + METHOD activate_ddic. + + DATA: lt_gentab TYPE STANDARD TABLE OF dcgentb, + ls_gentab LIKE LINE OF lt_gentab, + lv_rc TYPE sy-subrc, + lt_deltab TYPE STANDARD TABLE OF dcdeltb, + lt_action_tab TYPE STANDARD TABLE OF dctablres, + lv_logname TYPE ddmass-logname. + + FIELD-SYMBOLS: LIKE LINE OF gt_objects. + + LOOP AT gt_objects ASSIGNING . + + ls_gentab-name = -obj_name. + ls_gentab-type = -object. + INSERT ls_gentab INTO TABLE lt_gentab. + + ENDLOOP. + + IF lt_gentab IS NOT INITIAL. + + lv_logname = |ABAPGIT_{ sy-datum }_{ sy-uzeit }|. + + CALL FUNCTION 'DD_MASS_ACT_C3' + EXPORTING + ddmode = 'C' + medium = 'T' + device = 'T' + logname = lv_logname + write_log = abap_true + log_head_tail = abap_true + t_on = space + prid = 1 + IMPORTING + act_rc = lv_rc + TABLES + gentab = lt_gentab + deltab = lt_deltab + cnvtab = lt_action_tab + EXCEPTIONS + access_failure = 1 + no_objects = 2 + locked = 3 + internal_error = 4 + OTHERS = 5. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'error from DD_MASS_ACT_C3' ). + ENDIF. + + IF lv_rc > 0. + + show_activation_errors( lv_logname ). + + ENDIF. + + ENDIF. + + ENDMETHOD. + + + METHOD activate_new. + + DATA: lo_progress TYPE REF TO zcl_abapgit_progress. + + IF gt_objects IS INITIAL. + RETURN. + ENDIF. + + CREATE OBJECT lo_progress + EXPORTING + iv_total = 100. + + IF iv_ddic = abap_true. + + lo_progress->show( iv_current = 98 + iv_text = 'Activating DDIC' ). + + activate_ddic( ). + + ELSE. + + lo_progress->show( iv_current = 98 + iv_text = 'Activating non DDIC' ). + + activate_old( ). + + ENDIF. + + ENDMETHOD. + + + METHOD activate_old. + + IF gt_objects IS NOT INITIAL. + + CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' + EXPORTING + activate_ddic_objects = iv_ddic + with_popup = abap_true + TABLES + objects = gt_objects + EXCEPTIONS + excecution_error = 1 + cancelled = 2 + insert_into_corr_error = 3 + OTHERS = 4. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'error from RS_WORKING_OBJECTS_ACTIVATE' ). + ENDIF. + + ENDIF. + + ENDMETHOD. + + + METHOD add. + +* function group SEWORKINGAREA +* function module RS_INSERT_INTO_WORKING_AREA +* class CL_WB_ACTIVATION_WORK_AREA + + DATA: lt_objects TYPE dwinactiv_tab, + lv_obj_name TYPE dwinactiv-obj_name. + + FIELD-SYMBOLS: LIKE LINE OF lt_objects. + + + lv_obj_name = iv_name. + + CASE iv_type. + WHEN 'CLAS' OR 'WDYN'. +* todo, move this to the object type include instead + CALL FUNCTION 'RS_INACTIVE_OBJECTS_IN_OBJECT' + EXPORTING + obj_name = lv_obj_name + object = iv_type + TABLES + inactive_objects = lt_objects + EXCEPTIONS + object_not_found = 1 + OTHERS = 2. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'Error from RS_INACTIVE_OBJECTS_IN_OBJECT' ). + ENDIF. + + IF iv_type = 'CLAS'. + fix_class_methods( EXPORTING iv_obj_name = lv_obj_name + CHANGING ct_objects = lt_objects ). + ENDIF. + + LOOP AT lt_objects ASSIGNING . + -delet_flag = iv_delete. + ENDLOOP. + + APPEND LINES OF lt_objects TO gt_objects. + WHEN OTHERS. + APPEND INITIAL LINE TO gt_objects ASSIGNING . + -object = iv_type. + -obj_name = lv_obj_name. + -delet_flag = iv_delete. + ENDCASE. + + ENDMETHOD. "activate + + + METHOD add_item. + add( iv_type = is_item-obj_type + iv_name = is_item-obj_name ). + ENDMETHOD. "add_item + + + METHOD clear. + CLEAR gt_objects. + ENDMETHOD. "clear + + + METHOD fix_class_methods. +* function module RS_WORKING_OBJECTS_ACTIVATE assumes that +* METH lines contains spaces between class and method name +* however, classes named with 30 characters +* eg. ZCL_CLAS_TESTTESTTESTTESTTESTT +* this will not be true, so find all the method includes instead + + DATA: lt_methods TYPE seop_methods_w_include, + lv_class TYPE seoclsname. + + FIELD-SYMBOLS: LIKE LINE OF lt_methods, + LIKE LINE OF ct_objects. + + + lv_class = iv_obj_name. + + cl_oo_classname_service=>get_all_method_includes( + EXPORTING + clsname = lv_class + RECEIVING + result = lt_methods + EXCEPTIONS + class_not_existing = 1 + OTHERS = 2 ). + ASSERT sy-subrc = 0. + DELETE ct_objects WHERE object = 'METH'. + LOOP AT lt_methods ASSIGNING . + APPEND INITIAL LINE TO ct_objects ASSIGNING . + -object = 'METH'. + -obj_name = -incname. + ENDLOOP. + + ENDMETHOD. + + + METHOD show_activation_errors. + + DATA: lt_lines TYPE STANDARD TABLE OF trlog, + lv_logname_db TYPE ddprh-protname, + lo_log TYPE REF TO zcl_abapgit_log. + + FIELD-SYMBOLS: LIKE LINE OF lt_lines. + + lv_logname_db = iv_logname. + + CALL FUNCTION 'TR_READ_LOG' + EXPORTING + iv_log_type = 'DB' + iv_logname_db = lv_logname_db + TABLES + et_lines = lt_lines + EXCEPTIONS + invalid_input = 1 + access_error = 2 + OTHERS = 3. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'error from TR_READ_LOG' ). + ENDIF. + + DELETE lt_lines WHERE severity <> 'E'. + + CREATE OBJECT lo_log. + + LOOP AT lt_lines ASSIGNING . + lo_log->add( -line ). + ENDLOOP. + + lo_log->show( ). + + ENDMETHOD. + + + METHOD use_new_activation_logic. + + IF zcl_abapgit_persist_settings=>get_instance( )->read( )->get_experimental_features( ) = abap_true. + + CALL FUNCTION 'FUNCTION_EXISTS' + EXPORTING + funcname = 'DD_MASS_ACT_C3' " Name of Function Module + EXCEPTIONS + function_not_exist = 1 + OTHERS = 2. + + IF sy-subrc = 0. + rv_use_new_activation_logic = abap_true. + ENDIF. + + ENDIF. + + ENDMETHOD. +ENDCLASS. diff --git a/src/objects/zcl_abapgit_objects_activation.clas.xml b/src/objects/zcl_abapgit_objects_activation.clas.xml new file mode 100644 index 000000000..0cccce486 --- /dev/null +++ b/src/objects/zcl_abapgit_objects_activation.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_OBJECTS_ACTIVATION + 1 + E + Activation + 2 + 1 + X + X + X + + + + diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index f4c2d17bf..16bd4cfee 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -479,8 +479,8 @@ CLASS lcl_oo_class IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error from INSERT TEXTPOOL' ). ENDIF. - lcl_objects_activation=>add( iv_type = 'REPT' - iv_name = lv_cp ). + zcl_abapgit_objects_activation=>add( iv_type = 'REPT' + iv_name = lv_cp ). ENDMETHOD. METHOD lif_oo_object_fnc~create_sotr. diff --git a/src/zabapgit_object_dcls.prog.abap b/src/zabapgit_object_dcls.prog.abap index ac2e7f765..9bb4f0070 100644 --- a/src/zabapgit_object_dcls.prog.abap +++ b/src/zabapgit_object_dcls.prog.abap @@ -178,7 +178,7 @@ CLASS lcl_object_dcls IMPLEMENTATION. zcx_abapgit_exception=>raise( 'DCLS error' ). ENDTRY. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. diff --git a/src/zabapgit_object_ddls.prog.abap b/src/zabapgit_object_ddls.prog.abap index f7c8409b4..a97176e18 100644 --- a/src/zabapgit_object_ddls.prog.abap +++ b/src/zabapgit_object_ddls.prog.abap @@ -235,7 +235,7 @@ CLASS lcl_object_ddls IMPLEMENTATION. zcx_abapgit_exception=>raise( 'DDLS error writing TADIR' ). ENDTRY. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_doma.prog.abap b/src/zabapgit_object_doma.prog.abap index 92df9e98e..7c2ec7c36 100644 --- a/src/zabapgit_object_doma.prog.abap +++ b/src/zabapgit_object_doma.prog.abap @@ -224,7 +224,7 @@ CLASS lcl_object_doma IMPLEMENTATION. is_dd01v = ls_dd01v it_dd07v = lt_dd07v ). - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index da834ffa0..b8a651e3e 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -225,7 +225,7 @@ CLASS lcl_object_dtel IMPLEMENTATION. deserialize_texts( io_xml = io_xml is_dd04v = ls_dd04v ). - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index ce7826b7b..73ca066e6 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -1272,7 +1272,7 @@ CLASS lcl_object_enho IMPLEMENTATION. li_enho->deserialize( io_xml = io_xml iv_package = iv_package ). - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_enqu.prog.abap b/src/zabapgit_object_enqu.prog.abap index 6b989c80a..f5ba35598 100644 --- a/src/zabapgit_object_enqu.prog.abap +++ b/src/zabapgit_object_enqu.prog.abap @@ -181,7 +181,7 @@ CLASS lcl_object_enqu IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error from DDIF_ENQU_PUT' ). ENDIF. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_jobd.prog.abap b/src/zabapgit_object_jobd.prog.abap index bd79a83e2..f14912ec7 100644 --- a/src/zabapgit_object_jobd.prog.abap +++ b/src/zabapgit_object_jobd.prog.abap @@ -145,7 +145,7 @@ CLASS lcl_object_jobd IMPLEMENTATION. zcx_abapgit_exception=>raise( |Error deserializing JOBD| ). ENDTRY. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. diff --git a/src/zabapgit_object_oo_functions.prog.abap b/src/zabapgit_object_oo_functions.prog.abap index af8aef77e..f0997710c 100644 --- a/src/zabapgit_object_oo_functions.prog.abap +++ b/src/zabapgit_object_oo_functions.prog.abap @@ -529,7 +529,7 @@ CLASS lcl_oo_base IMPLEMENTATION. ENDMETHOD. METHOD lif_oo_object_fnc~add_to_activation_list. - lcl_objects_activation=>add_item( is_item ). + zcl_abapgit_objects_activation=>add_item( is_item ). ENDMETHOD. METHOD lif_oo_object_fnc~update_descriptions. diff --git a/src/zabapgit_object_sfbf.prog.abap b/src/zabapgit_object_sfbf.prog.abap index b2f499c0b..b1b8b285b 100644 --- a/src/zabapgit_object_sfbf.prog.abap +++ b/src/zabapgit_object_sfbf.prog.abap @@ -213,7 +213,7 @@ CLASS lcl_object_sfbf IMPLEMENTATION. lo_bf->save_all( ). SET PARAMETER ID 'EUK' FIELD ''. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_sfbs.prog.abap b/src/zabapgit_object_sfbs.prog.abap index 8bbcfb508..c8c1d8af9 100644 --- a/src/zabapgit_object_sfbs.prog.abap +++ b/src/zabapgit_object_sfbs.prog.abap @@ -187,7 +187,7 @@ CLASS lcl_object_sfbs IMPLEMENTATION. lo_bfs->save_all( ). SET PARAMETER ID 'EUK' FIELD ''. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_sfpf.prog.abap b/src/zabapgit_object_sfpf.prog.abap index 73e49bbde..6b0ded485 100644 --- a/src/zabapgit_object_sfpf.prog.abap +++ b/src/zabapgit_object_sfpf.prog.abap @@ -217,7 +217,7 @@ CLASS lcl_object_sfpf IMPLEMENTATION. zcx_abapgit_exception=>raise( 'SFPF error, deserialize' ). ENDTRY. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_sfpi.prog.abap b/src/zabapgit_object_sfpi.prog.abap index 7c147dd47..6117ddee8 100644 --- a/src/zabapgit_object_sfpi.prog.abap +++ b/src/zabapgit_object_sfpi.prog.abap @@ -163,7 +163,7 @@ CLASS lcl_object_sfpi IMPLEMENTATION. zcx_abapgit_exception=>raise( 'SFPI error, deserialize' ). ENDTRY. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_sfsw.prog.abap b/src/zabapgit_object_sfsw.prog.abap index dc62ccef3..e7f67a99c 100644 --- a/src/zabapgit_object_sfsw.prog.abap +++ b/src/zabapgit_object_sfsw.prog.abap @@ -181,8 +181,7 @@ CLASS lcl_object_sfsw IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error in CL_SFW_SW->SAVE_ALL' ). ENDIF. - - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_shlp.prog.abap b/src/zabapgit_object_shlp.prog.abap index d8caebb94..27c9530e0 100644 --- a/src/zabapgit_object_shlp.prog.abap +++ b/src/zabapgit_object_shlp.prog.abap @@ -202,7 +202,7 @@ CLASS lcl_object_shlp IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error from DDIF_SHLP_PUT' ). ENDIF. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index fc77210f2..55c8e575f 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -410,7 +410,7 @@ CLASS lcl_object_tabl IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error from DDIF_TABL_PUT' ). ENDIF. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). * handle indexes LOOP AT lt_dd12v INTO ls_dd12v. @@ -449,8 +449,8 @@ CLASS lcl_object_tabl IMPLEMENTATION. IMPORTING obj_name = lv_tname. - lcl_objects_activation=>add( iv_type = 'INDX' - iv_name = lv_tname ). + zcl_abapgit_objects_activation=>add( iv_type = 'INDX' + iv_name = lv_tname ). ENDLOOP. diff --git a/src/zabapgit_object_ttyp.prog.abap b/src/zabapgit_object_ttyp.prog.abap index d5584b310..1576b3ae7 100644 --- a/src/zabapgit_object_ttyp.prog.abap +++ b/src/zabapgit_object_ttyp.prog.abap @@ -181,7 +181,7 @@ CLASS lcl_object_ttyp IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error from DDIF_TTYP_PUT' ). ENDIF. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_type.prog.abap b/src/zabapgit_object_type.prog.abap index 9e4a7e484..8947e9fa7 100644 --- a/src/zabapgit_object_type.prog.abap +++ b/src/zabapgit_object_type.prog.abap @@ -177,7 +177,7 @@ CLASS lcl_object_type IMPLEMENTATION. INSERT REPORT lv_progname FROM lt_source STATE 'I'. ENDIF. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_view.prog.abap b/src/zabapgit_object_view.prog.abap index ed7765552..46c960c14 100644 --- a/src/zabapgit_object_view.prog.abap +++ b/src/zabapgit_object_view.prog.abap @@ -267,7 +267,7 @@ CLASS lcl_object_view IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error from DDIF_VIEW_PUT' ). ENDIF. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_wapa.prog.abap b/src/zabapgit_object_wapa.prog.abap index aeff78bd8..b0778fcf0 100644 --- a/src/zabapgit_object_wapa.prog.abap +++ b/src/zabapgit_object_wapa.prog.abap @@ -263,7 +263,7 @@ CLASS lcl_object_wapa IMPLEMENTATION. ls_item-obj_type = 'WAPD'. ls_item-obj_name = ms_item-obj_name. - lcl_objects_activation=>add_item( ls_item ). + zcl_abapgit_objects_activation=>add_item( ls_item ). lv_objkey = ls_item-obj_name. * todo, hmm, the WAPD is not added to the worklist during activation @@ -298,8 +298,8 @@ CLASS lcl_object_wapa IMPLEMENTATION. p_key_component2 = -attributes-pagekey p_external_id = 'WG ' ). - lcl_objects_activation=>add( iv_type = 'WAPP' - iv_name = lv_obj_name ). + zcl_abapgit_objects_activation=>add( iv_type = 'WAPP' + iv_name = lv_obj_name ). ENDLOOP. diff --git a/src/zabapgit_object_wdyn.prog.abap b/src/zabapgit_object_wdyn.prog.abap index dbe0ae3f8..dbcf9aee5 100644 --- a/src/zabapgit_object_wdyn.prog.abap +++ b/src/zabapgit_object_wdyn.prog.abap @@ -770,7 +770,7 @@ CLASS lcl_object_wdyn IMPLEMENTATION. recover_view( ). ENDLOOP. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize diff --git a/src/zabapgit_object_webi.prog.abap b/src/zabapgit_object_webi.prog.abap index dcfc03165..feba0ddca 100644 --- a/src/zabapgit_object_webi.prog.abap +++ b/src/zabapgit_object_webi.prog.abap @@ -409,7 +409,7 @@ CLASS lcl_object_webi IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error deserializing WEBI' ). ENDTRY. - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "zif_abapgit_object~deserialize diff --git a/src/zabapgit_object_xslt.prog.abap b/src/zabapgit_object_xslt.prog.abap index 0e38ac853..b921cc1e6 100644 --- a/src/zabapgit_object_xslt.prog.abap +++ b/src/zabapgit_object_xslt.prog.abap @@ -135,7 +135,7 @@ CLASS lcl_object_xslt IMPLEMENTATION. lo_xslt->set_changeable( abap_false ). - lcl_objects_activation=>add_item( ms_item ). + zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "zif_abapgit_object~deserialize diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index b97d6d33c..12891fa10 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -2,345 +2,6 @@ *& Include ZABAPGIT_OBJECTS *&---------------------------------------------------------------------* -*----------------------------------------------------------------------* -* CLASS lcl_objects_activation DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_objects_activation DEFINITION FINAL. - - PUBLIC SECTION. - CLASS-METHODS add - IMPORTING iv_type TYPE trobjtype - iv_name TYPE clike - iv_delete TYPE abap_bool DEFAULT abap_false - RAISING zcx_abapgit_exception. - - CLASS-METHODS add_item - IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item - RAISING zcx_abapgit_exception. - - CLASS-METHODS activate - IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false - RAISING zcx_abapgit_exception. - - CLASS-METHODS clear. - - PRIVATE SECTION. - CLASS-METHODS fix_class_methods - IMPORTING iv_obj_name TYPE trobj_name - CHANGING ct_objects TYPE dwinactiv_tab. - - CLASS-METHODS use_new_activation_logic - RETURNING VALUE(rv_use_new_activation_logic) TYPE abap_bool. - - CLASS-METHODS activate_new - IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false - RAISING zcx_abapgit_exception. - - CLASS-METHODS activate_old - IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false - RAISING zcx_abapgit_exception. - - CLASS-METHODS activate_ddic - RAISING zcx_abapgit_exception. - - CLASS-METHODS show_activation_errors - IMPORTING iv_logname TYPE ddmass-logname - RAISING zcx_abapgit_exception. - - CLASS-DATA: gt_objects TYPE TABLE OF dwinactiv. - -ENDCLASS. "lcl_objects_activation DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_objects_activation IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_objects_activation IMPLEMENTATION. - - METHOD add_item. - add( iv_type = is_item-obj_type - iv_name = is_item-obj_name ). - ENDMETHOD. "add_item - - METHOD clear. - CLEAR gt_objects. - ENDMETHOD. "clear - - METHOD activate. - - IF use_new_activation_logic( ) = abap_true. - - activate_new( iv_ddic ). - - ELSE. - - activate_old( iv_ddic ). - - ENDIF. - - ENDMETHOD. "activate - - METHOD fix_class_methods. -* function module RS_WORKING_OBJECTS_ACTIVATE assumes that -* METH lines contains spaces between class and method name -* however, classes named with 30 characters -* eg. ZCL_CLAS_TESTTESTTESTTESTTESTT -* this will not be true, so find all the method includes instead - - DATA: lt_methods TYPE seop_methods_w_include, - lv_class TYPE seoclsname. - - FIELD-SYMBOLS: LIKE LINE OF lt_methods, - LIKE LINE OF ct_objects. - - - lv_class = iv_obj_name. - - cl_oo_classname_service=>get_all_method_includes( - EXPORTING - clsname = lv_class - RECEIVING - result = lt_methods - EXCEPTIONS - class_not_existing = 1 - OTHERS = 2 ). - ASSERT sy-subrc = 0. - DELETE ct_objects WHERE object = 'METH'. - LOOP AT lt_methods ASSIGNING . - APPEND INITIAL LINE TO ct_objects ASSIGNING . - -object = 'METH'. - -obj_name = -incname. - ENDLOOP. - - ENDMETHOD. - - METHOD add. - -* function group SEWORKINGAREA -* function module RS_INSERT_INTO_WORKING_AREA -* class CL_WB_ACTIVATION_WORK_AREA - - DATA: lt_objects TYPE dwinactiv_tab, - lv_obj_name TYPE dwinactiv-obj_name. - - FIELD-SYMBOLS: LIKE LINE OF lt_objects. - - - lv_obj_name = iv_name. - - CASE iv_type. - WHEN 'CLAS' OR 'WDYN'. -* todo, move this to the object type include instead - CALL FUNCTION 'RS_INACTIVE_OBJECTS_IN_OBJECT' - EXPORTING - obj_name = lv_obj_name - object = iv_type - TABLES - inactive_objects = lt_objects - EXCEPTIONS - object_not_found = 1 - OTHERS = 2. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'Error from RS_INACTIVE_OBJECTS_IN_OBJECT' ). - ENDIF. - - IF iv_type = 'CLAS'. - fix_class_methods( EXPORTING iv_obj_name = lv_obj_name - CHANGING ct_objects = lt_objects ). - ENDIF. - - LOOP AT lt_objects ASSIGNING . - -delet_flag = iv_delete. - ENDLOOP. - - APPEND LINES OF lt_objects TO gt_objects. - WHEN OTHERS. - APPEND INITIAL LINE TO gt_objects ASSIGNING . - -object = iv_type. - -obj_name = lv_obj_name. - -delet_flag = iv_delete. - ENDCASE. - - ENDMETHOD. "activate - - - METHOD use_new_activation_logic. - - IF zcl_abapgit_persist_settings=>get_instance( )->read( )->get_experimental_features( ) = abap_true. - - CALL FUNCTION 'FUNCTION_EXISTS' - EXPORTING - funcname = 'DD_MASS_ACT_C3' " Name of Function Module - EXCEPTIONS - function_not_exist = 1 - OTHERS = 2. - - IF sy-subrc = 0. - rv_use_new_activation_logic = abap_true. - ENDIF. - - ENDIF. - - ENDMETHOD. - - - METHOD activate_new. - - DATA: lo_progress TYPE REF TO zcl_abapgit_progress. - - IF gt_objects IS INITIAL. - RETURN. - ENDIF. - - CREATE OBJECT lo_progress - EXPORTING - iv_total = 100. - - IF iv_ddic = abap_true. - - lo_progress->show( iv_current = 98 - iv_text = 'Activating DDIC' ). - - activate_ddic( ). - - ELSE. - - lo_progress->show( iv_current = 98 - iv_text = 'Activating non DDIC' ). - - activate_old( ). - - ENDIF. - - ENDMETHOD. - - - METHOD activate_old. - - IF gt_objects IS NOT INITIAL. - - CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' - EXPORTING - activate_ddic_objects = iv_ddic - with_popup = abap_true - TABLES - objects = gt_objects - EXCEPTIONS - excecution_error = 1 - cancelled = 2 - insert_into_corr_error = 3 - OTHERS = 4. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'error from RS_WORKING_OBJECTS_ACTIVATE' ). - ENDIF. - - ENDIF. - - ENDMETHOD. - - METHOD activate_ddic. - - DATA: lt_gentab TYPE STANDARD TABLE OF dcgentb, - ls_gentab LIKE LINE OF lt_gentab, - lv_rc TYPE sy-subrc, - lt_deltab TYPE STANDARD TABLE OF dcdeltb, - lt_action_tab TYPE STANDARD TABLE OF dctablres, - lv_logname TYPE ddmass-logname. - - FIELD-SYMBOLS: LIKE LINE OF gt_objects. - - LOOP AT gt_objects ASSIGNING . - - ls_gentab-name = -obj_name. - ls_gentab-type = -object. - INSERT ls_gentab INTO TABLE lt_gentab. - - ENDLOOP. - - IF lt_gentab IS NOT INITIAL. - - lv_logname = |ABAPGIT_{ sy-datum }_{ sy-uzeit }|. - - CALL FUNCTION 'DD_MASS_ACT_C3' - EXPORTING - ddmode = 'C' - medium = 'T' - device = 'T' - logname = lv_logname - write_log = abap_true - log_head_tail = abap_true - t_on = space - prid = 1 - IMPORTING - act_rc = lv_rc - TABLES - gentab = lt_gentab - deltab = lt_deltab - cnvtab = lt_action_tab - EXCEPTIONS - access_failure = 1 - no_objects = 2 - locked = 3 - internal_error = 4 - OTHERS = 5. - - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'error from DD_MASS_ACT_C3' ). - ENDIF. - - IF lv_rc > 0. - - show_activation_errors( lv_logname ). - - ENDIF. - - ENDIF. - - ENDMETHOD. - - - METHOD show_activation_errors. - - DATA: lt_lines TYPE STANDARD TABLE OF trlog, - lv_logname_db TYPE ddprh-protname, - lo_log TYPE REF TO zcl_abapgit_log. - - FIELD-SYMBOLS: LIKE LINE OF lt_lines. - - lv_logname_db = iv_logname. - - CALL FUNCTION 'TR_READ_LOG' - EXPORTING - iv_log_type = 'DB' - iv_logname_db = lv_logname_db - TABLES - et_lines = lt_lines - EXCEPTIONS - invalid_input = 1 - access_error = 2 - OTHERS = 3. - - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'error from TR_READ_LOG' ). - ENDIF. - - DELETE lt_lines WHERE severity <> 'E'. - - CREATE OBJECT lo_log. - - LOOP AT lt_lines ASSIGNING . - lo_log->add( -line ). - ENDLOOP. - - lo_log->show( ). - - ENDMETHOD. - -ENDCLASS. "lcl_objects_activation IMPLEMENTATION - "Null Object Pattern CLASS lcl_comparison_null DEFINITION FINAL. PUBLIC SECTION. @@ -1039,8 +700,9 @@ CLASS lcl_objects_program IMPLEMENTATION. AND state = ls_progdir_new-state. "#EC CI_SUBRC ENDIF. - lcl_objects_activation=>add( iv_type = 'REPS' - iv_name = is_progdir-name ). + zcl_abapgit_objects_activation=>add( + iv_type = 'REPS' + iv_name = is_progdir-name ). ENDMETHOD. "deserialize_program @@ -1217,8 +879,9 @@ CLASS lcl_objects_program IMPLEMENTATION. INTO lv_name RESPECTING BLANKS. ASSERT NOT lv_name IS INITIAL. - lcl_objects_activation=>add( iv_type = 'DYNP' - iv_name = lv_name ). + zcl_abapgit_objects_activation=>add( + iv_type = 'DYNP' + iv_name = lv_name ). ENDLOOP. @@ -1308,9 +971,10 @@ CLASS lcl_objects_program IMPLEMENTATION. ENDIF. IF lv_state = 'I'. "Textpool in master language needs to be activated - lcl_objects_activation=>add( iv_type = 'REPT' - iv_name = iv_program - iv_delete = lv_delete ). + zcl_abapgit_objects_activation=>add( + iv_type = 'REPT' + iv_name = iv_program + iv_delete = lv_delete ). ENDIF. ENDMETHOD. "deserialize_textpool @@ -1375,8 +1039,9 @@ CLASS lcl_objects_program IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error from RS_CUA_INTERNAL_WRITE' ). ENDIF. - lcl_objects_activation=>add( iv_type = 'CUAD' - iv_name = iv_program_name ). + zcl_abapgit_objects_activation=>add( + iv_type = 'CUAD' + iv_name = iv_program_name ). ENDMETHOD. "deserialize_cua diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap index 9d34a59bb..8b17918fc 100644 --- a/src/zabapgit_objects_impl.prog.abap +++ b/src/zabapgit_objects_impl.prog.abap @@ -447,7 +447,7 @@ CLASS lcl_objects IMPLEMENTATION. zcl_abapgit_default_task=>get_instance( )->set( lv_package ). - lcl_objects_activation=>clear( ). + zcl_abapgit_objects_activation=>clear( ). lt_remote = io_repo->get_files_remote( ). @@ -556,7 +556,7 @@ CLASS lcl_objects IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF it_objects. - lcl_objects_activation=>clear( ). + zcl_abapgit_objects_activation=>clear( ). CREATE OBJECT lo_progress EXPORTING @@ -572,7 +572,7 @@ CLASS lcl_objects IMPLEMENTATION. APPEND LINES OF -obj->mo_files->get_accessed_files( ) TO ct_files. ENDLOOP. - lcl_objects_activation=>activate( iv_ddic ). + zcl_abapgit_objects_activation=>activate( iv_ddic ). ENDMETHOD.