3.添加自定义的按钮和响应命令
我们在ALV的工具条上增加一些按钮来增加我们自定义的功能,当然也可以在GUI状态中增加,2种的处理方式是不一样的.
我们通过toolbar事件来增加按钮,然后通过user_command事件来实现我们自定义的功能.
在TOOLBAR事件里,我们把自定义的按钮加到参数"e_object"的表属性"mt_toolbar"中可以了.下面是一段示例代码:
FORM. handle_toolbar USING i_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO i_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 'PER' TO ls_toolbar-function.
MOVE icon_display_text TO ls_toolbar-icon.
MOVE 'Passenger Info'(201) TO ls_toolbar-quickinfo.
MOVE 'Passenger Info'(201) TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO i_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 'EXCH' TO ls_toolbar-function.
MOVE 2 TO ls_toolbar-butn_type.
MOVE icon_calculation TO ls_toolbar-icon.
MOVE 'Payment in other Curencies'(202) TO ls_toolbar-quickinfo.
MOVE ' ' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disapbled.
APPEND ls_toolbar TO i_object->mt_toolbar.
ENDFORM.
增加自定义按钮的结构如下:
Field
|
Description
|
FUNCTION
|
功能代码
|
BUTN_TYPE
|
按钮类型
可用的按钮类型:
0 Button(normal)
1 Menu and default button
2 Menu
3 分割符
4 Radio button
5 Checkbox
6 Menu entry
|
ICON
|
按钮图标(可选)
|
TEXT
|
按钮文本(可选)
|
QUICKINFO
|
按钮的悬停文本(可选)
|
DISABLED
|
灰化
|
在上面的代码例子里,我们增加了一个常规的按钮和一个含有菜单的按钮.通过把按钮的类型设置为1或者2,我们可以增加一个含有菜单的按钮,在事件menu_button还可以实现子菜单:
FORM. handle_menu_button USING i_object TYPE REF TO cl_ctmenu
I_ucomm TYPE syucomm..
CASE i_ucomm.
WHEN ‘EXCH’.
CALL METHOD i_object->add_function
EXPORTING
Fcode = ‘EU’
Text = ‘Euro’.
CALL METHOD i_object->add_function
EXPORTING
Fcode = ‘TRL’
Text = ‘Turkish Lira’.
ENDCASE.
ENDFORM.
为了实现这些自定义的按钮的功能,我们使用USER_COMMAND事件来处理.
FORM. handle_user_command USING i_ucomm TYPE syucomm.
DATA lt_selected_rows TYPE lvc_t_rowid.
DATA ls_selected_row TYPE lvc_s_roid.
CALL METHOD gr_alvgrid->get_selected_rows
IMPORTING
Et_row_no = lt_selected_rows.
READ TABLE lt_selected_rows INTO ls_selected_row INDEX 1.
If sy-subrc ne 0.
MESSAGE S000(su) WITH 'Select a row'(203).
ENDIF.
CASE i_ucomm.
WHEN 'CAR'.
READ TABLE gt_list INDEX ls_selected_row-row_id.
IF sy-subrc = 0.
CALL FUNCTION 'ZDISPLAY_CARRIER_INFO'
EXPORTING carrid = gt_list-carrid
EXCEPTIONS carrier_not_found = 1
Oters = 2.
ENDIF.
WHEN 'EU'.
READ TABLE gt_list INDEX ls_selected_row-row_id.
IF sy-subrc = 0.
CALL FUNCTION 'ZPOPUP_CONV_CURR_ADD_DISPLAY'
EXPORTING monun = 'EU'
Quant = gt_list-paymentsum.
ENDIF.
ENDCASE.
ENDFORM.
我们通过方法get_selected_rows来获取选择的行.功能EXCH有2个子功能,所以我们不需要实现它.为了能显示ALV附加的一些功能,可以在ALV实例创建的时候调用set_toolbar_interactive方法.
CALL METHOD gr_alv_grid->set_toolbar_interactive.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17204926/viewspace-614960/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17204926/viewspace-614960/