ABAP Tipp - CL_GUI_TIMER
Automatisierte Aktualisierung von Listen, Protokollen oder Statusanzeigen? Kein Problem mehr für dich mit unserem kleinen Tipp zur Automatisierung mit einfachen Mitteln und einer SAP Standardklasse.
Inhaltsverzeichnis
Unser erster Quicktipp soll sich mit dem Thema Automatisierung von Vorgängen beschäftigen. Dein Anwender/Kunde möchte ein Protokoll oder eine Liste automatisieren, was er als eine Art Cockpit verwenden will? In SAP normalerweise nicht so einfach, ohne dauernd den Refresh Button zu drücken.
Zum Glück hat SAP hier die Klasse CL_GUI_TIMER implementiert die einfach zu nutzen ist, wie du gleich sehen wirst. Dazu das folgende Beispiel:
" Instanz erzeugen
DATA(lo_time) = NEW cl_gui_timer( ).
" Setzen der Laufzeit
lo_time->interval = 5.
" Starten
lo_time->run( ).
Wir erzeugen eine neue Instanz der Klasse CL_GUI_TIMER und setzen den Timer auf 5 Sekunden. Am Ende starten wir den Timer mit dem Aufruf der Methode RUN. Ganz so leicht ist es allerdings nicht, da wir den wichtigsten Teil vergessen haben. Was soll eigentlich am Ende des Timers passieren?
Wenn du dir die Klasse bereits angeschaut hast, wirst du feststellen das diese über ein Event verfügt, dass du noch vorher registrieren musst, bevor du den Timer startest. Dazu brauchst du eine Methode die das Event aufnimmt und diese musst du dann noch der Instanz mitteilen.
" Beispiel Definition
CLASS lcl_app DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: handle_finished FOR EVENT finished OF cl_gui_timer.
ENDCLASS.
" Setzen des Handlers
SET HANDLER handle_finished FOR lo_time.
Wenn das Event ausgelöst wird, wird die Methode handle_finished ausgeführt. Sollte der Timer erneut gestartet werden, dann einfach die RUN Methode der Klasse aufrufen und es wird ein neuer Countdown gestartet.
Möchtest du nun den Timer abbrechen, bevor das Ende erreicht ist, dann kannst du dies ganz einfach tun:
" Abbruch des Timers
lo_time->cancel( ).
" Löschen des Timers
lo_time->free( ).
Am Ende wird der Timer abgebrochen und die Instanz gesäubert.
Fazit
Mit der Klasse CL_GUI_TIMER bekommst du einen einfachen und sauberen Weg ein Cockpit zu automatisieren oder einfach nur ein Dynpro mit einer Prüfung zu aktualisieren. Auf jeden Fall eine super paraktische Sache out of the box.