mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Improve pull dialog button logic (#6169)
This commit is contained in:
parent
2114871c10
commit
5057386e2b
|
@ -1,11 +1,11 @@
|
||||||
CLASS lcl_object_descision_list DEFINITION FINAL.
|
CLASS lcl_object_descision_list DEFINITION FINAL.
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
CONSTANTS c_default_column TYPE abap_componentdescr-name VALUE 'DEFAULT_COLUMN'.
|
CONSTANTS c_default_column TYPE abap_componentdescr-name VALUE 'DEFAULT_COLUMN'.
|
||||||
CONSTANTS c_fieldname_selected TYPE abap_componentdescr-name VALUE 'SELECTED'.
|
CONSTANTS c_fieldname_selected TYPE abap_componentdescr-name VALUE 'SELECTED'.
|
||||||
CONSTANTS c_answer_cancel TYPE c LENGTH 1 VALUE 'A'.
|
CONSTANTS c_answer_cancel TYPE c LENGTH 1 VALUE 'A'.
|
||||||
CONSTANTS c_fieldname_obj_type TYPE abap_componentdescr-name VALUE 'OBJ_TYPE'.
|
CONSTANTS c_fieldname_obj_type TYPE abap_componentdescr-name VALUE 'OBJ_TYPE'.
|
||||||
CONSTANTS c_own_pfstatus TYPE sy-pfkey VALUE 'DECIDE_DIALOG'.
|
CONSTANTS c_own_pfstatus TYPE sy-pfkey VALUE 'DECIDE_DIALOG'.
|
||||||
|
|
||||||
METHODS constructor
|
METHODS constructor
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
@ -69,7 +69,7 @@ CLASS lcl_object_descision_list DEFINITION FINAL.
|
||||||
cx_salv_msg.
|
cx_salv_msg.
|
||||||
METHODS setup_columns
|
METHODS setup_columns
|
||||||
IMPORTING
|
IMPORTING
|
||||||
io_columns TYPE REF TO cl_salv_columns_table
|
io_columns TYPE REF TO cl_salv_columns_table
|
||||||
iv_selection_mode TYPE salv_de_constant
|
iv_selection_mode TYPE salv_de_constant
|
||||||
iv_select_column_text TYPE csequence
|
iv_select_column_text TYPE csequence
|
||||||
it_columns_to_display TYPE zif_abapgit_popups=>ty_alv_column_tt
|
it_columns_to_display TYPE zif_abapgit_popups=>ty_alv_column_tt
|
||||||
|
@ -88,7 +88,20 @@ CLASS lcl_object_descision_list DEFINITION FINAL.
|
||||||
METHODS mark_all
|
METHODS mark_all
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_selected TYPE abap_bool.
|
iv_selected TYPE abap_bool.
|
||||||
METHODS mark_visible.
|
METHODS mark_visible
|
||||||
|
IMPORTING
|
||||||
|
iv_selected TYPE abap_bool.
|
||||||
|
METHODS mark_selected.
|
||||||
|
METHODS mark_indexed
|
||||||
|
IMPORTING
|
||||||
|
iv_selected TYPE abap_bool DEFAULT abap_true
|
||||||
|
iv_invert TYPE abap_bool DEFAULT abap_false
|
||||||
|
it_scope TYPE lvc_t_fidx.
|
||||||
|
METHODS are_all_marked
|
||||||
|
IMPORTING
|
||||||
|
it_scope TYPE lvc_t_fidx
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_yes) TYPE abap_bool.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -374,15 +387,15 @@ CLASS lcl_object_descision_list IMPLEMENTATION.
|
||||||
mo_alv->close_screen( ).
|
mo_alv->close_screen( ).
|
||||||
|
|
||||||
WHEN 'SALL' OR 'SEL_ALL'.
|
WHEN 'SALL' OR 'SEL_ALL'.
|
||||||
mark_all( abap_true ).
|
mark_visible( abap_true ).
|
||||||
mo_alv->refresh( ).
|
mo_alv->refresh( ).
|
||||||
|
|
||||||
WHEN 'DSEL' OR 'SEL_DEL'.
|
WHEN 'DSEL' OR 'SEL_DEL'.
|
||||||
mark_all( abap_false ).
|
mark_visible( abap_false ).
|
||||||
mo_alv->refresh( ).
|
mo_alv->refresh( ).
|
||||||
|
|
||||||
WHEN 'SEL_KEY'.
|
WHEN 'SEL_KEY'.
|
||||||
mark_visible( ).
|
mark_selected( ).
|
||||||
mo_alv->refresh( ).
|
mo_alv->refresh( ).
|
||||||
|
|
||||||
WHEN 'SEL_CAT'.
|
WHEN 'SEL_CAT'.
|
||||||
|
@ -417,13 +430,9 @@ CLASS lcl_object_descision_list IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD mark_visible.
|
METHOD are_all_marked.
|
||||||
|
|
||||||
DATA:
|
DATA lv_index LIKE LINE OF it_scope.
|
||||||
lo_selection TYPE REF TO cl_salv_selections,
|
|
||||||
lt_filters TYPE lvc_t_filt,
|
|
||||||
lt_scope TYPE lvc_t_fidx,
|
|
||||||
lv_index LIKE LINE OF lt_scope.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS:
|
FIELD-SYMBOLS:
|
||||||
<lt_table> TYPE STANDARD TABLE,
|
<lt_table> TYPE STANDARD TABLE,
|
||||||
|
@ -433,35 +442,99 @@ CLASS lcl_object_descision_list IMPLEMENTATION.
|
||||||
ASSIGN mr_table->* TO <lt_table>.
|
ASSIGN mr_table->* TO <lt_table>.
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
" First get selection
|
LOOP AT it_scope INTO lv_index.
|
||||||
lo_selection = mo_alv->get_selections( ).
|
|
||||||
lt_scope = lo_selection->get_selected_rows( ).
|
|
||||||
|
|
||||||
IF lines( lt_scope ) = 0.
|
|
||||||
" If nothing selected, select all VISIBLE
|
|
||||||
lt_filters = cl_salv_controller_metadata=>get_lvc_filter( mo_alv->get_filters( ) ).
|
|
||||||
IF lines( lt_filters ) = 0.
|
|
||||||
mark_all( abap_true ). " No filters - just select all
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
CALL FUNCTION 'LVC_FILTER_APPLY'
|
|
||||||
EXPORTING
|
|
||||||
it_filter = lt_filters
|
|
||||||
IMPORTING
|
|
||||||
et_filter_index_inside = lt_scope
|
|
||||||
TABLES
|
|
||||||
it_data = <lt_table>.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
LOOP AT lt_scope INTO lv_index.
|
|
||||||
|
|
||||||
READ TABLE <lt_table> ASSIGNING <ls_line> INDEX lv_index.
|
READ TABLE <lt_table> ASSIGNING <ls_line> INDEX lv_index.
|
||||||
CHECK sy-subrc = 0.
|
CHECK sy-subrc = 0.
|
||||||
|
|
||||||
ASSIGN COMPONENT c_fieldname_selected OF STRUCTURE <ls_line> TO <lv_selected>.
|
ASSIGN COMPONENT c_fieldname_selected OF STRUCTURE <ls_line> TO <lv_selected>.
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
<lv_selected> = abap_true.
|
|
||||||
|
IF <lv_selected> = abap_true.
|
||||||
|
rv_yes = abap_true.
|
||||||
|
ELSE.
|
||||||
|
rv_yes = abap_false.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD mark_selected.
|
||||||
|
|
||||||
|
DATA lt_clear TYPE salv_t_row.
|
||||||
|
DATA lt_scope TYPE lvc_t_fidx.
|
||||||
|
|
||||||
|
lt_scope = mo_alv->get_selections( )->get_selected_rows( ).
|
||||||
|
|
||||||
|
IF lines( lt_scope ) > 0.
|
||||||
|
mark_indexed(
|
||||||
|
it_scope = lt_scope
|
||||||
|
iv_selected = boolc( are_all_marked( lt_scope ) = abap_false ) ).
|
||||||
|
mo_alv->get_selections( )->set_selected_rows( lt_clear ).
|
||||||
|
ELSE.
|
||||||
|
MESSAGE 'Select rows first to mark them' TYPE 'S'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD mark_visible.
|
||||||
|
|
||||||
|
DATA lt_filters TYPE lvc_t_filt.
|
||||||
|
DATA lt_scope TYPE lvc_t_fidx.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <lt_table> TYPE STANDARD TABLE.
|
||||||
|
|
||||||
|
ASSIGN mr_table->* TO <lt_table>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
" If nothing selected, select all VISIBLE
|
||||||
|
lt_filters = cl_salv_controller_metadata=>get_lvc_filter( mo_alv->get_filters( ) ).
|
||||||
|
IF lines( lt_filters ) = 0.
|
||||||
|
mark_all( iv_selected ). " No filters - just select all
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CALL FUNCTION 'LVC_FILTER_APPLY'
|
||||||
|
EXPORTING
|
||||||
|
it_filter = lt_filters
|
||||||
|
IMPORTING
|
||||||
|
et_filter_index_inside = lt_scope
|
||||||
|
TABLES
|
||||||
|
it_data = <lt_table>.
|
||||||
|
|
||||||
|
mark_indexed(
|
||||||
|
it_scope = lt_scope
|
||||||
|
iv_selected = iv_selected ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD mark_indexed.
|
||||||
|
|
||||||
|
DATA lv_index LIKE LINE OF it_scope.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS:
|
||||||
|
<lt_table> TYPE STANDARD TABLE,
|
||||||
|
<ls_line> TYPE any,
|
||||||
|
<lv_selected> TYPE abap_bool.
|
||||||
|
|
||||||
|
ASSIGN mr_table->* TO <lt_table>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
LOOP AT it_scope INTO lv_index.
|
||||||
|
|
||||||
|
READ TABLE <lt_table> ASSIGNING <ls_line> INDEX lv_index.
|
||||||
|
CHECK sy-subrc = 0.
|
||||||
|
|
||||||
|
ASSIGN COMPONENT c_fieldname_selected OF STRUCTURE <ls_line> TO <lv_selected>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
IF iv_invert = abap_true.
|
||||||
|
<lv_selected> = boolc( <lv_selected> = abap_false ).
|
||||||
|
ELSE.
|
||||||
|
<lv_selected> = iv_selected.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -587,9 +660,9 @@ CLASS lcl_object_descision_list IMPLEMENTATION.
|
||||||
METHOD setup_columns.
|
METHOD setup_columns.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
lt_columns TYPE salv_t_column_ref,
|
lt_columns TYPE salv_t_column_ref,
|
||||||
ls_column TYPE salv_s_column_ref,
|
ls_column TYPE salv_s_column_ref,
|
||||||
lo_column TYPE REF TO cl_salv_column_list.
|
lo_column TYPE REF TO cl_salv_column_list.
|
||||||
|
|
||||||
FIELD-SYMBOLS <ls_column_to_display> TYPE zif_abapgit_popups=>ty_alv_column.
|
FIELD-SYMBOLS <ls_column_to_display> TYPE zif_abapgit_popups=>ty_alv_column.
|
||||||
|
|
||||||
|
@ -645,12 +718,12 @@ CLASS lcl_object_descision_list IMPLEMENTATION.
|
||||||
METHOD setup_toolbar.
|
METHOD setup_toolbar.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
lv_report TYPE sy-repid,
|
lv_report TYPE sy-repid,
|
||||||
lv_pfstatus TYPE sy-pfkey,
|
lv_pfstatus TYPE sy-pfkey,
|
||||||
lo_functions TYPE REF TO cl_salv_functions_list,
|
lo_functions TYPE REF TO cl_salv_functions_list,
|
||||||
lt_func_list TYPE salv_t_ui_func,
|
lt_func_list TYPE salv_t_ui_func,
|
||||||
lv_fn TYPE string,
|
lv_fn TYPE string,
|
||||||
ls_func LIKE LINE OF lt_func_list.
|
ls_func LIKE LINE OF lt_func_list.
|
||||||
|
|
||||||
CALL FUNCTION 'RS_CUA_STATUS_CHECK'
|
CALL FUNCTION 'RS_CUA_STATUS_CHECK'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
|
|
@ -85,7 +85,7 @@
|
||||||
<TEXT_TYPE>S</TEXT_TYPE>
|
<TEXT_TYPE>S</TEXT_TYPE>
|
||||||
<TEXT_NAME>ICON_SELECT_ALL</TEXT_NAME>
|
<TEXT_NAME>ICON_SELECT_ALL</TEXT_NAME>
|
||||||
<ICON_ID>@4B@</ICON_ID>
|
<ICON_ID>@4B@</ICON_ID>
|
||||||
<FUN_TEXT>Select All</FUN_TEXT>
|
<FUN_TEXT>Select All Visible</FUN_TEXT>
|
||||||
</RSMPE_FUNT>
|
</RSMPE_FUNT>
|
||||||
<RSMPE_FUNT>
|
<RSMPE_FUNT>
|
||||||
<CODE>SEL_CAT</CODE>
|
<CODE>SEL_CAT</CODE>
|
||||||
|
@ -101,7 +101,7 @@
|
||||||
<TEXT_TYPE>S</TEXT_TYPE>
|
<TEXT_TYPE>S</TEXT_TYPE>
|
||||||
<TEXT_NAME>ICON_DESELECT_ALL</TEXT_NAME>
|
<TEXT_NAME>ICON_DESELECT_ALL</TEXT_NAME>
|
||||||
<ICON_ID>@4D@</ICON_ID>
|
<ICON_ID>@4D@</ICON_ID>
|
||||||
<FUN_TEXT>Deselect All</FUN_TEXT>
|
<FUN_TEXT>Deselect All Visible</FUN_TEXT>
|
||||||
</RSMPE_FUNT>
|
</RSMPE_FUNT>
|
||||||
<RSMPE_FUNT>
|
<RSMPE_FUNT>
|
||||||
<CODE>SEL_KEY</CODE>
|
<CODE>SEL_KEY</CODE>
|
||||||
|
@ -109,7 +109,7 @@
|
||||||
<TEXT_TYPE>S</TEXT_TYPE>
|
<TEXT_TYPE>S</TEXT_TYPE>
|
||||||
<TEXT_NAME>ICON_SELECT_BLOCK</TEXT_NAME>
|
<TEXT_NAME>ICON_SELECT_BLOCK</TEXT_NAME>
|
||||||
<ICON_ID>@4C@</ICON_ID>
|
<ICON_ID>@4C@</ICON_ID>
|
||||||
<FUN_TEXT>Mark selected or all visible</FUN_TEXT>
|
<FUN_TEXT>Mark/Toggle Selected</FUN_TEXT>
|
||||||
</RSMPE_FUNT>
|
</RSMPE_FUNT>
|
||||||
</FUN>
|
</FUN>
|
||||||
<BUT>
|
<BUT>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user