Beruflich Dokumente
Kultur Dokumente
*&---------------------------------------------------------------------*
*& Report ZTEST_ALV_EDITABLE
*&
*&---------------------------------------------------------------------*
REPORT ztest_alv_editable.
*----------------------------------------------------------------------*
*
CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
on_user_command
FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function,
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed sender.
ENDCLASS.
"lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*
CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
DATA: gt_tab TYPE REF TO data,
"lcl_report DEFINITION
"constructor
METHOD show_alv.
DATA: lr_func TYPE REF TO cl_salv_functions_list,
lr_events
TYPE REF TO cl_salv_events_table,
lr_handler TYPE REF TO lcl_event_handler.
FIELD-SYMBOLS: <lt_tab> TYPE ANY TABLE.
ASSIGN gt_tab->* TO <lt_tab>.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_alv
CHANGING
t_table
= <lt_tab> ).
CATCH cx_salv_msg.
ENDTRY.
lr_func = gr_alv->get_functions( ).
lr_func->set_all( 'X' ).
lr_events = gr_alv->get_event( ).
CREATE OBJECT lr_handler.
SET HANDLER lr_handler->on_user_command FOR lr_events.
gr_alv->display( ).
ENDMETHOD.
"show_alv
ENDCLASS.
"lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
*
CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
METHOD on_user_command.
DATA: lr_grid
lv_layout
lt_fieldcat
lr_grid_events
lv_fieldname
TYPE
TYPE
TYPE
TYPE
TYPE
REF TO cl_gui_alv_grid,
lvc_s_layo,
lvc_t_fcat,
REF TO lcl_event_handler,
lvc_fname.
IF <ls_fieldcat>-edit = 'X'.
lv_layout-no_toolbar = abap_true.
<ls_fieldcat>-edit = abap_false.
ELSE.
lv_layout-no_toolbar = abap_false.
<ls_fieldcat>-edit = abap_true.
ENDIF.
lr_grid->set_frontend_fieldcatalog(
EXPORTING it_fieldcatalog = lt_fieldcat ).
ELSE.
IF lv_layout-edit = abap_true.
CLEAR lv_layout-edit.
ELSE.
lv_layout-edit = abap_true.
ENDIF.
ENDIF.
CALL METHOD lr_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CREATE OBJECT lr_grid_events.
SET HANDLER lr_grid_events->handle_data_changed FOR lr_grid.
CALL METHOD lr_grid->set_frontend_layout
EXPORTING
is_layout = lv_layout.
CALL METHOD lr_grid->refresh_table_display( ).
ENDIF.
ENDIF.
ENDMETHOD.
"on_user_command