ALV回车事件

作者: Mmm_余安 | 来源:发表于2017-11-16 14:12 被阅读49次

    ALV不能直接在GUI 状态里响应回车事件,需要自己定义,写代码。

    REUSE_ALV_GRID_DISPLAY_LVC.png

    data定义:

    DATA:GT_EVENT TYPE SLIS_T_EVENT WITH HEADER LINE.
    DATA STBL TYPE LVC_S_STBL.
    DATA: REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
    

    选择屏幕前写:

    CLASS LCL_EVENT_RECEIVER DEFINITION.
      PUBLIC SECTION.
        METHODS HANDLE_MODIFY
                      FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID
          IMPORTING E_MODIFIED ET_GOOD_CELLS.
    ENDCLASS.
    DATA GT_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER .
    

    定义一个方法

    CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
      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.
    ENDCLASS.
    

    在调ALV展示之前写一个单独的perform,类似layout 的 perform中写:

      DATA: I_GRID_SETTINGS TYPE LVC_S_GLAY.
      GT_EVENT-NAME = 'CALLER_EXIT'.
      GT_EVENT-FORM = 'FM_BUTTON'.
      APPEND GT_EVENT.
    
    *&---------------------------------------------------------------------*
    *&    FRM_BUTTON
    *&---------------------------------------------------------------------*
    *      ALV输出
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM FM_BUTTON USING E_GRID TYPE SLIS_DATA_CALLER_EXIT.
    
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          E_GRID = REF_GRID.
    * 设置enter事件
      CALL METHOD 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_MODIFY FOR REF_GRID.
    
    
    ENDFORM.
    

    相关文章

      网友评论

      • Vincent_7:响应回车事件,什么意思,在alv中回车,一般什么时候用到
        Mmm_余安:@Manking 写EVENT事件了吗
        Vincent_7:最近有个开发是这样的。但是发现,当用户可以输入的时候,用户忘记回车了。直接点击运行或者过账后,值没有刷新,还是旧值。这个可以在程序中设置吗
        Mmm_余安:@Manking ALV展示之后一般实现某个功能都是通过GUI 状态的按钮,但有时候客户会要求不想用按钮,觉得更敲回车方便。这是一个个性化需求。举个例子:当ALV中有一个字段A是前几个字段求和,但有一个字段B是可输入的,所以B的值会影响A的值,当B改变就要重新进行计算。就需要写回车(按钮)事件处理!

      本文标题:ALV回车事件

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