ABAP 生成唯一标识字段uuid ,guid

举报
百里丶落云 发表于 2023/08/09 10:39:53 2023/08/09
【摘要】 序HELLO 这里是百里,一个学习中的ABAPER, 在SAP 开发中经常会遇到一些唯一的标致,他们的作用就是唯一,不会出现相同的字段.在一些非主键字段内,增加唯一标致UUID,可以在接口地方使用,从而方便做数据唯一标识.UUID通常用来做接口和日志等数据的唯一主键,如果UUID重复将会导致数据覆盖、ABAP DUMP的情况,后果非常严重。理论上,UUID是不会重复的,但项目中确实出现过U...

HELLO 这里是百里,一个学习中的ABAPER, 在SAP 开发中经常会遇到一些唯一的标致,他们的作用就是唯一,不会出现相同的字段.在一些非主键字段内,增加唯一标致UUID,可以在接口地方使用,从而方便做数据唯一标识.
UUID通常用来做接口和日志等数据的唯一主键,如果UUID重复将会导致数据覆盖、ABAP DUMP的情况,后果非常严重。
理论上,UUID是不会重复的,但项目中确实出现过UUID有重复的情况。为有效避免UUID重复的情况,可以对生成UUID的过程或者生成的UUID做一些处理。

什么是UUID , GUID

UUID ,GUID ,是全局的唯一标识,所以数据都不会重复,目前按照资料分为4种,分别为 16位, 22位 ,26位, 32 位 .
如果使用UUID 为主键时候,其data type应该是RAW(16)类型 .

技术介绍

uuid,guid ,主要是调用函数create_system_uuid( ) 其中生成lv_uuid_x16 后在调用函数 convert_uuid_x16 生成对应的 c22 ,c32 ,c26.

DATA lo_uuid TYPE REF TO if_system_uuid.  
DATA lv_uuid_x16 TYPE sysuuid_x16. " raw(16) -> data element GUID  
DATA lv_uuid_c22 TYPE sysuuid_c22.  
DATA lv_uuid_c32 TYPE sysuuid_c32.  
DATA lv_uuid_c26 TYPE sysuuid_c26.  
  
TRY.  
    lo_uuid = cl_uuid_factory=>create_system_uuid(  ).  
    lv_uuid_x16 = lo_uuid->create_uuid_x16( ).  
    lo_uuid->convert_uuid_x16(  
      EXPORTING  
        uuid     = lv_uuid_x16  
      IMPORTING  
        uuid_c22 = lv_uuid_c22  
        uuid_c32 = lv_uuid_c32  
        uuid_c26 = lv_uuid_c26 ).  
  CATCH cx_uuid_error. " Error Class for UUID Processing Errors  
ENDTRY.  
  
WRITE: / 'uuid_x16:', lv_uuid_x16.  
WRITE: / 'uuid_c22:', lv_uuid_c22.  
WRITE: / 'uuid_c32:', lv_uuid_c32.  
WRITE: / 'uuid_c26:', lv_uuid_c26.

结果展示

如图所示,uuid,guid ,展示的内容如图所示.此项数据既可以作为加密数据内容,也可以做主键,或者日志等方便查询的唯一值数据.在自建立表中经常使用.
具体使用应情况按照长短适配.

image.png

技术总结

本篇文章讲述的是一个在自建表中,及需要用到唯一值判定时使用的技术. 生成唯一值 uuid ,guid 的实例讲解. 技术难度偏低. 只要注意使用元素类型的长短,按照合理业务场景自行选择即可 .

这里是百里一个是努力的学习者 .
做出正确合理的规划,并且对之付出持续的输出.就是胜利

wallhaven-0w8qr6.jpg

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。