Will man in einem InputScript einige Zeit verstreichen lassen, so kann man als Option zu dem Befehl ENTER die Option Wait= verwenden. Gibt man Wait=“200″ an, so wartet GuiXT 200 Millisekunden, bevor der Enter Befehl ausgeführt wird.
Es gibt aber auch Fälle, wo man bewusst ein warten durchführen möchte, ohne dass ein ENTER daran beteiligt ist. Dazu kann man einen eigenen RFC Baustein anlegen. Zu beachten ist, dass der Eingangsparameter I_MILLIS vom TYPE CHAR ist (Länge 6), denn GuiXT kann nur Parameter vom Typ CHAR verarbeiten.
ZZGUIXT_WAIT_MILLIS
FUNCTION ZZGUIXT_WAIT_MILLIS. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" IMPORTING *" VALUE(I_MILLIS) TYPE CHAR6 *"---------------------------------------------------------------------- DATA: millis Type I, l_wait TYPE f, l_end_time TYPE timestampl, l_current_time TYPE timestampl. GET TIME STAMP FIELD l_current_time. *to save some microseconds if i_millis LE 0. exit. endif. millis = i_millis. l_wait = millis / 1000. l_end_time = cl_abap_tstmp=>add( tstmp = l_current_time secs = l_wait ). WHILE l_end_time > l_current_time. GET TIME STAMP FIELD l_current_time. ENDWHILE. ENDFUNCTION.
Klasse Funktionsbaustein, habe ihn mal mittels der Laufzeitanalyse vermessen, bis zu 1 Millisekunde arbeitet er (fast) genau – Wow…