ABAP 生成随机数的函数

  • 2
  • 485 views
  • A+
所属分类:Notes

1:QF05_RANDOM

2:QF05_RANDOM_INTEGER

发表评论取消回复

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • 董 家军

      目前算MD5都用MD5_CALCULATE_HASH_FOR_CHAR和MD5_CALCULATE_HASH_FOR_RAW。在对字符串算 md5的时候,使用前者比较多,不过如果字串中包含了中文的话,如果用其他语言解析(例如java)会造成md5值不一样。因为MD5_CALCULATE_HASH_FOR_CHAR在算HASH值之前先对字符进行了一次处理。

      通过读代码可以知道其核心用到了函数 CALCULATE_HASH_FOR_RAW,同理也有CALCULATE_HASH_FOR_CHAR。所以可以直接用这两个函数来计算md5。

      例如:

      CALL FUNCTION ‘CALCULATE_HASH_FOR_CHAR’
      EXPORTING
      alg = ‘MD5’
      data = xml_string
      IMPORTING
      hash = hash
      EXCEPTIONS
      internal_error = 1
      OTHERS = 2.

      这样就可以计算出md5值了。

      • ag

        在ABAP程序中有两种方式可以获取随机数:
        方式一:
        使用 function QF05_RANDOM_INTEGER 来获得随机数, 第一次使用的时候只是获得种子. 所以在程序中使用的时候,要在最开始设置种子. 如, 我想获得一个1-10的随机数,应该在
        CALL FUNCTION ‘QF05_RANDOM_INTEGER’
        EXPORTING
        ran_int_max = 10
        ran_int_min = 1
        IMPORTING
        ran_int = my_value.
        之前,用
        CALL FUNCTION ‘QF05_RANDOM_INTEGER’
        EXPORTING
        ran_int_max = 2 “随便用什么
        ran_int_min = 1
        IMPORTING
        ran_int = my_seed. “随便一个变量

        这样 得到的 my_value 才会不一样.

        方式二:
        DATA: cl_random TYPE REF TO cl_random_number,
        m TYPE i.
        START-OF-SELECTION.
        CREATE OBJECT cl_random.
        CALL METHOD cl_random->if_random_number~init .
        CALL METHOD cl_random->if_random_number~get_random_int
        EXPORTING
        i_limit = 99999
        RECEIVING
        r_random = m.
        WRITE m.