Timer ​
Fire a backend event after a delay with the start_timer frontend event. Handy for dashboards, status monitors, or any case that needs a delayed or periodic update without user interaction.
Pass the event name to fire and the delay in milliseconds:
client->follow_up_action(
val = client->cs_event-start_timer
t_arg = VALUE #( ( `REFRESH` ) ( `2000` ) ) ).
After 2 seconds the browser triggers a backend roundtrip with the event name REFRESH, which you handle via check_on_event like any other event.
Periodic Refresh ​
To get a repeating timer, simply re-arm it at the end of each handler:
CLASS z2ui5_cl_sample_timer DEFINITION PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
DATA counter TYPE i.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_sample_timer IMPLEMENTATION.
METHOD z2ui5_if_app~main.
CASE abap_true.
WHEN client->check_on_init( ).
DATA(view) = z2ui5_cl_ui5_view_builder=>factory(
)->ele( n = `View` ns = `mvc`
)->a( n = `xmlns` v = `sap.m`
)->a( n = `xmlns:mvc` v = `sap.ui.core.mvc`
)->ele( `Page`
)->a( n = `title` v = `abap2UI5 - Timer`
)->tag( `Text`
)->a( n = `text` v = client->_bind( counter ) ).
client->view_display( view->stringify( ) ).
client->follow_up_action( val = client->cs_event-start_timer
t_arg = VALUE #( ( `TICK` ) ( `2000` ) ) ).
WHEN client->check_on_event( `TICK` ).
counter = counter + 1.
client->follow_up_action( val = client->cs_event-start_timer
t_arg = VALUE #( ( `TICK` ) ( `2000` ) ) ).
ENDCASE.
ENDMETHOD.
ENDCLASS.
The counter increments every 2 seconds. To stop the loop, simply don't re-arm the timer in the handler.
One-Shot Timer ​
A single start_timer call fires once — perfect for a deferred action like opening a new tab after a short delay:
WHEN client->check_on_event( `BUTTON_OPEN_NEW_TAB` ).
client->follow_up_action( val = client->cs_event-start_timer
t_arg = VALUE #( ( `FIRE_OPEN_TAB` ) ( `500` ) ) ).
WHEN client->check_on_event( `FIRE_OPEN_TAB` ).
client->follow_up_action( val = client->cs_event-open_new_tab
t_arg = VALUE #( ( `https://www.google.com/search?q=abap2ui5` ) ) ).
Replacing a Pending Timer ​
There is one timer at a time. Calling start_timer again before the previous one fires replaces it — useful for a debounce, e.g. auto-saving an input field 500 ms after the last keystroke.
WARNING
Each timer tick causes a full backend roundtrip. Use sensible intervals (e.g. 2000 ms or more) to avoid heavy server load.
Working Samples ​
Complete apps from the sample catalog
that use what this page describes. Each is a single class — pull the repository with
abapGit and start it with ?app_start=<class>.
| Sample | Class |
|---|---|
| Progress Indicator during a Backend Call (A) | Z2UI5_CL_SMP_APP_064 |
| Refresh the View Every n Seconds (A) | Z2UI5_CL_SMP_APP_028 |