使用的这个标准的工具类:cl_abap_random_int
.
*&---------------------------------------------------------------------*
*& Report Z_MY_TEST01
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_my_test01.
DATA: ls_literal TYPE i VALUE 100,
ls_random_gen TYPE REF TO cl_abap_random_int,
t0 type i,
t1 TYPE i,
t2 TYPE i,
t3 TYPE i,
t4 TYPE i.
DATA: lt_standard TYPE STANDARD TABLE OF i," WITH NON-UNIQUE KEY table_line,
lt_sorted TYPE SORTED TABLE OF i WITH NON-UNIQUE KEY table_line,
lt_hash TYPE HASHED TABLE OF i WITH UNIQUE KEY table_line.
* TRY.
CALL METHOD cl_abap_random_int=>create
EXPORTING
* SEED =
min = 0
max = 183647
RECEIVING
prng = ls_random_gen.
* CATCH CX_ABAP_RANDOM .
* ENDTRY.
GET RUN TIME FIELD t1.
DATA ls_rand_int TYPE i.
DO ls_literal TIMES.
CALL METHOD ls_random_gen->get_next
RECEIVING
value = ls_rand_int.
INSERT ls_rand_int INTO TABLE lt_standard.
ENDDO.
GET RUN TIME FIELD t2.
t0 = t2 - t1.
WRITE: / 'time: ', t0.
GET RUN TIME FIELD t3.
DO ls_literal TIMES.
CALL METHOD ls_random_gen->get_next
RECEIVING
value = ls_rand_int.
INSERT ls_rand_int INTO TABLE lt_sorted.
ENDDO.
GET RUN TIME FIELD t4.
t0 = t4 - t3.
WRITE: / 'time: ', t0.
*DO ls_literal TIMES.
* CALL METHOD ls_random_gen->get_next
* RECEIVING
* value = ls_rand_int.
* INSERT ls_rand_int INTO lt_hash.
*ENDDO.
DATA: ind TYPE i,
tmp TYPE i.
*DO ls_literal TIMES.
* READ TABLE lt_standard index ind INTO tmp.
* ind = ind + 1.
* WRITE: / tmp.
*ENDDO.
DO ls_literal TIMES.
READ TABLE lt_sorted INDEX ind INTO tmp.
ind = ind + 1.
WRITE: / tmp.
ENDDO.