diff --git a/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap b/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap index 1d88509da..f1ccce334 100644 --- a/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap @@ -30,8 +30,10 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC commit TYPE string VALUE 'commit' ##NO_TEXT, rerun TYPE string VALUE 'rerun' ##NO_TEXT, END OF c_actions. + DATA: - mo_stage TYPE REF TO zcl_abapgit_stage. + mo_stage TYPE REF TO zcl_abapgit_stage, + mv_check_variant TYPE sci_chkv. METHODS: build_menu @@ -50,7 +52,17 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC is_stage_allowed RETURNING - VALUE(rv_is_stage_allowed) TYPE abap_bool. + VALUE(rv_is_stage_allowed) TYPE abap_bool, + + ask_user_for_check_variant + RETURNING + VALUE(rv_check_variant) TYPE sci_chkv + RAISING + zcx_abapgit_exception, + + determine_check_variant + RAISING + zcx_abapgit_exception. ENDCLASS. @@ -104,6 +116,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION. mo_repo ?= io_repo. mo_stage = io_stage. ms_control-page_title = 'Code Inspector'. + determine_check_variant( ). run_code_inspector( ). ENDMETHOD. @@ -127,23 +140,19 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION. METHOD render_content. - DATA: lv_check_variant TYPE sci_chkv. - FIELD-SYMBOLS: TYPE scir_alvlist. CREATE OBJECT ro_html. - lv_check_variant = mo_repo->get_local_settings( )-code_inspector_check_variant. - - IF lv_check_variant IS INITIAL. - ro_html->add( |No check variant maintained in repo settings.| ). + IF mv_check_variant IS INITIAL. + ro_html->add( |No check variant supplied.| ). RETURN. ENDIF. ro_html->add( '

