diff --git a/src/ui/pages/zcl_abapgit_gui_page_repo_view.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_repo_view.clas.abap index a57af4b4e..323a19b44 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_repo_view.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_repo_view.clas.abap @@ -271,6 +271,9 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. CREATE OBJECT ro_advanced_dropdown. + ro_advanced_dropdown->add( iv_txt = 'Activate Objects' + iv_act = |{ zif_abapgit_definitions=>c_action-repo_activate_objects }?key={ mv_key }| ). + IF mo_repo->is_offline( ) = abap_false. " Online ? ro_advanced_dropdown->add( iv_txt = 'Transport to Branch' diff --git a/src/ui/routing/zcl_abapgit_gui_router.clas.abap b/src/ui/routing/zcl_abapgit_gui_router.clas.abap index cc2ad36a6..a191afeb7 100644 --- a/src/ui/routing/zcl_abapgit_gui_router.clas.abap +++ b/src/ui/routing/zcl_abapgit_gui_router.clas.abap @@ -617,6 +617,9 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION. zcl_abapgit_services_repo=>remove( lv_key ). CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_main EXPORTING iv_only_favorites = abap_true. rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_replacing. + WHEN zif_abapgit_definitions=>c_action-repo_activate_objects. " Repo activate objects + zcl_abapgit_services_repo=>activate_objects( lv_key ). + rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render. WHEN zif_abapgit_definitions=>c_action-repo_newonline. " New offline repo rs_handled-page = zcl_abapgit_gui_page_addonline=>create( ). rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page. diff --git a/src/ui/routing/zcl_abapgit_services_repo.clas.abap b/src/ui/routing/zcl_abapgit_services_repo.clas.abap index 776f9962c..74600c565 100644 --- a/src/ui/routing/zcl_abapgit_services_repo.clas.abap +++ b/src/ui/routing/zcl_abapgit_services_repo.clas.abap @@ -56,6 +56,13 @@ CLASS zcl_abapgit_services_repo DEFINITION !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception . + CLASS-METHODS activate_objects + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + RETURNING + VALUE(ri_log) TYPE REF TO zif_abapgit_log + RAISING + zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. @@ -96,6 +103,61 @@ ENDCLASS. CLASS zcl_abapgit_services_repo IMPLEMENTATION. + METHOD activate_objects. + + DATA: + lo_repo TYPE REF TO zcl_abapgit_repo, + lo_browser TYPE REF TO zcl_abapgit_repo_content_list, + lt_repo_items TYPE zif_abapgit_definitions=>ty_repo_item_tt, + lv_count TYPE i, + lv_message TYPE string. + + FIELD-SYMBOLS LIKE LINE OF lt_repo_items. + + lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). + + CREATE OBJECT lo_browser + EXPORTING + io_repo = lo_repo. + + lt_repo_items = lo_browser->list( '/' ). + + ri_log = lo_repo->create_new_log( 'Activation Log' ). + + " Add all inactive objects to activation queue + zcl_abapgit_objects_activation=>clear( ). + + LOOP AT lt_repo_items ASSIGNING WHERE inactive = abap_true. + zcl_abapgit_objects_activation=>add( + iv_type = -obj_type + iv_name = -obj_name ). + lv_count = lv_count + 1. + ENDLOOP. + + IF lv_count = 0. + MESSAGE 'No inactive objects found' TYPE 'S'. + RETURN. + ENDIF. + + " Activate DDIC + non-DDIC + zcl_abapgit_objects_activation=>activate( + iv_ddic = abap_true + ii_log = ri_log ). + + zcl_abapgit_objects_activation=>activate( + iv_ddic = abap_false + ii_log = ri_log ). + + IF ri_log->get_status( ) <> zif_abapgit_log=>c_status-error. + lv_message = |Successfully activated { lv_count } objects|. + MESSAGE lv_message TYPE 'S'. + ENDIF. + + lo_repo->refresh( iv_drop_log = abap_false ). + + ENDMETHOD. + + METHOD check_package. DATA: diff --git a/src/zif_abapgit_definitions.intf.abap b/src/zif_abapgit_definitions.intf.abap index f23a72af7..ad63c8939 100644 --- a/src/zif_abapgit_definitions.intf.abap +++ b/src/zif_abapgit_definitions.intf.abap @@ -446,6 +446,7 @@ INTERFACE zif_abapgit_definitions repo_background TYPE string VALUE 'repo_background', repo_infos TYPE string VALUE 'repo_infos', repo_purge TYPE string VALUE 'repo_purge', + repo_activate_objects TYPE string VALUE 'activate_objects', repo_newonline TYPE string VALUE 'repo_newonline', repo_newoffline TYPE string VALUE 'repo_newoffline', repo_add_all_obj_to_trans_req TYPE string VALUE 'repo_add_all_obj_to_trans_req',