mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
check variant popup refactoring (#6350)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
This commit is contained in:
parent
402748d966
commit
abbfdfd68f
|
@ -12,11 +12,7 @@ CLASS zcl_abapgit_code_inspector DEFINITION
|
||||||
!iv_package TYPE devclass
|
!iv_package TYPE devclass
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS validate_check_variant
|
|
||||||
IMPORTING
|
|
||||||
!iv_check_variant_name TYPE sci_chkv
|
|
||||||
RAISING
|
|
||||||
zcx_abapgit_exception .
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
DATA mv_package TYPE devclass .
|
DATA mv_package TYPE devclass .
|
||||||
|
|
||||||
|
@ -85,7 +81,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_CODE_INSPECTOR IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD cleanup.
|
METHOD cleanup.
|
||||||
|
@ -316,24 +312,6 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD validate_check_variant.
|
|
||||||
|
|
||||||
cl_ci_checkvariant=>get_ref(
|
|
||||||
EXPORTING
|
|
||||||
p_user = ''
|
|
||||||
p_name = iv_check_variant_name
|
|
||||||
EXCEPTIONS
|
|
||||||
chkv_not_exists = 1
|
|
||||||
missing_parameter = 2
|
|
||||||
OTHERS = 3 ).
|
|
||||||
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
zcx_abapgit_exception=>raise( |No valid check variant { iv_check_variant_name }| ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_code_inspector~get_summary.
|
METHOD zif_abapgit_code_inspector~get_summary.
|
||||||
rv_summary = mv_summary.
|
rv_summary = mv_summary.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -346,6 +324,25 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_code_inspector~list_global_variants.
|
||||||
|
|
||||||
|
DATA lt_result TYPE if_satc_ci_variant_access=>ty_variant_infos.
|
||||||
|
FIELD-SYMBOLS <ls_result> LIKE LINE OF lt_result.
|
||||||
|
FIELD-SYMBOLS <ls_list> LIKE LINE OF rt_list.
|
||||||
|
|
||||||
|
lt_result = cl_satc_db_access=>get_ci_variants_with_filter( sy-langu ).
|
||||||
|
SORT lt_result BY name.
|
||||||
|
|
||||||
|
* convert types
|
||||||
|
LOOP AT lt_result ASSIGNING <ls_result>.
|
||||||
|
APPEND INITIAL LINE TO rt_list ASSIGNING <ls_list>.
|
||||||
|
<ls_list>-name = <ls_result>-name.
|
||||||
|
<ls_list>-description = <ls_result>-description.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_code_inspector~run.
|
METHOD zif_abapgit_code_inspector~run.
|
||||||
|
|
||||||
DATA: lo_set TYPE REF TO cl_ci_objectset,
|
DATA: lo_set TYPE REF TO cl_ci_objectset,
|
||||||
|
@ -399,4 +396,22 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
|
||||||
mv_summary = lo_timer->end( ).
|
mv_summary = lo_timer->end( ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_code_inspector~validate_check_variant.
|
||||||
|
|
||||||
|
cl_ci_checkvariant=>get_ref(
|
||||||
|
EXPORTING
|
||||||
|
p_user = ''
|
||||||
|
p_name = iv_check_variant_name
|
||||||
|
EXCEPTIONS
|
||||||
|
chkv_not_exists = 1
|
||||||
|
missing_parameter = 2
|
||||||
|
OTHERS = 3 ).
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( |No valid check variant { iv_check_variant_name }| ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -17,6 +17,13 @@ INTERFACE zif_abapgit_code_inspector
|
||||||
|
|
||||||
TYPES ty_results TYPE STANDARD TABLE OF ty_result WITH DEFAULT KEY.
|
TYPES ty_results TYPE STANDARD TABLE OF ty_result WITH DEFAULT KEY.
|
||||||
|
|
||||||
|
TYPES: BEGIN OF ty_variant,
|
||||||
|
name TYPE sci_chkv,
|
||||||
|
description TYPE string,
|
||||||
|
END OF ty_variant.
|
||||||
|
|
||||||
|
TYPES ty_variants TYPE STANDARD TABLE OF ty_variant WITH DEFAULT KEY.
|
||||||
|
|
||||||
METHODS run
|
METHODS run
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_variant TYPE sci_chkv
|
!iv_variant TYPE sci_chkv
|
||||||
|
@ -33,4 +40,14 @@ INTERFACE zif_abapgit_code_inspector
|
||||||
METHODS get_summary
|
METHODS get_summary
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_summary) TYPE string.
|
VALUE(rv_summary) TYPE string.
|
||||||
|
|
||||||
|
METHODS validate_check_variant
|
||||||
|
IMPORTING
|
||||||
|
!iv_check_variant_name TYPE sci_chkv
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
METHODS list_global_variants
|
||||||
|
RETURNING
|
||||||
|
VALUE(rt_list) TYPE ty_variants.
|
||||||
ENDINTERFACE.
|
ENDINTERFACE.
|
||||||
|
|
|
@ -25,6 +25,8 @@ CLASS zcl_abapgit_gui_page_sett_locl DEFINITION
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
DATA mo_popup_picklist TYPE REF TO zcl_abapgit_gui_picklist.
|
||||||
|
|
||||||
CONSTANTS:
|
CONSTANTS:
|
||||||
BEGIN OF c_id,
|
BEGIN OF c_id,
|
||||||
local TYPE string VALUE 'local',
|
local TYPE string VALUE 'local',
|
||||||
|
@ -48,11 +50,9 @@ CLASS zcl_abapgit_gui_page_sett_locl DEFINITION
|
||||||
choose_labels TYPE string VALUE 'choose-labels',
|
choose_labels TYPE string VALUE 'choose-labels',
|
||||||
choose_check_variant TYPE string VALUE 'choose_check_variant',
|
choose_check_variant TYPE string VALUE 'choose_check_variant',
|
||||||
END OF c_event .
|
END OF c_event .
|
||||||
|
|
||||||
DATA mo_form TYPE REF TO zcl_abapgit_html_form .
|
DATA mo_form TYPE REF TO zcl_abapgit_html_form .
|
||||||
DATA mo_form_data TYPE REF TO zcl_abapgit_string_map .
|
DATA mo_form_data TYPE REF TO zcl_abapgit_string_map .
|
||||||
DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map .
|
DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map .
|
||||||
|
|
||||||
DATA mo_repo TYPE REF TO zcl_abapgit_repo .
|
DATA mo_repo TYPE REF TO zcl_abapgit_repo .
|
||||||
DATA ms_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings .
|
DATA ms_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings .
|
||||||
|
|
||||||
|
@ -78,22 +78,26 @@ CLASS zcl_abapgit_gui_page_sett_locl DEFINITION
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS choose_labels
|
METHODS choose_labels
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception .
|
||||||
METHODS choose_check_variant
|
METHODS choose_check_variant
|
||||||
|
IMPORTING
|
||||||
|
iv_is_return TYPE abap_bool DEFAULT abap_false
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception .
|
||||||
METHODS choose_transport_request
|
METHODS choose_transport_request
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception .
|
||||||
METHODS choose_customizing_request
|
METHODS choose_customizing_request
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception .
|
||||||
METHODS is_customizing_included
|
METHODS is_customizing_included
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_result) TYPE abap_bool
|
VALUE(rv_result) TYPE abap_bool
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception .
|
||||||
|
METHODS handle_picklist_state
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -103,14 +107,28 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_LOCL IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD choose_check_variant.
|
METHOD choose_check_variant.
|
||||||
|
|
||||||
DATA: lv_check_variant TYPE sci_chkv.
|
DATA ls_variant TYPE zif_abapgit_code_inspector=>ty_variant.
|
||||||
|
DATA lv_popup_cancelled TYPE abap_bool.
|
||||||
|
|
||||||
lv_check_variant = zcl_abapgit_ui_factory=>get_popups( )->choose_code_insp_check_variant( ).
|
IF iv_is_return = abap_false.
|
||||||
|
|
||||||
|
mo_popup_picklist = zcl_abapgit_popup_code_insp=>create(
|
||||||
|
)->create_picklist(
|
||||||
|
)->set_id( c_event-choose_check_variant
|
||||||
|
)->set_in_page( abap_false ).
|
||||||
|
|
||||||
|
ELSE.
|
||||||
|
|
||||||
|
lv_popup_cancelled = mo_popup_picklist->was_cancelled( ).
|
||||||
|
IF lv_popup_cancelled = abap_false.
|
||||||
|
mo_popup_picklist->get_result_item( CHANGING cs_selected = ls_variant ).
|
||||||
|
IF ls_variant IS NOT INITIAL.
|
||||||
|
mo_form_data->set(
|
||||||
|
iv_key = c_id-code_inspector_check_variant
|
||||||
|
iv_val = ls_variant-name ).
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
IF lv_check_variant IS NOT INITIAL.
|
|
||||||
mo_form_data->set(
|
|
||||||
iv_key = c_id-code_inspector_check_variant
|
|
||||||
iv_val = lv_check_variant ).
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -278,6 +296,25 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_LOCL IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD handle_picklist_state.
|
||||||
|
|
||||||
|
IF mo_popup_picklist IS BOUND AND
|
||||||
|
( mo_popup_picklist->is_fulfilled( ) = abap_true OR mo_popup_picklist->is_in_page( ) = abap_false ).
|
||||||
|
" Picklist is either fullfilled OR
|
||||||
|
" it was on its own page and user went back from it via F3/ESC and the picklist had no "graceful back" handler
|
||||||
|
CASE mo_popup_picklist->id( ).
|
||||||
|
WHEN c_event-choose_check_variant.
|
||||||
|
choose_check_variant( iv_is_return = abap_true ).
|
||||||
|
WHEN OTHERS.
|
||||||
|
zcx_abapgit_exception=>raise( |Unexpected picklist id { mo_popup_picklist->id( ) }| ).
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
CLEAR mo_popup_picklist.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD is_customizing_included.
|
METHOD is_customizing_included.
|
||||||
|
|
||||||
DATA lt_files TYPE zif_abapgit_definitions=>ty_files_item_tt.
|
DATA lt_files TYPE zif_abapgit_definitions=>ty_files_item_tt.
|
||||||
|
@ -404,7 +441,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_LOCL IMPLEMENTATION.
|
||||||
lv_check_variant = to_upper( io_form_data->get( c_id-code_inspector_check_variant ) ).
|
lv_check_variant = to_upper( io_form_data->get( c_id-code_inspector_check_variant ) ).
|
||||||
IF lv_check_variant IS NOT INITIAL.
|
IF lv_check_variant IS NOT INITIAL.
|
||||||
TRY.
|
TRY.
|
||||||
zcl_abapgit_code_inspector=>validate_check_variant( lv_check_variant ).
|
zcl_abapgit_factory=>get_code_inspector( mo_repo->get_package( )
|
||||||
|
)->validate_check_variant( lv_check_variant ).
|
||||||
CATCH zcx_abapgit_exception INTO lx_error.
|
CATCH zcx_abapgit_exception INTO lx_error.
|
||||||
ro_validation_log->set(
|
ro_validation_log->set(
|
||||||
iv_key = c_id-code_inspector_check_variant
|
iv_key = c_id-code_inspector_check_variant
|
||||||
|
@ -457,7 +495,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_LOCL IMPLEMENTATION.
|
||||||
WHEN c_event-choose_check_variant.
|
WHEN c_event-choose_check_variant.
|
||||||
|
|
||||||
choose_check_variant( ).
|
choose_check_variant( ).
|
||||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
|
||||||
|
|
||||||
WHEN c_event-save.
|
WHEN c_event-save.
|
||||||
" Validate form entries before saving
|
" Validate form entries before saving
|
||||||
|
@ -471,12 +508,26 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_LOCL IMPLEMENTATION.
|
||||||
|
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
|
IF mo_popup_picklist IS BOUND. " Uniform popup state handling
|
||||||
|
" This should happen only for a new popup because
|
||||||
|
" on the first re-render main component event handling is blocked
|
||||||
|
" and not called again until the popup distruction
|
||||||
|
IF mo_popup_picklist->is_in_page( ) = abap_true.
|
||||||
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||||
|
ELSE.
|
||||||
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
|
||||||
|
rs_handled-page = zcl_abapgit_gui_page_hoc=>create(
|
||||||
|
ii_child_component = mo_popup_picklist
|
||||||
|
iv_show_as_modal = abap_true ).
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_gui_renderable~render.
|
METHOD zif_abapgit_gui_renderable~render.
|
||||||
|
|
||||||
register_handlers( ).
|
handle_picklist_state( ).
|
||||||
|
|
||||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||||
|
|
||||||
|
@ -493,5 +544,12 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_LOCL IMPLEMENTATION.
|
||||||
|
|
||||||
ri_html->add( `</div>` ).
|
ri_html->add( `</div>` ).
|
||||||
|
|
||||||
|
IF mo_popup_picklist IS NOT BOUND OR mo_popup_picklist->is_in_page( ) = abap_false.
|
||||||
|
register_handlers( ).
|
||||||
|
ELSEIF mo_popup_picklist->is_in_page( ) = abap_true.
|
||||||
|
" Block usual page events if the popup is an in-page popup
|
||||||
|
ri_html->add( zcl_abapgit_gui_in_page_modal=>create( mo_popup_picklist ) ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
10
src/ui/popups/package.devc.xml
Normal file
10
src/ui/popups/package.devc.xml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DEVC" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<DEVC>
|
||||||
|
<CTEXT>abapGit - GUI Popups</CTEXT>
|
||||||
|
</DEVC>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
63
src/ui/popups/zcl_abapgit_popup_code_insp.clas.abap
Normal file
63
src/ui/popups/zcl_abapgit_popup_code_insp.clas.abap
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
CLASS zcl_abapgit_popup_code_insp DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
INTERFACES zif_abapgit_gui_render_item .
|
||||||
|
INTERFACES zif_abapgit_html_popup .
|
||||||
|
|
||||||
|
CLASS-METHODS create
|
||||||
|
RETURNING
|
||||||
|
VALUE(ri_popup) TYPE REF TO zif_abapgit_html_popup .
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
METHODS fetch_list
|
||||||
|
RETURNING
|
||||||
|
VALUE(rt_list) TYPE zif_abapgit_code_inspector=>ty_variants
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ZCL_ABAPGIT_POPUP_CODE_INSP IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD create.
|
||||||
|
CREATE OBJECT ri_popup TYPE zcl_abapgit_popup_code_insp.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD fetch_list.
|
||||||
|
|
||||||
|
rt_list = zcl_abapgit_factory=>get_code_inspector( '$TMP' )->list_global_variants( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_gui_render_item~render.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ls_item> TYPE LINE OF zif_abapgit_code_inspector=>ty_variants.
|
||||||
|
|
||||||
|
ASSIGN iv_item TO <ls_item>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
ri_html = zcl_abapgit_html=>create( |<b>{ <ls_item>-name }</b> - { <ls_item>-description }| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_html_popup~create_picklist.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_picklist
|
||||||
|
EXPORTING
|
||||||
|
iv_title = 'Choose Variant'
|
||||||
|
it_list = fetch_list( )
|
||||||
|
ii_item_renderer = me.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/ui/popups/zcl_abapgit_popup_code_insp.clas.xml
Normal file
16
src/ui/popups/zcl_abapgit_popup_code_insp.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_ABAPGIT_POPUP_CODE_INSP</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abapGit - Select code inspector variant</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
Loading…
Reference in New Issue
Block a user