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.