代码改变世界

ABAP ALV 表格 单击事件

2012-02-18 23:44  小sa  阅读(4121)  评论(0编辑  收藏  举报

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).