欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sap abap alv事件

程序员文章站 2022-05-18 07:55:43
...

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 都是差不多。等下次有空补齐文档

相关标签: sap abap