sap abap alv事件

alv 事件的创建使用

在实际开发中经常要用到 事件 event,在各个alv中的具体使用如下

REUSE_ALV_GRID_DISPLAY_LVC

显示代码

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
                  EXPORTING
                    i_callback_program                 = sy-repid          " 当前程序
                    i_callback_pf_status_set           = 'F_PF_STATUS'
                    i_callback_user_command            = 'F_USER_COMMAND'
                    is_layout_lvc                      = lx_layout
                    it_fieldcat_lvc                    = gt_fieldcatalog
*                    IT_EXCLUDING                      =
*                    IT_SPECIAL_GROUPS_LVC             =
*                    IT_SORT_LVC                       =
*                    it_filter_lvc                     = gt_filt
*                    IT_HYPERLINK                      =
*                    IS_SEL_HIDE                       =
*                    I_DEFAULT                         = 'X'
                    i_save                             = 'A'
                    it_events                         = gt_events
                   TABLES
                    t_outtab                          = lt_download.

创建事件

data: gt_events TYPE slis_t_event,"事件
      gs_events LIKE LINE OF gt_events.
      
		gs_events-name = 'CALLER_EXIT'.
  		gs_events-form = 'CALLER_EXIT'.
		APPEND gs_events TO gt_events.

实现事件 (form 名称与前面的 gs_events-form 一致)

FORM caller_exit USING e_grid TYPE slis_data_caller_exit.
  DATA lv_ucomm TYPE sy-ucomm.

*  lv_ucomm = 'SAVE'.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = o_grid.

  CALL METHOD o_grid->register_edit_event     "注册GRID事件 修改单元格后事件
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_enter"事件回车触发
    EXCEPTIONS
      error      = 1
      OTHERS     = 2.


  CREATE OBJECT gt_event_receiver.
  SET HANDLER gt_event_receiver->handle_modify FOR o_grid.
*  SET HANDLER gt_event_receiver->handle_modify FOR o_grid.

ENDFORM.      

实现注册类

CLASS lcl_event_receiver DEFINITION. "定义类 捕捉各种事件
  PUBLIC SECTION.
    METHODS handle_modify                   "数据改变
    FOR EVENT data_changed OF cl_gui_alv_grid
    IMPORTING er_data_changed.
ENDCLASS.                    "LCL_EVENT_RECEIVER DEFINITION

CLASS lcl_event_receiver IMPLEMENTATION. "实现类 处理事件
* 界面修改事件
  METHOD handle_modify .
    PERFORM frm_data_changed USING er_data_changed.

  ENDMETHOD.                    "HANDLE_MODIFY
ENDCLASS.   

但是在现实中客户是没有那么按规则的行事的。他们根本不按回车键,一般都点击保存,或者ctrl + s 所以你还要写监听code 当按保存时的实现方式。i_callback_user_command = 'F_USER_COMMAND' 这个就是可以获取用户的动作 实现的form 如下代码

FORM f_user_command USING      p_ucomm        TYPE sy-ucomm
                               p_rs_selfield  TYPEs lis_selfield.
    case p_ucomm.
       when 'SAVE' ” 当保存时的动作
       	  “ 会触发数据更改 ,所以我就直接用代码 实现回车要做的事情
          CALL METHOD o_grid->check_changed_data.
       when '&IC1'” 一般双击操作  call transaction 用来跳转
       
       others.
ENDFORM.

oo alv 和salv 都是差不多。等下次有空补齐文档

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值