OO ALV常用功能完整简例(热键单击,双击,帮助,编辑,自定义工具条等)
我感兴趣的双击事件的要点如下:
1.定义类实现类
在最开头要声明一下定义好的类
CLASS ALV_EVENT_RECEIVER DEFINITION DEFERRED.
这样以后,后面才能依据这个类生成别的类或者实例
CLASS alv_event_receiver DEFINITION.
"双击时触发
METHODS handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row
e_column
es_row_no.
CLASS alv_event_receiver IMPLEMENTATION. 类
METHOD handle_double_click.
"获取单击字段
DATA: l_msg TYPE string,
l_wa_click LIKE LINE OF g_it_show,
l_row TYPE string,
l_field TYPE string.
l_field = e_column-fieldname. "选中行
l_row = es_row_no-row_id. "选中的字段
READ TABLE g_it_show INTO l_wa_click INDEX es_row_no-row_id .
IF sy-subrc = 0.
"得到所单击值
CONCATENATE '您选中第' l_row '行,字段为:' l_field ',选中值为:' INTO l_msg.
CASE l_field.
WHEN 'CONNID'.
CONCATENATE l_msg l_wa_click-connid INTO l_msg.
MESSAGE l_msg TYPE 'I'.
WHEN 'FLDATE'.
CONCATENATE l_msg l_wa_click-fldate INTO l_msg.
MESSAGE l_msg TYPE 'I'.
ENDCASE.
ENDIF.
ENDMETHOD. "handle_DOUBLE_CLICK
2.数据从透明表读到内表g_it_show中
SELECT carrid
connid
fldate
price
FROM sflight INTO CORRESPONDING FIELDS OF TABLE g_it_show. 内表
3.显示内表数据
CALL METHOD g_alv_grid->set_table_for_first_display ALV
EXPORTING
is_layout = ls_layout
is_variant = l_disvariant
it_toolbar_excluding = gt_tools
CHANGING
it_fieldcatalog = it_fieldcatalog[]
it_outtab = g_it_show[]. 内表
4.EVENT事件绑定
DATA : g_event TYPE REF TO alv_event_receiver. 类
CREATE OBJECT g_event.
SET HANDLER g_event->handle_double_click FOR g_alv_grid. ALV