开启掘金成长之旅!这是我参与「掘金日新计划 · 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.
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 的实例讲解. 技术难度偏低. 只要注意使用元素类型的长短,按照合理业务场景自行选择即可 .
这里是百里一个是努力的学习者 . 做出正确合理的规划,并且对之付出持续的输出.就是胜利