生成随机 GUID

5

我希望生成一个类似于在Java中使用UUID.randomUUID()生成的随机UUID。

我想到了函数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吗?
2个回答

10

首先,您正在使用一个已过时的函数模块。源代码开头的注释说明了这一点。

*"----------------------------------------------------------------------
* 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

谢谢你的提示。我会尝试并报告它们是否有效。如果是的话,我想你就赢得了绿色箭头 :-) - user212926

9

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


1
那只是一个单一的字符...太蠢了!谢谢你的提示! - user212926

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接