关于 ABAP EVENT 事件

既然面试问到了,那么就正好复习一下,
这里的EVENT有两种,先说我比较熟悉的那种,就是BAPI 'REUSE_ALV_GRID_DISPLAY_LVC’里的 it_events 和 it_event_exit

以下为代码示例

  data:lt_event_exit type slis_t_event_exit,
       ls_event_exit type slis_event_exit.

  ls_event_exit-ucomm = '&SAL'.
  ls_event_exit-after = 'X'.
  append ls_event_exit to lt_event_exit.
  ls_event_exit-ucomm = '&ALL'.
  ls_event_exit-after = 'X'.
  append ls_event_exit to lt_event_exit.
  perform frm_build_events changing it_events.

  call function 'REUSE_ALV_GRID_DISPLAY_LVC'
    exporting
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'SET_PF_STATUS'
      i_callback_user_command  = 'USER_COMMAND'
      is_layout_lvc            = gt_layout
      it_fieldcat_lvc          = gt_fieldcat
      i_save                   = 'X'
      it_events                = it_events[]
      it_event_exit            = lt_event_exit
    tables
      t_outtab                 = gt_out
    exceptions
      program_error            = 1
      others                   = 2.
  if sy-subrc <> 0.
//Implement suitable error handling here
  endif.

下面是网上手机的一些关于ALV的 IT_EVENT事件的一些说明
原文链接:https://blog.csdn.net/Leo520liang/article/details/138300597
1.事件类型,
ALV框架提供了多种标准事件,例如 ,TOP_OF_PAGE(页头信息)、END_OF_PAGE(页尾信息)、USER_COMMAND(用户按钮)这些事件允许开发者在特定的时刻执行自定义的逻辑代码,例如当用户执行某个命令时或者页面状态发生变化时。
2.注册事件
可以通过向内表it_events 添加事件来注册想要的事件,每个事件由一个数据类型为slis_alv_event的结构体表示,它包含了事件的名称和处理该事件的表单(Form)的名称
3.事件处理
一旦事件发生,系统会调用阈值关联的表单。表单是一个ABAP子程序。它接收特定的参数,允许开发者在其中编写处理事件的代码。
4.使用场景
通过使用事件,可以实现对ALV显示的精细控制,如根据用户的选择改变屏幕元素的状态,或者在用户执行某些操作时触发特定的业务逻辑。

DATA: gt_events TYPE slis_t_event.     "ALV 事件
…
*屏幕开始事件
START-OF-SELECTION.
…
  PERFORM f_get_event.
  PERFORM f_alvshow.
…
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_events          = gt_events
…
FORM f_get_event.
  DATA ls_formname TYPE slis_formname VALUE 'F_TOP_OF_PAGE'.
  DATA ls_events   TYPE LINE OF slis_t_event.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     = 0
    IMPORTING
      et_events       = gt_events
    EXCEPTIONS
      list_type_wrong = 1
      OTHERS          = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
* 修改TOP_OF_PAGE以加入表头,设置处理子程序为'F_TOP_OF_PAGE'
  CLEAR gv_index.
  CLEAR ls_events.
  READ TABLE gt_events INTO ls_events WITH KEY name = slis_ev_top_of_page.
  IF sy-subrc = 0.
    gv_index = sy-tabix.
    MOVE ls_formname TO ls_events-form.
    MODIFY gt_events FROM ls_events INDEX gv_index.
  ELSE.
    ls_events-form = ls_formname.
    ls_events-name = slis_ev_top_of_page.
    APPEND ls_events TO gt_events.
  ENDIF.
* 也可以直接添加
  ls_events-name = 'CALLER_EXIT'.   "自定义事件
  ls_events-form = 'F_BUTTON'.
  APPEND ls_events TO gt_events.
ENDFORM.                    
 
FORM f_button USING e_grid TYPE slis_data_caller_exit.
 …
ENDFORM.  
 
FORM f_top_of_page.
 …
ENDFORM.  

此处可以设置页头信息文字。
从中我们主义看

相关推荐

  1. React——关于事件处理

    2024-07-19 13:14:03       40 阅读
  2. 关于Redis的事务

    2024-07-19 13:14:03       52 阅读
  3. vue全屏事件关闭全屏事件

    2024-07-19 13:14:03       55 阅读
  4. 关于Spring @Transactional事务传播机制详解

    2024-07-19 13:14:03       43 阅读
  5. 关于react的注意事项和问题

    2024-07-19 13:14:03       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 13:14:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 13:14:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 13:14:03       58 阅读
  4. Python语言-面向对象

    2024-07-19 13:14:03       69 阅读

热门阅读

  1. android mm m mmm 区别

    2024-07-19 13:14:03       19 阅读
  2. @JsonProperty 踩坑

    2024-07-19 13:14:03       20 阅读
  3. MMI(Multi Media Interface,多媒体交互系统)

    2024-07-19 13:14:03       20 阅读
  4. 逗号表达式还原

    2024-07-19 13:14:03       19 阅读
  5. 汇编 -- ARM汇编之 .inst指令与udf指令使用

    2024-07-19 13:14:03       19 阅读
  6. 新能源汽车缩写含义

    2024-07-19 13:14:03       17 阅读