【问题标题】:Generate random GUID生成随机 GUID
【发布时间】:2011-10-25 10:04:26
【问题描述】:

我想生成一个随机的UUID,比如JavaUUID.randomUUID()

我想出了GUID_GENERATE这个函数并这样使用它

    DO 5 TIMES.
       CALL FUNCTION 'GUID_CREATE'
        IMPORTING
         ev_guid_16 = ev_guid_16
         ev_guid_22 = ev_guid_22
         ev_guid_32 = ev_guid_32.

       WRITE: /, ev_guid_16, ev_guid_22, ev_guid_32.
    ENDDO.

这个程序的结果总是相同的GUID。每次请求我都需要一个新的随机数。

我想将它用作数据库表中的主键。该密钥也将通过 Web 服务传输到 Java 应用程序和那里的用户作为标识符。

您知道如何在ABAP 中生成随机UUID/GUID 吗?

【问题讨论】:

    标签: primary-key guid abap


    【解决方案1】:

    首先,您使用的是过时的功能模块。源代码开头的注释说明了这一点。

    *"----------------------------------------------------------------------
    * NOW this function has been replaced, see note 935047      "BINK215094
    * 28.6.2006 The function module has been switched to the new UUID methods
    *           which exist in the class cl_system_uuid
    *           - due to compatibility reasons we catch the exceptions
    *           - sy-subrc not touched manually
    *             (sy-subrc was set in case of an error when calling the former
    *             'RFCControl' kernel-call, but it wasn't evaluated and finally
    *             overwritten when leaving this function)
    *"----------------------------------------------------------------------
    

    请使用CL_SYSTEM_UUID类和以下方法:

    IF_SYSTEM_UUID_STATIC~CREATE_UUID_X16
    IF_SYSTEM_UUID_STATIC~CREATE_UUID_C22
    IF_SYSTEM_UUID_STATIC~CREATE_UUID_C26
    IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32
    

    【讨论】:

    • 感谢您的提示。我会尝试它们并报告它们是否有效。如果是这样,我猜你赢得了绿色箭头:-)
    【解决方案2】:

    您确定创建的GUID 始终相同吗?因为这不应该发生。请注意,当您在快速循环中生成它们时,它们之间的区别可能只是一个字符。

    【讨论】:

    • 只有一个字符...愚蠢!谢谢你的提示!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2023-01-03
    相关资源
    最近更新 更多