使用SAP ABAP功能模块或类生成唯一的16个字符GUID

时间:2013-11-16 12:06:02

标签: unique sap guid abap

请帮我生成一个唯一的16个字符GUID,我可以将其用作自定义表格中的主键。

我尝试使用GUID_CREATECL_SYSTEM_UUID~CREATE_UUID_X16,但其导出参数(EV_GUID_16)返回32个字符(字母数字十六进制值),我无法将其分配给我的16个字符变量。

如何将16个长度(32个字符)的原始文本转换为16个字符的字符串,我可以将其用作主键?

6 个答案:

答案 0 :(得分:4)

您提到的方法确实创建了一个16字节的GUID。由于无法“本机”显示,因此将其转换为十六进制表示法,每个字节自然会使用两个字符,因此为32个字符。你可能不会只使用16个字符(而不是字节)获得任何独特的东西 - 这是一个巨大的差异!) - 如果可能的话,将主键扩大到32个字符。

答案 1 :(得分:1)

尝试将透明表的主键类型更改为RAW16。这应该可以解决你的问题。

答案 2 :(得分:1)

已经提到了GUID_CREATE。获得RAW格式的GUID后,可以使用GUID_CONVERT将其移动为CHAR格式。我不建议在主键中使用RAW,并建议仅使用GUID_32(字符格式)。

答案 3 :(得分:0)

如果您想要一个独特的ID,请创建您自己的' Z ...'具有事务SNUM的数字范围对象。 将Number Length Domain设置为NUM16或符合您要求的任何域。 保存并返回到事务SNUM主屏幕。从那里,保持间隔:ex 01从1到999999 ...并保存。要传输新的间隔值,请从菜单中选择传输选项。

在Abap中,获取一个唯一的ID调用函数NUMBER_GET_NEXT,如下所示:

CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
  nr_range_nr             = **'01'     " << put your number interval   here <<**
  object                  = **'Z.....' " << put your number range name here <<**
IMPORTING
  number                  = e_uniqueid
EXCEPTIONS
  interval_not_found      = 1
  number_range_not_intern = 2
  object_not_found        = 3
  quantity_is_0           = 4
  quantity_is_not_1       = 5
  interval_overflow       = 6
  buffer_overflow         = 7
  OTHERS                  = 8.

答案 4 :(得分:-2)

我们可以使用FM'CRR_GET_RANDOM_STRING'生成16个字符的唯一ID。

答案 5 :(得分:-3)

如果您需要一个唯一的16 char id

,也可以使用模块函数“GENERAL_GET_RANDOM_STRING”