diff --git a/src/objects/zcl_abapgit_objects_activation.clas.abap b/src/objects/zcl_abapgit_objects_activation.clas.abap index 7e34898e8..a9316f34a 100644 --- a/src/objects/zcl_abapgit_objects_activation.clas.abap +++ b/src/objects/zcl_abapgit_objects_activation.clas.abap @@ -1,6 +1,4 @@ -CLASS zcl_abapgit_objects_activation DEFINITION - PUBLIC - CREATE PUBLIC . +CLASS zcl_abapgit_objects_activation DEFINITION PUBLIC CREATE PUBLIC. PUBLIC SECTION. CLASS-METHODS add @@ -20,30 +18,38 @@ CLASS zcl_abapgit_objects_activation DEFINITION CLASS-METHODS clear. PRIVATE SECTION. + + CLASS-DATA: + gt_classes TYPE STANDARD TABLE OF seoclsname WITH DEFAULT KEY, + gt_objects TYPE TABLE OF dwinactiv. + + CLASS-METHODS update_where_used . CLASS-METHODS fix_class_methods - IMPORTING iv_obj_name TYPE trobj_name - CHANGING ct_objects TYPE dwinactiv_tab. - + 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. - + 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. - + 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. - + IMPORTING + !iv_ddic TYPE abap_bool DEFAULT abap_false + RAISING + zcx_abapgit_exception . CLASS-METHODS activate_ddic - RAISING zcx_abapgit_exception. - + 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. - + IMPORTING + !iv_logname TYPE ddmass-logname + RAISING + zcx_abapgit_exception . ENDCLASS. @@ -54,15 +60,13 @@ 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. + update_where_used( ). + ENDMETHOD. "activate @@ -197,7 +201,9 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION. lv_obj_name = iv_name. CASE iv_type. - WHEN 'CLAS' OR 'WDYN'. + WHEN 'CLAS'. + APPEND iv_name TO gt_classes. + WHEN 'WDYN'. * todo, move this to the object type include instead CALL FUNCTION 'RS_INACTIVE_OBJECTS_IN_OBJECT' EXPORTING @@ -212,10 +218,10 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION. 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. +* 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. @@ -240,6 +246,7 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION. METHOD clear. CLEAR gt_objects. + CLEAR gt_classes. ENDMETHOD. "clear @@ -250,6 +257,8 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION. * eg. ZCL_CLAS_TESTTESTTESTTESTTESTT * this will not be true, so find all the method includes instead +* TODO, this class is obsolete with new CLAS deserialization logic + DATA: lt_methods TYPE seop_methods_w_include, lv_class TYPE seoclsname. @@ -316,6 +325,27 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION. ENDMETHOD. + METHOD update_where_used. + + DATA: lv_class LIKE LINE OF gt_classes, + lo_cross TYPE REF TO cl_wb_crossreference, + lv_include TYPE programm. + + + LOOP AT gt_classes INTO lv_class. + lv_include = cl_oo_classname_service=>get_classpool_name( lv_class ). + + CREATE OBJECT lo_cross + EXPORTING + p_name = lv_include + p_include = lv_include. + + lo_cross->index_actualize( ). + ENDLOOP. + + ENDMETHOD. + + METHOD use_new_activation_logic. IF zcl_abapgit_persist_settings=>get_instance( )->read( )->get_experimental_features( ) = abap_true. diff --git a/src/zabapgit_object_clas_new.prog.abap b/src/zabapgit_object_clas_new.prog.abap index 0ec501f45..97ff9b171 100644 --- a/src/zabapgit_object_clas_new.prog.abap +++ b/src/zabapgit_object_clas_new.prog.abap @@ -356,6 +356,11 @@ CLASS lcl_oo_class_new IMPLEMENTATION. it_source = it_source it_methods = lt_methods ). +* TODO, perhaps move this call to somewhere else, to be done while cleaning up the CLAS deserialization + zcl_abapgit_objects_activation=>add( + iv_type = 'CLAS' + iv_name = is_key-clsname ). + ENDMETHOD. METHOD update_full_class_include.