' ). ro_html->add( |Code inspector check variant: { - mo_repo->get_local_settings( )-code_inspector_check_variant + mv_check_variant }
| ). IF lines( mt_result ) = 0. @@ -164,7 +173,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION. METHOD run_code_inspector. - mt_result = mo_repo->run_code_inspector( ). + mt_result = mo_repo->run_code_inspector( |{ mv_check_variant }| ). ENDMETHOD. @@ -257,4 +266,49 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION. ro_html = super->zif_abapgit_gui_page~render( ). ENDMETHOD. + + METHOD ask_user_for_check_variant. + + DATA: lt_return TYPE STANDARD TABLE OF ddshretval. + + FIELD-SYMBOLS: LIKE LINE OF lt_return. + + CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST' + EXPORTING + tabname = 'SCI_DYNP' + fieldname = 'CHKV' + TABLES + return_tab = lt_return + EXCEPTIONS + field_not_found = 1 + no_help_for_field = 2 + inconsistent_help = 3 + no_values_found = 4 + OTHERS = 5. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + READ TABLE lt_return ASSIGNING + WITH KEY retfield = 'SCI_DYNP-CHKV'. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( |Please select a check variant.| ). + ENDIF. + + rv_check_variant = -fieldval. + + ENDMETHOD. + + + METHOD determine_check_variant. + + mv_check_variant = mo_repo->get_local_settings( )-code_inspector_check_variant. + + IF mv_check_variant IS INITIAL. + mv_check_variant = ask_user_for_check_variant( ). + ENDIF. + + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_abapgit_code_inspector.clas.abap b/src/zcl_abapgit_code_inspector.clas.abap index 72ccd4b21..6fcf3cafe 100644 --- a/src/zcl_abapgit_code_inspector.clas.abap +++ b/src/zcl_abapgit_code_inspector.clas.abap @@ -131,7 +131,16 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION. METHOD constructor. + IF iv_package IS INITIAL. + zcx_abapgit_exception=>raise( |Please supply package| ). + ENDIF. + mv_package = iv_package. + + IF iv_check_variant_name IS INITIAL. + zcx_abapgit_exception=>raise( |Please supply check variant| ). + ENDIF. + mv_check_variant_name = iv_check_variant_name. " We create the inspection and objectset with dummy names. diff --git a/src/zcl_abapgit_repo.clas.abap b/src/zcl_abapgit_repo.clas.abap index 051fad88c..a8dac73c6 100644 --- a/src/zcl_abapgit_repo.clas.abap +++ b/src/zcl_abapgit_repo.clas.abap @@ -100,8 +100,10 @@ CLASS zcl_abapgit_repo DEFINITION RAISING zcx_abapgit_exception . METHODS run_code_inspector + IMPORTING + iv_check_variant TYPE string RETURNING - VALUE(rt_list) TYPE scit_alvlist + VALUE(rt_list) TYPE scit_alvlist RAISING zcx_abapgit_exception . METHODS has_remote_source @@ -611,18 +613,11 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION. METHOD run_code_inspector. - DATA: li_code_inspector TYPE REF TO zif_abapgit_code_inspector, - lv_check_variant TYPE string. - - lv_check_variant = get_local_settings( )-code_inspector_check_variant. - - IF lv_check_variant IS INITIAL. - zcx_abapgit_exception=>raise( |No check variant maintained in repo settings.| ). - ENDIF. + DATA: li_code_inspector TYPE REF TO zif_abapgit_code_inspector. li_code_inspector = zcl_abapgit_factory=>get_code_inspector( iv_package = get_package( ) - iv_check_variant_name = |{ lv_check_variant }| ). + iv_check_variant_name = |{ iv_check_variant }| ). rt_list = li_code_inspector->run( ). diff --git a/src/zcl_abapgit_repo_online.clas.testclasses.abap b/src/zcl_abapgit_repo_online.clas.testclasses.abap index fbb5026ea..98b2f2a5a 100644 --- a/src/zcl_abapgit_repo_online.clas.testclasses.abap +++ b/src/zcl_abapgit_repo_online.clas.testclasses.abap @@ -8,8 +8,10 @@ CLASS ltcl_code_inspector DEFINITION FOR TESTING. constructor IMPORTING iv_package TYPE devclass. + PRIVATE SECTION. - DATA mv_package TYPE devclass. + DATA: + mv_package TYPE devclass. ENDCLASS. @@ -47,9 +49,10 @@ CLASS ltcl_run_code_inspection DEFINITION FINAL FOR TESTING PRIVATE SECTION. DATA: - mo_repo_online TYPE REF TO zcl_abapgit_repo_online, - mv_error_text TYPE string, - mt_act_list TYPE scit_alvlist. + mo_repo_online TYPE REF TO zcl_abapgit_repo_online, + mv_error_text TYPE string, + mt_act_list TYPE scit_alvlist, + mv_check_variant TYPE string. METHODS: exception_when_no_check_var FOR TESTING RAISING cx_static_check, @@ -99,7 +102,7 @@ CLASS ltcl_run_code_inspection IMPLEMENTATION. given_online_repo( iv_package = '$DUMMY' ). given_check_variant( || ). when_run_code_inspector( ). - then_exception_text_is( |No check variant maintained in repo settings.| ). + then_exception_text_is( |Please supply check variant| ). ENDMETHOD. @@ -143,6 +146,7 @@ CLASS ltcl_run_code_inspection IMPLEMENTATION. METHOD given_check_variant. + mv_check_variant = iv_check_variant. mo_repo_online->ms_data-local_settings-code_inspector_check_variant = iv_check_variant. ENDMETHOD. @@ -213,7 +217,7 @@ CLASS ltcl_run_code_inspection IMPLEMENTATION. DATA: lx_error TYPE REF TO zcx_abapgit_exception. TRY. - mt_act_list = mo_repo_online->run_code_inspector( ). + mt_act_list = mo_repo_online->run_code_inspector( |{ mv_check_variant }| ). CATCH zcx_abapgit_exception INTO lx_error. mv_error_text = lx_error->get_text( ). ENDTRY.