ABAP ALV 回车事件

 定义 事件 event

DATA:stbl   TYPE lvc_s_stbl,
     g_grid TYPE REF TO cl_gui_alv_grid,

     it_event      TYPE slis_t_event. "不能有表头,否则会RUNTIME ERROR

*----------------------------------------------------------------------*
*       CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*       类定义
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION."类定义
  PUBLIC SECTION.
    METHODS:
      handle_data_changed FOR EVENT data_changed_finished OF cl_gui_alv_grid
        IMPORTING e_modified et_good_cells.
ENDCLASS. "lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*       CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
*       类实现
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION."类实现
  METHOD handle_data_changed.
    PERFORM handle_data_changed ."具体处理数据事件
    IF e_modified = 'X'.
      stbl-row = 'X'." 基于行的稳定刷新
      stbl-col = 'X'." 基于列稳定刷新
      CALL METHOD g_grid->refresh_table_display
        EXPORTING
          is_stable = stbl.
    ENDIF.
  ENDMETHOD.
ENDCLASS. "lcl_event_handler IMPLEMENTATION

*&---------------------------------------------------------------------*
*&      Form  register_events
*&---------------------------------------------------------------------*
*       注册回车事件
*----------------------------------------------------------------------
FORM frm_register_events USING e_grid TYPE slis_data_caller_exit.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = g_grid.
*
  DATA: gr_event_handler TYPE REF TO lcl_event_handler.
  CREATE OBJECT gr_event_handler.
*
  CALL METHOD g_grid->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_enter
    EXCEPTIONS
      error      = 1
      OTHERS     = 2.

  SET HANDLER gr_event_handler->handle_data_changed FOR g_grid.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM. "register_events
FORM handle_data_changed .  "  回车后操作
 ……………………
ENDFORM.

*&BEGIN------------------------------------------------------------------*
*& 增加ALV事件
*&创建时间:15.07.2024 10:10:33
*&创建人:
*&END--------------------------------------------------------------------*
FORM frm_set_event.
  DATA ls_event TYPE slis_alv_event.
  ls_event-name = 'CALLER_EXIT'.
  ls_event-form = 'FRM_REGISTER_EVENTS'.
  APPEND ls_event TO it_event.
ENDFORM.

 ALV展示

FORM frm_display_alv.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      is_layout                = iw_layout
      it_fieldcat              = it_fieldcat
      i_callback_pf_status_set = 'ALV_PF_STATUS'
      i_callback_user_command  = 'ALV_USER_COMMAND'
      it_sort                  = i_sort[]
      it_events                = it_event
    TABLES
      t_outtab                 = gt_alv[]
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
ENDFORM.

调用实现

PERFORM frm_set_event.

PERFORM frm_display_alv.

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值