Mergulhando no Caos com as classes CL_ABAP_RANDOM*
Os programas ABAP são todos demasiado bem comportados; demasiado previsíveis.
Enquanto demiúrgos, temos a obrigação moral de lhes dar um pouco de livre arbítrio, dar-lhes a cheirar o caos, mostrar-lhes as árvores da vida e do conhecimento e, num passe de kenosis , deixá-los à vontade para trincarem a maçã. Só assim nos sentiremos completos e realizados; só assim poderemos descansar ao sétimo dia.
E para isso, nada como os números aleatórios.
Hoje apresento-te umas classes que servem para gerar números pseudo-aleatórios: CL_ABAP_RANDOM*
Aqui está um exemplo de como podes usá-las para gerar inteiros (quase) ao calhas:
DATA: r_random TYPE REF TO cl_abap_random_int,
calhas1 TYPE i,
calhas2 TYPE i,
calhas3 TYPE i,
seed TYPE i.
seed = cl_abap_random=>seed( ).
CALL METHOD cl_abap_random_int=>create
EXPORTING
seed = seed
min = 1
max = 10
RECEIVING
prng = r_random.
calhas1 = r_random->get_next( ).
calhas2 = r_random->get_next( ).
calhas3 = r_random->get_next( ).
WRITE: seed, calhas1, calhas2, calhas3.
Como podes ver, este indómito programita faz uso de duas classes: a CL_ABAP_RANDOM_INT para gerar os números e a CL_ABAP_RANDOM, usada para gerar a semente inicial.
Nota que, como as classes CL_ABAP_RANDOM* estão todas implementadas como singleton , não lhes podes fazer CREATE OBJECT assim às descarada. Em vez disso tens de usar o método estático CREATE para criar instâncias delas.
Nota também que se não definires a SEED vais ter sempre a mesma sequência de números porque, por omissão, a seed inicial será sempre a mesma. Felizmente a classe CL_ABAP_RANDOM tem um método SEED() que permite obter sementes bastante aleatórias que deverá ser suficiente para gerares o caos que precisas de gerar no SAP.
Obrigado a Y………No logro comprender……. pela foto.
O Abapinho saúda-vos.