ALV GRID参考文档 ( 10 )

在实现部分我们把方法的实现转向到了form,这样可以比避免OO编程的一些限制。当然也可以直接在OO部分实现这些方法。
在本地类的编码里你只要实现你希望触发的方法就可以了。本文只是做一些简单的介绍,至于每个事件就不一一赘述了。
有了事件持有者类,你就可以实例化它,并把它的方法注册到ALV GRID的实例上,进而可以实现它的方法了。
DATA gr_event_handler TYPE REF TO lcl_event_handler.
*-- Creating an instance for event handler
CREATE OBJECT gr_event_handler.
*-- Registering handler methods to handle ALV GRID events
SET HANDLER gr_event_handler->handle_user_command FOR gr_alvgrid.
SET HANDLER gr_event_handler->handle_toolbar FOR gr_alvgrid.
SET HANDLER gr_event_handler->handle_menu_button FOR gr_alvgrid.
SET HANDLER gr_event_handler->handle_double_click FOR gr_alvgrid.
SET HANDLER gr_event_handler->handle_hotspot_click FOR gr_alvgrid.
SET HANDLER gr_event_handler->handle_button_click FOR gr_alvgrid.
SET HANDLER gr_event_handler->handle_before_user_command FOR gr_alvgrid.
SET HANDLER gr_event_handler->handle_context_menu_request FOR gr_alvgrid.
SET HANDLER gr_event_handler->handle_data_changed FOR gr_alvgrid.
SET HANDLER gr_event_handler->handle_data_changed_finished FOR gr_alvgrid.
HOTSPOT CLICKING
前面已经谈到,在建立FIELD CATALOG时如果把字段HOTSPOT设为X,那么这个字段就会接受单击事件。通过单击事件hotspot_click就会触发。这个事件有三个参数:参数e_row_id已经作废,另外连个参数是具有类型LVC_S_ROID的es_row_no,通过es_row_no-row_id来反映当前的行号,和类型为LVC_S_COL的e_column_id,通过e_column_id-fieldname来反映当前的字段名。通过这些参数你便可以知道单击是鼠标的位置。
FORM handle_hotspot_click USING i_row_id TYPE lvc_s_row
                              I_column_id TYPE lvc_s_col
                              Is_row_no TYPE lvc_s_roid.
 READ TABLE gt_list INDEX is_row_no-rowid.
 IF sy-subrc = 0 AND i_column_id-fieldname = ‘SEATSOCC’.
    CALL SCREEN 200.
 ENDIF.
ENDFORM.
DOUBLE CLICKING
实现双击事件和实现单击事件的过程差不多,你不需要在field catalog中设置任何信息就可实现双击事件。同单击事件一样,它也有三个参数,e_row(作废),e_column和es_rowno。
FORM handle_double_click USING i_row TYPE lvc_s_row
                              I_column TYPE lvc_s_col
                              Is_row_no TYPE lvc_s_rowid.
 READ TABLE gt_list INDEX is_row_no-row_id.
 IF sy-subrc = 0 AND i_column-fieldname = ‘SEATSOCC’.
    CALL SCREEN 200.
 ENDIF.
ENDFORM.

你可能感兴趣的:(command,table,文档,button,menu,methods)