diff --git a/abaplint.json b/abaplint.json index bf4c34472..d8c2a60e5 100644 --- a/abaplint.json +++ b/abaplint.json @@ -97,6 +97,7 @@ "forbidden_void_type": { "check": ["^stringtab$", "^SYCHAR01$", "^char2$", "^char20$", "^int4$", "^SYREPID$", "^flag$", "^char12$", "^char10$", "^char70$", "^char4$", "^sydatum$", "^syuzeit$", + "^syst_title$", "^sychar70$", "^numc2$", "^sap_bool$", "^SYCHAR10$", "^sylangu$"] }, "forbidden_identifier": true, diff --git a/src/ui/zcl_abapgit_free_sel_dialog.clas.abap b/src/ui/zcl_abapgit_free_sel_dialog.clas.abap index af9159ab7..2e52d968f 100644 --- a/src/ui/zcl_abapgit_free_sel_dialog.clas.abap +++ b/src/ui/zcl_abapgit_free_sel_dialog.clas.abap @@ -17,9 +17,12 @@ CLASS zcl_abapgit_free_sel_dialog DEFINITION text TYPE rsseltext, END OF ty_free_sel_field, ty_free_sel_field_tab TYPE STANDARD TABLE OF ty_free_sel_field WITH DEFAULT KEY. + + TYPES: ty_syst_title TYPE c LENGTH 70. + METHODS: - constructor IMPORTING iv_title TYPE syst_title OPTIONAL - iv_frame_text TYPE syst_title OPTIONAL, + constructor IMPORTING iv_title TYPE ty_syst_title OPTIONAL + iv_frame_text TYPE ty_syst_title OPTIONAL, set_fields CHANGING ct_fields TYPE ty_free_sel_field_tab, show RAISING zcx_abapgit_cancel zcx_abapgit_exception. @@ -48,72 +51,20 @@ CLASS zcl_abapgit_free_sel_dialog DEFINITION transfer_results_to_input IMPORTING it_result_ranges TYPE rsds_trange. DATA: mr_fields TYPE REF TO ty_free_sel_field_tab, - mv_title TYPE syst_title, - mv_frame_text TYPE syst_title. + mv_title TYPE ty_syst_title, + mv_frame_text TYPE ty_syst_title. ENDCLASS. -CLASS zcl_abapgit_free_sel_dialog IMPLEMENTATION. +CLASS ZCL_ABAPGIT_FREE_SEL_DIALOG IMPLEMENTATION. + + METHOD constructor. mv_title = iv_title. mv_frame_text = iv_frame_text. ENDMETHOD. - METHOD set_fields. - GET REFERENCE OF ct_fields INTO mr_fields. - ENDMETHOD. - - METHOD show. - DATA: lt_default_values TYPE rsds_trange, - ls_restriction TYPE sscr_restrict_ds, - lt_fields TYPE rsdsfields_t, - lt_field_texts TYPE ty_field_text_tab, - lv_repeat_dialog TYPE abap_bool VALUE abap_true, - lv_selection_id TYPE dynselid, - lt_results TYPE rsds_trange, - lx_validation_error TYPE REF TO zcx_abapgit_exception. - - convert_input_fields( - IMPORTING - et_default_values = lt_default_values - es_restriction = ls_restriction - et_fields = lt_fields - et_field_texts = lt_field_texts ). - - WHILE lv_repeat_dialog = abap_true. - lv_repeat_dialog = abap_false. - - free_selections_init( - EXPORTING - it_default_values = lt_default_values - is_restriction = ls_restriction - IMPORTING - ev_selection_id = lv_selection_id - CHANGING - ct_fields = lt_fields - ct_field_texts = lt_field_texts ). - - free_selections_dialog( - EXPORTING - iv_selection_id = lv_selection_id - IMPORTING - et_result_ranges = lt_results - CHANGING - ct_fields = lt_fields ). - - TRY. - validate_results( lt_results ). - CATCH zcx_abapgit_exception INTO lx_validation_error. - lv_repeat_dialog = abap_true. - lt_default_values = lt_results. - MESSAGE lx_validation_error TYPE 'I' DISPLAY LIKE 'E'. - CONTINUE. - ENDTRY. - - transfer_results_to_input( lt_results ). - ENDWHILE. - ENDMETHOD. METHOD convert_input_fields. CONSTANTS: lc_only_eq_optlist_name TYPE c LENGTH 10 VALUE 'ONLYEQ'. @@ -181,6 +132,37 @@ CLASS zcl_abapgit_free_sel_dialog IMPLEMENTATION. ENDLOOP. ENDMETHOD. + + METHOD free_selections_dialog. + CALL FUNCTION 'FREE_SELECTIONS_DIALOG' + EXPORTING + selection_id = iv_selection_id + title = mv_title + frame_text = mv_frame_text + status = 1 + as_window = abap_true + no_intervals = abap_true + tree_visible = abap_false + IMPORTING + field_ranges = et_result_ranges + TABLES + fields_tab = ct_fields + EXCEPTIONS + internal_error = 1 + no_action = 2 + selid_not_found = 3 + illegal_status = 4 + OTHERS = 5. + CASE sy-subrc. + WHEN 0 ##NEEDED. + WHEN 2. + RAISE EXCEPTION TYPE zcx_abapgit_cancel. + WHEN OTHERS. + zcx_abapgit_exception=>raise( |Error from FREE_SELECTIONS_DIALOG: { sy-subrc }| ). + ENDCASE. + ENDMETHOD. + + METHOD free_selections_init. CALL FUNCTION 'FREE_SELECTIONS_INIT' EXPORTING @@ -218,35 +200,105 @@ CLASS zcl_abapgit_free_sel_dialog IMPLEMENTATION. ENDIF. ENDMETHOD. - METHOD free_selections_dialog. - CALL FUNCTION 'FREE_SELECTIONS_DIALOG' - EXPORTING - selection_id = iv_selection_id - title = mv_title - frame_text = mv_frame_text - status = 1 - as_window = abap_true - no_intervals = abap_true - tree_visible = abap_false - IMPORTING - field_ranges = et_result_ranges - TABLES - fields_tab = ct_fields - EXCEPTIONS - internal_error = 1 - no_action = 2 - selid_not_found = 3 - illegal_status = 4 - OTHERS = 5. - CASE sy-subrc. - WHEN 0 ##NEEDED. - WHEN 2. - RAISE EXCEPTION TYPE zcx_abapgit_cancel. - WHEN OTHERS. - zcx_abapgit_exception=>raise( |Error from FREE_SELECTIONS_DIALOG: { sy-subrc }| ). - ENDCASE. + + METHOD set_fields. + GET REFERENCE OF ct_fields INTO mr_fields. ENDMETHOD. + + METHOD show. + DATA: lt_default_values TYPE rsds_trange, + ls_restriction TYPE sscr_restrict_ds, + lt_fields TYPE rsdsfields_t, + lt_field_texts TYPE ty_field_text_tab, + lv_repeat_dialog TYPE abap_bool VALUE abap_true, + lv_selection_id TYPE dynselid, + lt_results TYPE rsds_trange, + lx_validation_error TYPE REF TO zcx_abapgit_exception. + + convert_input_fields( + IMPORTING + et_default_values = lt_default_values + es_restriction = ls_restriction + et_fields = lt_fields + et_field_texts = lt_field_texts ). + + WHILE lv_repeat_dialog = abap_true. + lv_repeat_dialog = abap_false. + + free_selections_init( + EXPORTING + it_default_values = lt_default_values + is_restriction = ls_restriction + IMPORTING + ev_selection_id = lv_selection_id + CHANGING + ct_fields = lt_fields + ct_field_texts = lt_field_texts ). + + free_selections_dialog( + EXPORTING + iv_selection_id = lv_selection_id + IMPORTING + et_result_ranges = lt_results + CHANGING + ct_fields = lt_fields ). + + TRY. + validate_results( lt_results ). + CATCH zcx_abapgit_exception INTO lx_validation_error. + lv_repeat_dialog = abap_true. + lt_default_values = lt_results. + MESSAGE lx_validation_error TYPE 'I' DISPLAY LIKE 'E'. + CONTINUE. + ENDTRY. + + transfer_results_to_input( lt_results ). + ENDWHILE. + ENDMETHOD. + + + METHOD transfer_results_to_input. + FIELD-SYMBOLS: TYPE ty_free_sel_field, + TYPE ty_free_sel_field_tab, + TYPE rsds_range, + TYPE rsds_frange, + TYPE rsdsselopt. + + ASSIGN mr_fields->* TO . + ASSERT sy-subrc = 0. + + LOOP AT ASSIGNING . + READ TABLE it_result_ranges WITH KEY tablename = -ddic_tabname + ASSIGNING . + IF sy-subrc = 0. + READ TABLE -frange_t WITH KEY fieldname = -ddic_fieldname + ASSIGNING . + IF sy-subrc = 0 AND -selopt_t IS NOT INITIAL. + IF -only_parameter = abap_true. + ASSERT lines( -selopt_t ) = 1. + + READ TABLE -selopt_t INDEX 1 ASSIGNING . + ASSERT sy-subrc = 0. + + ASSERT -sign = 'I' AND + -option = 'EQ' AND + -high IS INITIAL. + + -value = -low. + ELSE. + -value_range = -selopt_t. + ENDIF. + ELSE. + CLEAR: -value, -value_range. + ENDIF. + ELSE. + CLEAR: -value, -value_range. + ENDIF. + ENDLOOP. + ENDMETHOD. + + METHOD validate_results. DATA: ls_error_msg TYPE symsg, lv_ddut_fieldname TYPE fnam_____4, @@ -313,44 +365,4 @@ CLASS zcl_abapgit_free_sel_dialog IMPLEMENTATION. ENDLOOP. ENDLOOP. ENDMETHOD. - - METHOD transfer_results_to_input. - FIELD-SYMBOLS: TYPE ty_free_sel_field, - TYPE ty_free_sel_field_tab, - TYPE rsds_range, - TYPE rsds_frange, - TYPE rsdsselopt. - - ASSIGN mr_fields->* TO . - ASSERT sy-subrc = 0. - - LOOP AT ASSIGNING . - READ TABLE it_result_ranges WITH KEY tablename = -ddic_tabname - ASSIGNING . - IF sy-subrc = 0. - READ TABLE -frange_t WITH KEY fieldname = -ddic_fieldname - ASSIGNING . - IF sy-subrc = 0 AND -selopt_t IS NOT INITIAL. - IF -only_parameter = abap_true. - ASSERT lines( -selopt_t ) = 1. - - READ TABLE -selopt_t INDEX 1 ASSIGNING . - ASSERT sy-subrc = 0. - - ASSERT -sign = 'I' AND - -option = 'EQ' AND - -high IS INITIAL. - - -value = -low. - ELSE. - -value_range = -selopt_t. - ENDIF. - ELSE. - CLEAR: -value, -value_range. - ENDIF. - ELSE. - CLEAR: -value, -value_range. - ENDIF. - ENDLOOP. - ENDMETHOD. ENDCLASS. diff --git a/src/ui/zcl_abapgit_gui_functions.clas.abap b/src/ui/zcl_abapgit_gui_functions.clas.abap index f5d53a25f..f8d543f38 100644 --- a/src/ui/zcl_abapgit_gui_functions.clas.abap +++ b/src/ui/zcl_abapgit_gui_functions.clas.abap @@ -6,11 +6,14 @@ CLASS zcl_abapgit_gui_functions DEFINITION INTERFACES: zif_abapgit_gui_functions. + PROTECTED SECTION. + PRIVATE SECTION. ENDCLASS. -CLASS zcl_abapgit_gui_functions IMPLEMENTATION. +CLASS ZCL_ABAPGIT_GUI_FUNCTIONS IMPLEMENTATION. + METHOD zif_abapgit_gui_functions~gui_is_available. @@ -28,5 +31,4 @@ CLASS zcl_abapgit_gui_functions IMPLEMENTATION. return = rv_result. ENDMETHOD. - ENDCLASS. diff --git a/src/ui/zcl_abapgit_popups.clas.abap b/src/ui/zcl_abapgit_popups.clas.abap index 5b2ca0d85..fba076c7f 100644 --- a/src/ui/zcl_abapgit_popups.clas.abap +++ b/src/ui/zcl_abapgit_popups.clas.abap @@ -94,8 +94,8 @@ CLASS zcl_abapgit_popups DEFINITION RAISING zcx_abapgit_exception. METHODS popup_get_from_free_selections IMPORTING - iv_title TYPE syst_title OPTIONAL - iv_frame_text TYPE syst_title OPTIONAL + iv_title TYPE zcl_abapgit_free_sel_dialog=>ty_syst_title OPTIONAL + iv_frame_text TYPE zcl_abapgit_free_sel_dialog=>ty_syst_title OPTIONAL CHANGING ct_fields TYPE zcl_abapgit_free_sel_dialog=>ty_free_sel_field_tab RAISING @@ -110,7 +110,7 @@ ENDCLASS. -CLASS zcl_abapgit_popups IMPLEMENTATION. +CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION. METHOD add_field. @@ -413,6 +413,19 @@ CLASS zcl_abapgit_popups IMPLEMENTATION. ENDMETHOD. + METHOD popup_get_from_free_selections. + DATA: lo_free_sel_dialog TYPE REF TO zcl_abapgit_free_sel_dialog. + + CREATE OBJECT lo_free_sel_dialog + EXPORTING + iv_title = iv_title + iv_frame_text = iv_frame_text. + + lo_free_sel_dialog->set_fields( CHANGING ct_fields = ct_fields ). + lo_free_sel_dialog->show( ). + ENDMETHOD. + + METHOD validate_folder_logic. IF iv_folder_logic <> zif_abapgit_dot_abapgit=>c_folder_logic-prefix @@ -834,6 +847,75 @@ CLASS zcl_abapgit_popups IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_popups~popup_perf_test_parameters. + DATA: lt_fields TYPE zcl_abapgit_free_sel_dialog=>ty_free_sel_field_tab. + FIELD-SYMBOLS: TYPE zcl_abapgit_free_sel_dialog=>ty_free_sel_field. + + APPEND INITIAL LINE TO lt_fields ASSIGNING . + -name = 'PACKAGE'. + -only_parameter = abap_true. + -ddic_tabname = 'TADIR'. + -ddic_fieldname = 'DEVCLASS'. + -param_obligatory = abap_true. + -value = cv_package. + + APPEND INITIAL LINE TO lt_fields ASSIGNING . + -name = 'PGMID'. + -only_parameter = abap_true. + -ddic_tabname = 'TADIR'. + -ddic_fieldname = 'PGMID'. + -value = 'R3TR'. + + APPEND INITIAL LINE TO lt_fields ASSIGNING . + -name = 'OBJECT'. + -ddic_tabname = 'TADIR'. + -ddic_fieldname = 'OBJECT'. + + APPEND INITIAL LINE TO lt_fields ASSIGNING . + -name = 'OBJ_NAME'. + -ddic_tabname = 'TADIR'. + -ddic_fieldname = 'OBJ_NAME'. + + APPEND INITIAL LINE TO lt_fields ASSIGNING . + -name = 'INCLUDE_SUB_PACKAGES'. + -only_parameter = abap_true. + -ddic_tabname = 'TDEVC'. + -ddic_fieldname = 'IS_ENHANCEABLE'. + -text = 'Include subpackages'. + -value = cv_include_sub_packages. + + APPEND INITIAL LINE TO lt_fields ASSIGNING . + -name = 'MASTER_LANG_ONLY'. + -only_parameter = abap_true. + -ddic_tabname = 'TVDIR'. + -ddic_fieldname = 'FLAG'. + -text = 'Master lang only'. + -value = cv_serialize_master_lang_only. + + popup_get_from_free_selections( + EXPORTING + iv_title = 'Serialization Performance Test Parameters' + iv_frame_text = 'Parameters' + CHANGING + ct_fields = lt_fields ). + + LOOP AT lt_fields ASSIGNING . + CASE -name. + WHEN 'PACKAGE'. + cv_package = -value. + WHEN 'OBJECT'. + et_object_type_filter = -value_range. + WHEN 'OBJ_NAME'. + et_object_name_filter = -value_range. + WHEN 'INCLUDE_SUB_PACKAGES'. + cv_include_sub_packages = boolc( -value IS NOT INITIAL ). + WHEN 'MASTER_LANG_ONLY'. + cv_serialize_master_lang_only = boolc( -value IS NOT INITIAL ). + ENDCASE. + ENDLOOP. + ENDMETHOD. + + METHOD zif_abapgit_popups~popup_proxy_bypass. rt_proxy_bypass = it_proxy_bypass. CALL FUNCTION 'COMPLEX_SELECTIONS_DIALOG' @@ -1497,84 +1579,4 @@ CLASS zcl_abapgit_popups IMPLEMENTATION. ENDIF. ENDMETHOD. - - METHOD zif_abapgit_popups~popup_perf_test_parameters. - DATA: lt_fields TYPE zcl_abapgit_free_sel_dialog=>ty_free_sel_field_tab. - FIELD-SYMBOLS: TYPE zcl_abapgit_free_sel_dialog=>ty_free_sel_field. - - APPEND INITIAL LINE TO lt_fields ASSIGNING . - -name = 'PACKAGE'. - -only_parameter = abap_true. - -ddic_tabname = 'TADIR'. - -ddic_fieldname = 'DEVCLASS'. - -param_obligatory = abap_true. - -value = cv_package. - - APPEND INITIAL LINE TO lt_fields ASSIGNING . - -name = 'PGMID'. - -only_parameter = abap_true. - -ddic_tabname = 'TADIR'. - -ddic_fieldname = 'PGMID'. - -value = 'R3TR'. - - APPEND INITIAL LINE TO lt_fields ASSIGNING . - -name = 'OBJECT'. - -ddic_tabname = 'TADIR'. - -ddic_fieldname = 'OBJECT'. - - APPEND INITIAL LINE TO lt_fields ASSIGNING . - -name = 'OBJ_NAME'. - -ddic_tabname = 'TADIR'. - -ddic_fieldname = 'OBJ_NAME'. - - APPEND INITIAL LINE TO lt_fields ASSIGNING . - -name = 'INCLUDE_SUB_PACKAGES'. - -only_parameter = abap_true. - -ddic_tabname = 'TDEVC'. - -ddic_fieldname = 'IS_ENHANCEABLE'. - -text = 'Include subpackages'. - -value = cv_include_sub_packages. - - APPEND INITIAL LINE TO lt_fields ASSIGNING . - -name = 'MASTER_LANG_ONLY'. - -only_parameter = abap_true. - -ddic_tabname = 'TVDIR'. - -ddic_fieldname = 'FLAG'. - -text = 'Master lang only'. - -value = cv_serialize_master_lang_only. - - popup_get_from_free_selections( - EXPORTING - iv_title = 'Serialization Performance Test Parameters' - iv_frame_text = 'Parameters' - CHANGING - ct_fields = lt_fields ). - - LOOP AT lt_fields ASSIGNING . - CASE -name. - WHEN 'PACKAGE'. - cv_package = -value. - WHEN 'OBJECT'. - et_object_type_filter = -value_range. - WHEN 'OBJ_NAME'. - et_object_name_filter = -value_range. - WHEN 'INCLUDE_SUB_PACKAGES'. - cv_include_sub_packages = boolc( -value IS NOT INITIAL ). - WHEN 'MASTER_LANG_ONLY'. - cv_serialize_master_lang_only = boolc( -value IS NOT INITIAL ). - ENDCASE. - ENDLOOP. - ENDMETHOD. - - METHOD popup_get_from_free_selections. - DATA: lo_free_sel_dialog TYPE REF TO zcl_abapgit_free_sel_dialog. - - CREATE OBJECT lo_free_sel_dialog - EXPORTING - iv_title = iv_title - iv_frame_text = iv_frame_text. - - lo_free_sel_dialog->set_fields( CHANGING ct_fields = ct_fields ). - lo_free_sel_dialog->show( ). - ENDMETHOD. ENDCLASS.