
CLASS lcl_main IMPLEMENTATION.
METHOD show_salv.
select_data( ).
cl_salv_table=>factory( EXPORTING r_container = cl_gui_container=>default_screen
IMPORTING r_salv_table = mo_table
CHANGING t_table = mt_data ).
mo_table->get_display_settings( )->set_list_header( 'SALV Edit Example' ).
set_columns( ).
set_function_keys( ).
" Add custom handler method to the table (implementation details follows in the next step)
SET HANDLER handle_added_function FOR mo_table->get_event( ).
mo_edit = mo_table->extended_grid_api( )->editable_restricted( ).
mo_table->display( ).
ENDMETHOD.
...
Interface | Main function | Method |
IF_SALV_GUI_OM_EDIT_UI_MODIFY | Function for changed data | GET_CELL_VALUE MODIFY_CELL_VALUE GET_UI_CHANGES |
IF_SALV_GUI_OM_EDIT_UI_PROTCOL | User interface related functions such as error display | IS_VISIBLE ADD_PROTOCOL_ENTRY DISPLAY_PROTOCOL FREE |
CLASS lcl_listener DEFINITION.
PUBLIC SECTION.
INTERFACES if_salv_gui_om_edit_strct_lstr.
ENDCLASS.
CLASS lcl_listener IMPLEMENTATION.
METHOD if_salv_gui_om_edit_strct_lstr~on_f4_request.
ENDMETHOD.
METHOD if_salv_gui_om_edit_strct_lstr~on_check_changed_data.
o_ui_data_modify->get_ui_changes( IMPORTING t_modified_cells = DATA(lt_modified) ).
DATA: seatsmax TYPE ysflight-seatsmax,
seatsocc TYPE ysflight-seatsocc.
LOOP AT lt_modified ASSIGNING FIELD-SYMBOL(<data>)
GROUP BY ( value = <data>-row_id )
INTO DATA(lt_group).
LOOP AT GROUP lt_group ASSIGNING FIELD-SYMBOL(<row_id>).
o_ui_data_modify->get_cell_value( EXPORTING row_id = <row_id>-row_id
fieldname = c_field-seatsmax
IMPORTING cell_value = seatsmax ).
o_ui_data_modify->get_cell_value( EXPORTING row_id = <row_id>-row_id
fieldname = c_field-seatsocc
IMPORTING cell_value = seatsocc ).
IF seatsmax < seatsocc.
o_ui_data_modify->modify_cell_value( row_id = <row_id>-row_id
fieldname = c_field-except
cell_value = light-red ).
DATA(error) = abap_true.
o_ui_edit_protocol->add_protocol_entry( msgid = '00'
msgty = 'E'
msgno = '001'
msgv1 = 'Line no. '
msgv2 = |{ <row_id>-row_id }|
msgv3 = ': exceeds the maximum'
fieldname = c_field-except ).
ELSE.
o_ui_data_modify->modify_cell_value( row_id = <row_id>-row_id
fieldname = c_field-except
cell_value = light-green ).
ENDIF.
ENDLOOP.
ENDLOOP.
IF error = abap_true .
o_ui_edit_protocol->add_protocol_entry( msgid = '00'
msgty = 'E'
msgno = '001'
msgv1 = 'Has Error'
msgv2 = '. Check red light(s)'
fieldname = c_field-except ).
ENDIF.
ENDMETHOD.
ENDCLASS.
mo_listener = NEW lcl_listener( ).
mo_edit->set_listener( mo_listener ).
mo_docking = NEW #( parent = cl_gui_container=>default_screen
side = cl_gui_docking_container=>dock_at_bottom
ratio = 20 ).
mo_edit->set_application_log_container( mo_docking ).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
3 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |