* Ini --- ATimeOut v1.0 (C) 2006 Alex Bergonzini #######################
********************************************* Ini Configuracin
constants: _rt_activo(1) value 'X', "Activamos ATimeOut
_rt_aviso type i value 30, "Segundos de GAP
_rt_Aviso1(1) value ' ', "Damos un primer aviso
_rt_aviso2(1) value 'X', "Damos el aviso de DUMP
_rt_sav(1) value ' '. "Proteccin BBDD.
********************************************* Fin Configuracin
********************************************* Documentacin
*# start_time : Inicializamos el contador
*# get_time : Controla el tiempo consumido,
*# salta mensaje y actua en consecuencia
*# save_time : Debe colocarse despus de cada modificacin de BBDD
*# Si la proteccin de BBDD est activa y ha habido una modificacin de
*# BBDD, el programa dar el Dump de TimeOut.
data: _rt_start type i,
_rt_now type i,
_rt_lim type i,
_rt_lim2 type i,
_rt_gap1 type i,
_rt_gap2 type i,
_rt_sec type i,
_rt_answ(1),
_rt_save(1).
data: begin of par_usub occurs 0,
status like sy-index,
pname(60),
user_wert like par_usub-pname,
default_wert like par_usub-pname,
end of par_usub.
data: par_sub like par_usub occurs 0 with header line.
define save_time.
_rt_save = sy-ABCDE+0(1).
end-of-definition.
define start_time.
if not _rt_activo is initial and _rt_sec is initial.
free: par_usub, par_sub.
_rt_sec = 1000000.
call 'C_SAPGALLPARAM' id 'PAR_USUB' field par_usub-*sys*
id 'PAR_SUB' field par_sub-*sys*.
read table par_usub with key pname = 'rdisp/max_wprun_time'.
_rt_lim2 = _rt_lim = par_usub-USER_WERT.
_rt_gap1 = _rt_lim - _rt_aviso.
add _rt_lim2 to _rt_lim2.
_rt_gap2 = _rt_lim2 - _rt_aviso.
clear _rt_save.
get run time field _rt_start.
endif.
end-of-definition.
define call_function.
call function 'POPUP_TO_DECIDE_INFO'
exporting
TEXTLINE1 = 'Aceptar - Continuar con el programa'
TEXTLINE2 = 'Cancelar - Se cancela el programa'
titel = &1
START_ROW = 6
IMPORTING
ANSWER = _rt_answ.
if _rt_answ = sy-ABCDE+0(1).
leave program.
endif.
end-of-definition.
define get_time.
if not _rt_activo is initial and
( ( not _rt_sav is initial and
_rt_save is initial ) or
( _rt_sav is initial )
).
get run time field _rt_now.
_rt_start = _rt_now / _rt_sec.
if not _rt_aviso1 is initial and
_rt_start < _rt_lim and _rt_start > _rt_gap1. " DefCon 3
call_function '1er AVISO de DUMP'.
endif.
if not _rt_aviso2 is initial and
_rt_start < _rt_lim2 and _rt_start > _rt_gap2. "Defcon 1
call_function 'DUMP INMINENTE'.
endif.
endif.
end-of-definition.
* Fin --- ATimeOut v1.0 (C) 2006 Alex Bergonzini #######################
end-of-selection.
*######################## Demo
start_time.
do 100000 times.
* Tu Cdigo fuente
get_time.
enddo.
do. "<- Este bucle debera dar el DUMP pero lo evitamos con ATimeOut
* Tu Cdigo fuente
get_time.
enddo.