二维码

[其他] SAP ABAP中怎样获取随机数

Twilight发表于 2015-11-18 14:47qintengteng 最后回复于 2016-09-09 16:41 [复制链接] 4434 1

在ABAP程序中获取随机数有两种方式:
1、函数方法
  1. CALL FUNCTION 'QF05_RANDOM_INTEGER'
  2.   EXPORTING
  3.     ran_int_max = 2 "随便用什么
  4.     ran_int_min = 1
  5.   IMPORTING
  6.     ran_int     = my_seed. "随便一个变量

  7. CALL FUNCTION 'QF05_RANDOM_INTEGER'
  8.   EXPORTING
  9.     ran_int_max = 10
  10.     ran_int_min = 1
  11.   IMPORTING
  12.     ran_int     = my_value.
复制代码

CALL FUNCTION 'QF05_RANDOM_INTEGER'第一次同一时间生成的随机数相同,第二次才正真生成(1到10)随机数,这个函数要使用两次。

2、类方法
  1.   DATA: lr_random     TYPE REF TO cl_random_number,
  2.         lv_rand_num   TYPE int4.
  3. DATA: lv_seed TYPE i.
  4. lv_seed = sy-timlo.
  5.   CREATE OBJECT lr_random.
  6.   CALL METHOD lr_random->if_random_number~init ( i_seed = lv_seed ) .
  7.   CALL METHOD lr_random->if_random_number~get_random_int
  8.     EXPORTING
  9.       i_limit  = 9999 "随机数的最大上线
  10.     RECEIVING
  11.       r_random = lv_rand_num.
  12.   lv_rand_num_c = lv_rand_num.
复制代码

获取的随机数可以用于验证码等场景。

  1. DATA:lo_ran TYPE REF TO cl_abap_random_int,
  2.      lv_i   TYPE i,
  3.      lv_seed TYPE i.
  4. lv_seed = sy-timlo.
  5. lo_ran = cl_abap_random_int=>create( min = 1000 max = 9999 seed = lv_seed ).
  6. DO 20 TIMES.
  7.   lv_i = lo_ran->get_next( ).
  8.   WRITE / lv_i.
  9. ENDDO.
复制代码
回复

使用道具 举报

qintengteng
谢谢分享,受益良多
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表