2 thoughts on “ABAP 生成随机数的函数

  1. 目前算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值了。

  2. 在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.

发表评论

电子邮件地址不会被公开。