ALV auto refresh with timer

TABLES spfli.
TYPEStr_carrid TYPE RANGE OF spfli-carrid .

*--------------------------------------------------------------------*
* Data
*--------------------------------------------------------------------*

*----------------------------------------------------------------------*
*       CLASS cl_spfli DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_spfli DEFINITION .

  PUBLIC SECTION .
*   1. Define reference of class CL_GUI_TIMER.
    DATA ob_timer  TYPE REF TO cl_gui_timer .
    METHODS set_filter IMPORTING filter TYPE tr_carrid ,
      display_report ,
*   2. Define event handling method for event FINISHED of class CL_GUI_TIMER.
      timer_event FOR EVENT finished OF cl_gui_timer.

  PRIVATE SECTION .
    DATA r_carrid TYPE tr_carrid,
           i_spfli  TYPE TABLE OF spfli.

    DATA ob_grid TYPE REF TO cl_gui_alv_grid .

    METHODS get_data .
ENDCLASS .                    "cl_spfli DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_spfli IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_spfli IMPLEMENTATION .

  METHOD set_filter .
    me->r_carrid filter .
  ENDMETHOD .                    "set_filter

  METHOD get_data .
    SELECT *
      INTO TABLE i_spfli
      FROM spfli
     WHERE carrid IN r_carrid .
  ENDMETHOD .                    "get_data

  METHOD timer_event .

    me->get_data.

    IF me->ob_grid IS INITIAL .
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          e_grid ob_grid.
    ENDIF.

    CALL METHOD ob_grid->check_changed_data .

    MESSAGE sy-uzeit TYPE 'S' .

*   7. Call RUN method of CL_GUI_TIMER again to activate timer
    me->ob_timer->run.

  ENDMETHOD .                    "timer_event

  METHOD display_report .

    me->get_data.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_structure_name 'SPFLI'
      TABLES
        t_outtab         me->i_spfli.
  ENDMETHOD .                    "display_report


ENDCLASS .                    "cl_spfli IMPLEMENTATION

DATA ob_spfli TYPE REF TO cl_spfli,
       ob_timer TYPE REF TO cl_gui_timer.

*--------------------------------------------------------------------*
* Selection Screen
*--------------------------------------------------------------------*
SELECT-OPTIONS s_carrid FOR spfli-carrid .
PARAMETERS p_refres TYPE char01 AS CHECKBOX,
             p_int    TYPE i.

*--------------------------------------------------------------------*
* Start of Selection
*--------------------------------------------------------------------*
START-OF-SELECTION .

* Create main object
  CREATE OBJECT ob_spfli .
  ob_spfli->set_filters_carrid[] .

* If Auto refresh required then initialise timer object
* Bind event listner method to object
* Set interval and call method run
  IF p_refres IS NOT INITIAL .
*   3. Initialise object CL_GUI_TIMER.
    CREATE OBJECT ob_spfli->ob_timer .

*   4. Bind event handling method to object of CL_GUI_TIMER
    SET HANDLER ob_spfli->timer_event FOR ob_spfli->ob_timer .

*   5. Set interval for timer
    ob_spfli->ob_timer->interval p_int .

*   6. Call method RUN of CL_GUI_TIMER.
    ob_spfli->ob_timer->run.
  ENDIF.

* Display ALV report
  ob_spfli->display_report.

Comments