定时自动刷新 alv 数据 call function 片段代码

DATA: RCL_REFRESH_TIMER  TYPE REF TO CL_GUI_TIMER,
      G_REFRESH_INTERVAL TYPE I,
      E_GRID             TYPE REF TO CL_GUI_ALV_GRID.




*---------------------------------------------------------------------*
*       CLASS lcl_autorefresh_timeout DEFINITION
*---------------------------------------------------------------------*
*       ID 11731                                                     *
*---------------------------------------------------------------------*

CLASS LCL_AUTOREFRESH_TIMEOUT DEFINITION.

  PUBLIC SECTION.
    CLASS-METHODS:
      HANDLE_AUTOREFRESH_TIMEOUT
        FOR EVENT FINISHED
        OF CL_GUI_TIMER
        IMPORTING SENDER.

ENDCLASS.                    "lcl_autorefresh_timeout DEFINITION
*&---------------------------------------------------------------------*
*&       Class (Implementation)  lcl_autorefresh_timeout
*&---------------------------------------------------------------------*
*        Text
*----------------------------------------------------------------------*
CLASS LCL_AUTOREFRESH_TIMEOUT IMPLEMENTATION.

  METHOD HANDLE_AUTOREFRESH_TIMEOUT.

*    DATA: S_RFSH          TYPE RNREFRESH,
*          L_RFSH_TIME(10) TYPE N.

    PERFORM FRM_GET_DATA.    " 需要作的事情

    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        E_GRID = E_GRID.

    CALL METHOD E_GRID->CHECK_CHANGED_DATA.
*      RS_SELFIELD-REFRESH = 'X'.

    CALL METHOD RCL_REFRESH_TIMER->RUN
      EXCEPTIONS
        OTHERS = 99.

  ENDMETHOD.                    "handle_autorefresh_timeout
ENDCLASS.               "lcl_autorefresh_timeout


*&---------------------------------------------------------------------*
*&      Form  SHOW_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SHOW_ALV .


  CREATE OBJECT RCL_REFRESH_TIMER
    EXCEPTIONS
      OTHERS = 99.

  G_REFRESH_INTERVAL = 600.
  RCL_REFRESH_TIMER->INTERVAL = G_REFRESH_INTERVAL.

  CALL METHOD RCL_REFRESH_TIMER->RUN
    EXCEPTIONS
      OTHERS = 99.

  SET HANDLER LCL_AUTOREFRESH_TIMEOUT=>HANDLE_AUTOREFRESH_TIMEOUT
                                         FOR RCL_REFRESH_TIMER.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = L_REPID
      I_CALLBACK_PF_STATUS_SET = 'FRM_ALVSTATUS'
      IS_LAYOUT                = L_LAYOUT
      I_CALLBACK_USER_COMMAND  = 'FRM_USER_COMMAND'
      IT_FIELDCAT              = G_FIELDCAT[]
      I_SAVE                   = 'A'
    TABLES
      T_OUTTAB                 = IT_TAB
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.
  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.

ENDFORM.                    " SHOW_ALV


-------------------------------

手动更新数据

-------------------------------

FORM FRM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                        RS_SELFIELD TYPE SLIS_SELFIELD.



**手动的刷新
  CASE SY-UCOMM.

    WHEN 'REFRESH'.

      PERFORM FRM_GET_DATA.

      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          E_GRID = E_GRID.

      CALL METHOD E_GRID->CHECK_CHANGED_DATA.
      RS_SELFIELD-REFRESH = 'X'.

  ENDCASE.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值