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

2022-12-05 08:38:44 浏览数 (1)


开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情

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.

代码语言:javascript复制
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 ,展示的内容如图所示.此项数据既可以作为加密数据内容,也可以做主键,或者日志等方便查询的唯一值数据.在自建立表中经常使用. 具体使用应情况按照长短适配.

技术总结

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

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

0 人点赞