Para testar e checar seu programa ABAP você pode usar técnicas especiais que permitem que o desenvolvedor avalie a velocidade de execução de uma determinada rotina. Você pode medir uma rotina de seu programa criando um campo que retorna o tempo de execução de determinada expressão ou bloco de instruções usando o comando GET RUN TIME FIELD . Você pode também usar métodos estáticos da classe chamada CL_ABAP_RUNTIME para medir tempo de execução com alta precisão de tempo.
Exemplo:
Neste exemplo usamos técnicas especiais para medir o tempo de execução de rotinas ABAP, você pode notar que usamos dois métodos diferentes para medida.
Abap
*&---------------------------------------------------------------------*
*& Report ZRUNTIMECAMPO
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Medir tempo de execução de um programa ABAP
*&---------------------------------------------------------------------*
REPORT ZRUNTIMECAMPO.
* Declara campos para runtime
DATA : objTempo TYPE REF TO IF_ABAP_RUNTIME,
tempo1 TYPE i,
tempo2 TYPE i,
tempo3 TYPE i,
tempo4 TYPE i.
* Declara campos para calculo
DATA : Numero TYPE i VALUE 15000,
calculo1 TYPE i VALUE 1000,
calculo2 TYPE i VALUE 2,
expressao TYPE i.
* Mostra titulo
Write : / 'Medida em Microsegundos' COLOR 3.
SKIP 2.
Write : / 'Variável' COLOR 5.
SKIP 1.
* Cria primeira medida de tempo de execução
DO Numero TIMES.
GET RUN TIME FIELD TEMPO1.
ENDDO.
Write : / 'Tempo de execução do primeiro looping - vazio: ', TEMPO1 COLOR 4.
* Cria segunda medida de tempo de execução
Do Numero TIMES.
GET RUN TIME FIELD TEMPO2.
EXPRESSAO = NUMERO * CALCULO1 / CALCULO2.
ENDDO.
* Medida de tempo atravez de um objeto Abap
Write : / 'Tempo de execução do segundo looping - calculo: ', TEMPO2 COLOR 6.
SKIP 1.
* Cria objeto
OBJTEMPO = CL_ABAP_RUNTIME=>CREATE_HR_TIMER( ).
Write : / 'Objeto' COLOR 5.
SKIP 1.
* Medida de tempo por objeto
DO Numero TIMES.
TEMPO3 = OBJTEMPO->GET_RUNTIME( ).
ENDDO.
Write : / 'Objeto - tempo final de execução - vazio: ', TEMPO3 COLOR 4.
* Zera variavel
EXPRESSAO = 0.
* Medida de tempo por objeto
DO Numero TIMES.
TEMPO4 = OBJTEMPO->GET_RUNTIME( ).
EXPRESSAO = NUMERO * CALCULO1 / CALCULO2.
ENDDO.
Write : / 'Objeto - tempo final de execução - calculo: ', TEMPO3 COLOR 6.


