method: RUN
The known advantage of CL_GUI_TIMER is that it does not occupy resources (like the asynchronous wait or set processes to halt).
Steps to follow:
1. Define a event handler method for event FINISHED of CL_GUI_TIMER.
CLASS LCL_RECEIVER DEFINITION.
PUBLIC SECTION.
METHOD: HANDLE_FINISHED FOR EVENT FINISHED OF CL_GUI_TIMER.
ENDCLASS.
2. Place the code of refresh logic and call the method - RUN to complete the logic(to reactivate the timer) in it's implementation.
CLASS LCL_RECEIVER IMPLEMENTATION.
METHOD HANDLE_FINISHED.
PERFORM REFRESH_ALV.
CALL METHOD TIMER->RUN.
ENDMETHOD.
ENDCLASS.
Note - Object TIMER is created type ref to CL_GUI_TIMER.
3. Remember to register the handler method created.
SET HANDLER RECEIVER->HANDLE_FINISHED FOR TIMER.
Note - Object RECEIVER is created type ref to the class contains related event handler method.
4. Set the interval attribute (in seconds).
TIMER-> INTERVAL
5. Activate the timer.
TIMER->RUN
Sample code as below:
*-----------------------------------------------** CLASS lcl_receiver DEFINITION
*-----------------------------------------------*
*
*-----------------------------------------------*
CLASS lcl_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_finished FOR EVENT finished OF cl_gui_timer.
ENDCLASS.
DATA:
i_data TYPE TABLE OF spfli,
o_grid TYPE REF TO cl_gui_alv_grid,
receiver TYPE REF TO lcl_receiver,
timer TYPE REF TO cl_gui_timer.
CONSTANTS:
c_interval TYPE i VALUE 3.
FIELD-SYMBOLS:
SELECT * FROM spfli INTO TABLE i_data.
CREATE OBJECT timer.
CREATE OBJECT receiver.
SET HANDLER receiver->handle_finished FOR timer.
timer->interval = c_interval.
CALL METHOD timer->run.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_structure_name = 'SPFLI'
TABLES
t_outtab = i_data.
*------------------------------------------------*
* CLASS lcl_receiver IMPLEMENTATION
*------------------------------------------------*
*
*------------------------------------------------*
CLASS lcl_receiver IMPLEMENTATION.
METHOD handle_finished.
PERFORM refresh_view.
CALL METHOD timer->run.
ENDMETHOD.
ENDCLASS.
*&-----------------------------------------------*
*& Form refresh_view
*&-----------------------------------------------*
* Refresh logic
*------------------------------------------------*
FORM refresh_view.
* to simulate data updates
LOOP AT i_data ASSIGNING
ENDLOOP.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = o_grid.
IF o_grid IS NOT INITIAL.
CALL METHOD o_grid->refresh_table_display.
ENDIF.
ENDFORM.
No comments:
Post a Comment