CLASS zini_cl_tiempos DEFINITION.
PUBLIC SECTION.
DATA: segundos TYPE i.
METHODS:
constructor,
free IMPORTING i_data TYPE string OPTIONAL,
tget IMPORTING i_data TYPE string
RETURNING VALUE(i_valor) TYPE i,
tset IMPORTING i_data TYPE string.
PRIVATE SECTION.
TYPES: BEGIN OF ty_tiempos,
code TYPE string,
tiempo TYPE i,
END OF ty_tiempos.
DATA: t_tiempos TYPE SORTED TABLE OF ty_tiempos WITH UNIQUE KEY code.
meTHODS: ejemplo.
ENDCLASS.
CLASS zini_cl_tiempos IMPLEMENTATION.
METHOD tset.
DELETE t_tiempos WHERE code = i_data.
GET RUN TIME FIELD DATA(ax).
t_tiempos = VALUE #( BASE t_tiempos ( code = i_data tiempo = ax ) ).
ENDMETHOD.
METHOD free.
IF i_data IS SUPPLIED.
DELETE t_tiempos WHERE code = i_data.
ELSE.
REFRESH t_tiempos.
ENDIF.
ENDMETHOD.
METHOD constructor.
GET RUN TIME FIELD DATA(ax).
t_tiempos = VALUE #( BASE t_tiempos ( code = '#INI#' tiempo = ax ) ).
ENDMETHOD.
METHOD tget.
CLEAR i_valor.
TRY.
DATA(l_valor) = t_tiempos[ code = i_data ]-tiempo.
CATCH cx_root.
EXIT.
ENDTRY.
GET RUN TIME FIELD DATA(ax).
i_valor = ax - l_valor.
segundos = i_valor / 1000000.
ENDMETHOD.
method ejemplo.
DATA(cl_time) = NEW zini_cl_tiempos( ).
cl_time->tset( 'UNO' ).
cl_time->tset( 'DOS' ).
DATA(l_valor) = cl_time->tget( 'UNO' ).
write: cl_time->segundos. "<-- Aquí están los segundos de la última lectura
endMETHOD.
ENDCLASS.