1.ALV表格单击事件 会涉及到两个重要概念 这里引用到sap论坛的一篇文章中的一个字段slis_selfield 与 slis_t_event 大部分内容翻译自该文章
当我们使用alv显示内表,传统的那几个事件不会被触发,如果要在使用alv时候触发这事件 我们需要定义内表 type slis_t_event 且 itab应该通过 ‘REUSE_ALV_LIST_DISPLAY ’函数模块传递。
TOP OF PAGE,
AT LINE-SELECTION,
AT USER-COMMAND
使用事件如下
w_events-name = 'TOP_OF_PAGE'.
w_events-form = 'TOP_OF_PAGE'.
append w_events to i_events.
clear w_events.
w_events-name = 'USER_COMMAND' .
w_events-form = 'USER_COMMAND' .
append w_events to i_events.
clear w_events.
w_events-name = 'PF_STATUS_SET' .
w_events-form = 'PF_STATUS_SET' .
append w_events to i_events.
clear w_events.
2.当我们处理 ‘USER_COMMAND’ 事件 slis_selfield 表将可见 ,该表内包好的信息当我们双击 或者是 单击hotpos 时会赋值
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
form user_command using ucomm like sy-ucomm
selfield type slis_selfield.
case ucomm .
when '&IC1'. “This is for double click on ALV output.
skip 10.
position 10.
write 'Double click was executed'.
endcase.
endform. "user_command
3.slis_selfield 表结构 SLIS_SELFIELD: 大部分信息是光标说在的行所包含的信息.
types: begin of slis_selfield,
tabname type slis_tabname,
tabindex like sy-tabix,
sumindex like sy-tabix,
endsum(1) type c,
sel_tab_field type slis_sel_tab_field,
value type slis_entry,
before_action(1) type c,
after_action(1) type c,
refresh(1) type c,
col_stable(1) type c,
row_stable(1) type c,
* colwidth_optimize(1) type c,
exit(1) type c,
fieldname type slis_fieldname,
grouplevel type i,
collect_from type i,
collect_to type i,
end of slis_selfield.
SLIS_T_EVENT: This is to set the events (for display the header data).