我用REUSE_ALV_GRID_DISPLAY_LVC的box_fname做的选择列怎么触发事件
时间: 2023-08-03 19:06:59 浏览: 199
使用REUSE_ALV_GRID_DISPLAY_LVC函数的box_fname属性可以在ALV表格中创建选择框列。如果您需要在用户勾选或取消勾选某一行时触发相应的事件,可以通过以下步骤实现:
1. 在LVC_S_FCAT结构体中,为选择框列添加一个fieldname。您可以为该列指定一个唯一的名称,例如'SELECTION'.
2. 在LVC_T_EVENT结构体中,为该选择列添加一个事件处理程序。可以使用程序名和事件名称来指定事件处理程序。例如,您可以使用'ON_CLICK'事件来处理用户单击选择框列中的某一行时触发的事件。
3. 在事件处理程序中,您可以使用参数P_EVENT来获取用户选择的行信息。这个参数是一个结构体类型的变量,包含了有关用户选择的行的信息。您可以使用其中的GRID_ROW和GRID_COLUMN属性来获取行和列的索引。
下面是一个简单的示例,演示如何在REUSE_ALV_GRID_DISPLAY_LVC中处理选择框列的单击事件:
```
DATA: lt_fieldcat TYPE lvc_t_fcat,
lt_events TYPE lvc_t_event.
* 添加选择框列
lt_fieldcat-fieldname = 'SELECTION'.
lt_fieldcat-seltext_m = 'Select'.
APPEND lt_fieldcat TO lt_fieldcat.
* 添加单击事件处理程序
CLEAR lt_events.
lt_events-eventid = cl_gui_alv_grid=>mc_evt_click_cell.
lt_events-form = 'ON_CLICK'.
APPEND lt_events TO lt_events.
* 显示ALV表格
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = lt_fieldcat
it_events = lt_events
i_save = 'A'
TABLES
t_outtab = lt_data.
* 事件处理程序
FORM on_click USING p_event TYPE slvc_fullscreen_event.
DATA: lv_row TYPE i.
lv_row = p_event-grid_row.
IF lv_row <> 0.
IF lt_data[ lv_row ]-selection = abap_true.
" 用户勾选了该行
ELSE.
" 用户取消勾选了该行
ENDIF.
ENDIF.
ENDFORM.
```
希望这个示例能够帮助您处理REUSE_ALV_GRID_DISPLAY_LVC函数的选择框列事件。如果您有其他问题或疑问,请随时提出。
阅读全文