美文网首页
alv-event相关事件

alv-event相关事件

作者: Mmm_余安 | 来源:发表于2020-07-22 14:01 被阅读0次

回车、双击、数据更改、button

DATA :  gt_events       TYPE slis_t_event.
DATA  ls_events  TYPE slis_alv_event .
"选择屏幕之后
CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
"button
    METHODS:
      handle_button_click
                  FOR EVENT button_click OF cl_gui_alv_grid
        IMPORTING es_col_id es_row_no.
"data change
  METHODS:
      handle_data_changed
                  FOR EVENT data_changed OF cl_gui_alv_grid
        IMPORTING er_data_changed.
"data change
  METHODS HANDLE_MODIFY
                  FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID
      IMPORTING E_MODIFIED ET_GOOD_CELLS.
"回车
    METHODS:
      handle_enter
                  FOR EVENT data_changed_finished OF cl_gui_alv_grid
        IMPORTING e_modified et_good_cells.
"双击
    METHODS:
      handle_double_click
                  FOR EVENT double_click OF cl_gui_alv_grid
        IMPORTING e_row
                  e_column
                  es_row_no.
ENDCLASS.
DATA gt_event_receiver TYPE REF TO lcl_event_receiver .

CLASS lcl_event_receiver IMPLEMENTATION.
  METHOD handle_button_click.
    PERFORM button_click USING es_col_id es_row_no.
  ENDMETHOD.                    
  METHOD handle_data_changed.
    PERFORM frm_handle_data_changed CHANGING er_data_changed.
  ENDMETHOD.                    "HANDLE_CHANGED_DATA
  METHOD HANDLE_MODIFY.

    LOOP AT   IT_TAB INTO WA_TAB .
     *要处理的逻辑*
      MODIFY IT_TAB FROM WA_TAB.

    ENDLOOP.

    IF E_MODIFIED = 'X'.
      STBL-ROW = 'X'." 基于行的稳定刷新
      STBL-COL = 'X'." 基于列稳定刷新
      CALL METHOD REF_GRID->REFRESH_TABLE_DISPLAY
        EXPORTING
          IS_STABLE = STBL.
    ENDIF.
  ENDMETHOD.
*--DATA_CHANGED_FINISHED(ENTER)
  METHOD handle_enter.
    PERFORM frm_handle_enter.."直接写代码
  ENDMETHOD.
*--Double Click
  METHOD handle_double_click.
    PERFORM frm_display_message."直接写代码
  ENDMETHOD.

ENDCLASS.


  ls_events-name = 'CALLER_EXIT'.   "slis_ev_caller_exit_at_start事件
  ls_events-form = 'DATA_CHANGE'.
  APPEND ls_events TO gt_events.

FORM data_change USING e_grid TYPE slis_data_caller_exit .

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = cl_ref_grid.

* Set data changed evententer
  CALL METHOD cl_ref_grid->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_modified
    EXCEPTIONS
      error      = 1
      OTHERS     = 2.

* Set enter event
  CALL METHOD cl_ref_grid->register_edit_event
    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_button_click FOR cl_ref_grid.
  SET HANDLER   gt_event_receiver->handle_data_changed FOR cl_ref_grid."光标移动触发
  SET HANDLER   gt_event_receiver->HANDLE_MODIFY FOR cl_ref_grid.
  SET HANDLER   gt_event_receiver->handle_enter        FOR cl_ref_grid.
  SET HANDLER   gt_event_receiver->handle_double_click        FOR cl_ref_grid.
ENDFORM.                    "FM_BUTTON

FORM button_click  USING    p_col
                            p_row TYPE lvc_s_roid.."button
  CLEAR gt_mess1.
  READ TABLE gt_tab INTO gs_tab INDEX p_row-row_id.
  IF sy-subrc = 0.
   
  ENDIF.
ENDFORM.

FORM frm_handle_data_changed CHANGING er_data_changed TYPE REF TO cl_alv_changed_data_protocol..
  FIELD-SYMBOLS: <f_so> LIKE LINE OF gt_so.
  DATA: ls_mod_cell TYPE lvc_s_modi.

  IF er_data_changed->mt_mod_cells IS NOT INITIAL.

    LOOP AT er_data_changed->mt_mod_cells INTO ls_mod_cell.
      CASE ls_mod_cell-fieldname .
        WHEN 'OLFMNG'. " 根据原因分析类型的变化提取对应的描述
          READ TABLE gt_so INTO gs_so INDEX ls_mod_cell-row_id .
          IF sy-subrc = 0.
            LOOP AT gt_so ASSIGNING <f_so> WHERE vbeln = gs_so-vbeln   AND uepos = gs_so-posnr.
              <f_so>-olfmng = ls_mod_cell-value.“更改过的值
            ENDLOOP.
          ENDIF.
      ENDCASE.
    ENDLOOP.


    CALL METHOD cl_ref_grid->refresh_table_display
      EXPORTING
        i_soft_refresh = 'X'.
  ENDIF.
ENDFORM.


相关文章

  • alv-event相关事件

    回车、双击、数据更改、button

  • 事件相关

    1、点击页面时,过滤某些元素的事件

  • 事件相关

    1.for循环与事件的配合 初学者容易遇到的坑,将事件嵌入for循环中,实际执行时,确触发不了事件。原示例如下: ...

  • 事件相关

    如何批量操作 css 如何获取 DOM 计算后的样式 使用getComputedStyle获取元素计算后的样式 实...

  • 事件相关

    事件相关功能函数,使用直接调取即可;事件绑定 事件解绑 获取事件对象 获取事件目标元素 阻止默认事件---->注意...

  • “滴滴事件”相关

    滴滴成长历程 •2012年6月,程维创办北京小桔科技有限公司,专注开发滴滴打车。开发初期,遭遇技术难题。同年年底,...

  • UIButton 相关事件

    ** UIControlEventTouchDown **单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时...

  • transition 相关事件

    事件介绍 transition 相关事件有 4 个: transitionend: 过渡结束后触发 transit...

  • js实现拖拽事件

    拖放事件 拖放是由拖动与释放两部分组成,拖放事件也分为被拖动元素的相关事件,和容器的相关事件。 被拖动元素的相关事...

  • Android事件管理源码剖析

    序言 最近在看Android触摸屏事件相关的源码,为了对整个事件体系的了解,所以对事件相关,从事件的产生,写入设备...

网友评论

      本文标题:alv-event相关事件

      本文链接:https://www.haomeiwen.com/subject/zewzkktx.html