mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Merge pull request #934 from apex8/master
Replacing per object 'overwrite local Object' dialog with checkbox list
This commit is contained in:
commit
8eb54d568e
|
@ -11,39 +11,29 @@ CLASS lcl_objects IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD warning_overwrite.
|
METHOD warning_overwrite.
|
||||||
|
|
||||||
DATA: lv_index TYPE i,
|
DATA: lt_results_overwrite LIKE ct_results.
|
||||||
lv_answer TYPE c,
|
|
||||||
lv_question TYPE string.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF ct_results.
|
FIELD-SYMBOLS: <ls_result> LIKE LINE OF ct_results.
|
||||||
|
|
||||||
|
|
||||||
LOOP AT ct_results ASSIGNING <ls_result>
|
LOOP AT ct_results ASSIGNING <ls_result>
|
||||||
WHERE NOT obj_type IS INITIAL.
|
WHERE NOT obj_type IS INITIAL.
|
||||||
|
|
||||||
lv_index = sy-tabix.
|
|
||||||
|
|
||||||
IF <ls_result>-lstate IS NOT INITIAL
|
IF <ls_result>-lstate IS NOT INITIAL
|
||||||
AND <ls_result>-lstate <> lif_defs=>gc_state-deleted
|
AND <ls_result>-lstate <> lif_defs=>gc_state-deleted
|
||||||
AND NOT ( <ls_result>-lstate = lif_defs=>gc_state-added
|
AND NOT ( <ls_result>-lstate = lif_defs=>gc_state-added
|
||||||
AND <ls_result>-rstate IS INITIAL ).
|
AND <ls_result>-rstate IS INITIAL ).
|
||||||
lv_question = |It looks like object {
|
|
||||||
<ls_result>-obj_type } { <ls_result>-obj_name
|
|
||||||
} has been modified locally, overwrite object?|.
|
|
||||||
|
|
||||||
lv_answer = lcl_popups=>popup_to_confirm(
|
|
||||||
titlebar = 'Warning'
|
|
||||||
text_question = lv_question
|
|
||||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
|
||||||
|
|
||||||
IF lv_answer = '2'.
|
|
||||||
DELETE ct_results INDEX lv_index.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
|
"current object has been modified locally, add to table for popup
|
||||||
|
APPEND <ls_result> TO lt_results_overwrite.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
if lines( lt_results_overwrite ) > 0.
|
||||||
|
"all returned objects will be overwritten
|
||||||
|
ct_results = lcl_popups=>popup_select_obj_overwrite( lt_results_overwrite ).
|
||||||
|
endif.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD warning_package.
|
METHOD warning_package.
|
||||||
|
|
|
@ -76,18 +76,46 @@ CLASS lcl_popups DEFINITION FINAL.
|
||||||
RAISING lcx_exception
|
RAISING lcx_exception
|
||||||
lcx_cancel,
|
lcx_cancel,
|
||||||
popup_to_select_transports
|
popup_to_select_transports
|
||||||
RETURNING VALUE(rt_trkorr) TYPE trwbo_request_headers.
|
RETURNING VALUE(rt_trkorr) TYPE trwbo_request_headers,
|
||||||
|
popup_select_obj_overwrite
|
||||||
|
IMPORTING it_list TYPE lif_defs=>ty_results_tt
|
||||||
|
RETURNING VALUE(rt_list) TYPE lif_defs=>ty_results_tt
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
TYPES: ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY.
|
TYPES: ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY.
|
||||||
|
|
||||||
CLASS-METHODS: add_field
|
TYPES: BEGIN OF t_popup_select_list,
|
||||||
|
selected TYPE flag.
|
||||||
|
INCLUDE TYPE lif_defs=>ty_result.
|
||||||
|
TYPES END OF t_popup_select_list.
|
||||||
|
|
||||||
|
TYPES: t_popup_select_list_tt TYPE STANDARD TABLE OF t_popup_select_list WITH DEFAULT KEY.
|
||||||
|
|
||||||
|
CLASS-DATA:
|
||||||
|
mtr_select_list TYPE REF TO t_popup_select_list_tt,
|
||||||
|
mo_select_list_popup TYPE REF TO cl_salv_table.
|
||||||
|
|
||||||
|
CLASS-METHODS:
|
||||||
|
add_field
|
||||||
IMPORTING iv_tabname TYPE sval-tabname
|
IMPORTING iv_tabname TYPE sval-tabname
|
||||||
iv_fieldname TYPE sval-fieldname
|
iv_fieldname TYPE sval-fieldname
|
||||||
iv_fieldtext TYPE sval-fieldtext
|
iv_fieldtext TYPE sval-fieldtext
|
||||||
iv_value TYPE clike DEFAULT ''
|
iv_value TYPE clike DEFAULT ''
|
||||||
iv_field_attr TYPE sval-field_attr DEFAULT ''
|
iv_field_attr TYPE sval-field_attr DEFAULT ''
|
||||||
CHANGING ct_fields TYPE ty_sval_tt.
|
CHANGING ct_fields TYPE ty_sval_tt,
|
||||||
|
|
||||||
|
on_select_list_link_click
|
||||||
|
FOR EVENT link_click OF cl_salv_events_table
|
||||||
|
IMPORTING
|
||||||
|
!row
|
||||||
|
!column,
|
||||||
|
|
||||||
|
on_select_list_function_click
|
||||||
|
FOR EVENT added_function OF cl_salv_events_table
|
||||||
|
IMPORTING
|
||||||
|
!e_salv_function.
|
||||||
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -699,4 +727,114 @@ CLASS lcl_popups IMPLEMENTATION.
|
||||||
rs_transport_branch-commit_text = <ls_field>-value.
|
rs_transport_branch-commit_text = <ls_field>-value.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD popup_select_obj_overwrite.
|
||||||
|
DATA:
|
||||||
|
ls_list LIKE LINE OF it_list,
|
||||||
|
ls_popup_list TYPE t_popup_select_list,
|
||||||
|
lt_popup_list TYPE t_popup_select_list_tt,
|
||||||
|
lo_events TYPE REF TO cl_salv_events_table,
|
||||||
|
lo_columns TYPE REF TO cl_salv_columns_table,
|
||||||
|
lt_columns TYPE salv_t_column_ref,
|
||||||
|
ls_column TYPE salv_s_column_ref,
|
||||||
|
lo_column TYPE REF TO cl_salv_column_list,
|
||||||
|
lo_table_header TYPE REF TO cl_salv_form_text.
|
||||||
|
|
||||||
|
LOOP AT it_list INTO ls_list.
|
||||||
|
MOVE-CORRESPONDING ls_list TO ls_popup_list.
|
||||||
|
APPEND ls_popup_list TO lt_popup_list.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
cl_salv_table=>factory( IMPORTING r_salv_table = mo_select_list_popup
|
||||||
|
CHANGING t_table = lt_popup_list ).
|
||||||
|
|
||||||
|
GET REFERENCE OF lt_popup_list INTO mtr_select_list.
|
||||||
|
mo_select_list_popup->set_screen_status( pfstatus = 'ST850'
|
||||||
|
report = 'SAPLKKBL' ).
|
||||||
|
|
||||||
|
mo_select_list_popup->set_screen_popup( start_column = 1
|
||||||
|
end_column = 65
|
||||||
|
start_line = 1
|
||||||
|
end_line = 20 ).
|
||||||
|
|
||||||
|
lo_events = mo_select_list_popup->get_event( ).
|
||||||
|
|
||||||
|
SET HANDLER on_select_list_link_click FOR lo_events.
|
||||||
|
SET HANDLER on_select_list_function_click FOR lo_events.
|
||||||
|
|
||||||
|
CREATE OBJECT lo_table_header
|
||||||
|
EXPORTING
|
||||||
|
text = |The following Objects have been modified locally. Select the Objects which should be overwritten.|.
|
||||||
|
|
||||||
|
mo_select_list_popup->set_top_of_list( lo_table_header ).
|
||||||
|
|
||||||
|
lo_columns = mo_select_list_popup->get_columns( ).
|
||||||
|
lo_columns->set_optimize( abap_true ).
|
||||||
|
lt_columns = lo_columns->get( ).
|
||||||
|
|
||||||
|
LOOP AT lt_columns INTO ls_column.
|
||||||
|
CASE ls_column-columnname.
|
||||||
|
WHEN 'OBJ_TYPE' OR 'OBJ_NAME'.
|
||||||
|
|
||||||
|
WHEN 'SELECTED'.
|
||||||
|
lo_column ?= ls_column-r_column.
|
||||||
|
lo_column->set_cell_type( if_salv_c_cell_type=>checkbox_hotspot ).
|
||||||
|
lo_column->set_output_length( 20 ).
|
||||||
|
lo_column->set_short_text( 'Overwrite?' ).
|
||||||
|
lo_column->set_medium_text( 'Overwr. Lcl Object?' ).
|
||||||
|
lo_column->set_long_text( 'Overwrite Local Object?' ).
|
||||||
|
|
||||||
|
WHEN OTHERS.
|
||||||
|
ls_column-r_column->set_technical( abap_true ).
|
||||||
|
|
||||||
|
ENDCASE.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
mo_select_list_popup->display( ).
|
||||||
|
|
||||||
|
CATCH cx_salv_msg.
|
||||||
|
lcx_exception=>raise( 'Error from POPUP_SELECT_OBJ_OVERWRITE' ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
LOOP AT lt_popup_list INTO ls_popup_list WHERE selected = abap_true.
|
||||||
|
MOVE-CORRESPONDING ls_popup_list TO ls_list.
|
||||||
|
APPEND ls_list TO rt_list.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
CLEAR:
|
||||||
|
mo_select_list_popup,
|
||||||
|
mtr_select_list.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD on_select_list_function_click.
|
||||||
|
CASE e_salv_function.
|
||||||
|
WHEN 'GOON'.
|
||||||
|
mo_select_list_popup->close_screen( ).
|
||||||
|
WHEN 'ABR'.
|
||||||
|
"Canceled: clear list to overwrite nothing
|
||||||
|
CLEAR mtr_select_list->*.
|
||||||
|
mo_select_list_popup->close_screen( ).
|
||||||
|
ENDCASE.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD on_select_list_link_click.
|
||||||
|
DATA:
|
||||||
|
lsr_line TYPE REF TO t_popup_select_list,
|
||||||
|
lv_line TYPE sytabix.
|
||||||
|
|
||||||
|
lv_line = row.
|
||||||
|
|
||||||
|
READ TABLE mtr_select_list->* REFERENCE INTO lsr_line INDEX lv_line.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
IF lsr_line->selected = abap_true.
|
||||||
|
lsr_line->selected = abap_false.
|
||||||
|
ELSE.
|
||||||
|
lsr_line->selected = abap_true.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
mo_select_list_popup->refresh( ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user