ABAPTIMERS

  1.  
  2. CLASS zini_cl_tiempos DEFINITION.
  3.  
  4.  
  5.   PUBLIC SECTION.
  6.     DATA: segundos TYPE i.
  7.  
  8.     METHODS:
  9.       constructor,
  10.       free IMPORTING i_data TYPE string OPTIONAL,
  11.       tget IMPORTING i_data         TYPE string
  12.            RETURNING VALUE(i_valor) TYPE i,
  13.       tset IMPORTING i_data TYPE string.
  14.  
  15.   PRIVATE SECTION.
  16.  
  17.     TYPES: BEGIN OF ty_tiempos,
  18.              code   TYPE string,
  19.              tiempo TYPE i,
  20.            END OF ty_tiempos.
  21.  
  22.     DATA: t_tiempos TYPE SORTED TABLE OF ty_tiempos WITH UNIQUE KEY code.
  23.  
  24.     meTHODS: ejemplo.
  25.  
  26. ENDCLASS.
  27.  
  28. CLASS zini_cl_tiempos IMPLEMENTATION.
  29.  
  30.  
  31.   METHOD tset.
  32.     DELETE t_tiempos WHERE code = i_data.
  33.     GET RUN TIME FIELD DATA(ax).
  34.     t_tiempos = VALUE #( BASE t_tiempos ( code = i_data tiempo = ax ) ).
  35.   ENDMETHOD.
  36.  
  37.   METHOD free.
  38.     IF i_data IS SUPPLIED.
  39.       DELETE t_tiempos WHERE code = i_data.
  40.     ELSE.
  41.       REFRESH t_tiempos.
  42.     ENDIF.
  43.   ENDMETHOD.
  44.  
  45.   METHOD constructor.
  46.     GET RUN TIME FIELD DATA(ax).
  47.     t_tiempos = VALUE #( BASE t_tiempos ( code = '#INI#' tiempo = ax ) ).
  48.   ENDMETHOD.
  49.  
  50.   METHOD tget.
  51.     CLEAR i_valor.
  52.     TRY.
  53.         DATA(l_valor) = t_tiempos[ code = i_data ]-tiempo.
  54.       CATCH cx_root.
  55.         EXIT.
  56.     ENDTRY.
  57.     GET RUN TIME FIELD DATA(ax).
  58.  
  59.     i_valor = ax - l_valor.
  60.  
  61.     segundos = i_valor / 1000000.
  62.  
  63.   ENDMETHOD.
  64.  
  65.   method ejemplo.
  66.   DATA(cl_time) = NEW zini_cl_tiempos(  ).
  67.   cl_time->tset( 'UNO' ).
  68.   cl_time->tset( 'DOS' ).
  69.   DATA(l_valor) = cl_time->tget( 'UNO' ).
  70.   write: cl_time->segundos. "<-- Aquí están los segundos de la última lectura
  71.  
  72.   endMETHOD.
  73.  
  74. ENDCLASS.
  75.