uuid
-
SAP ABAP UUID转换
需要将外部系统发过来长度为32位的UUID缩短,这样才能顺利写到BKPF上的某个字段(如XBLNR,XBLNR_ALT等)来关联内外部系统业务单据。 相信很多小伙伴都遇到过类似的情…
-
ABAP程序UUID重复问题处理
UUID通常用来做接口和日志等数据的唯一主键,如果UUID重复将会导致数据覆盖、ABAP DUMP的情况,后果非常严重。 理论上,UUID是不会重复的,但项目中确实出现过UUID有…
-
SAP生成不重复的uuid
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586REPORT ZRTEST01.FORM FRM_GEN_UUID CHANGING UUIDRET.*SAP标准函数SYSTEM_UUID_CREATE存在bug,短时间内产生的uuid存在重复现象,不要使用。*此处自定义函数产生uuid.*返回值uuid type c length 32.*原理:时间戳 + 随机数 + 标准uuid函数后12位.DATA: LV_TIMESTAMP TYPE TZONREF-TSTAMPS,LV_RANDOMINT TYPE QF00-RAN_INT,LV_IDENT TYPE ESEIDENT,LV_MESG TYPE NATXT,LV_IDENTNM TYPE ESEIDENTNM,LV_TSTMP TYPE C LENGTH 15,LV_RAINT TYPE C LENGTH 6,LV_IDENTMP TYPE C LENGTH 132,LV_UUIDRET TYPE C LENGTH 33."获取时间戳.CALL FUNCTION 'CIF_GEN4_CONVERT_DATETIME'EXPORTINGIV_DATE = SY-DATUMIV_TIME = SY-UZEITIV_TIMEZONE = SY-ZONLOIMPORTINGEV_TIMESTAMP = LV_TIMESTAMP "length 15.EXCEPTIONSTIME_CONVERSION_FAILED = 1OTHERS = 2.IF SY-SUBRC <> 0.* Implement suitable error handling hereENDIF."获取随机数.CALL FUNCTION 'QF05_RANDOM_INTEGER'EXPORTINGRAN_INT_MAX = 999999RAN_INT_MIN = 100000IMPORTINGRAN_INT = LV_RANDOMINT "length 6.EXCEPTIONSINVALID_INPUT = 1OTHERS = 2.IF SY-SUBRC <> 0.* IMPLEMENT SUITABLE ERROR HANDLING HEREENDIF."调用系统的uuid函数.CALL FUNCTION 'EHSS_ESCOM_UUID_GENERATE'IMPORTINGE_IDENT = LV_IDENTE_MESG = LV_MESGE_IDENTNM = LV_IDENTNM "right(12)EXCEPTIONSID_NOT_GENERATE = 1OTHERS = 2.IF SY-SUBRC <> 0.* Implement suitable error handling hereENDIF."强制类型转换.WRITE LV_TIMESTAMP TO LV_TSTMP.WRITE LV_RANDOMINT TO LV_RAINT.WRITE LV_IDENTNM TO LV_IDENTMP.CONCATENATE LV_TSTMP LV_RAINT LV_IDENTMP+19(12) INTO LV_UUIDRET.UUIDRET = LV_UUIDRET.CLEAR: LV_RANDOMINT,LV_IDENT,LV_MESG,LV_IDENTNM,LV_TSTMP,LV_RAINT,LV_IDENTMP,LV_UUIDRET.ENDFORM.START-OF-SELECTION.DATA UUIDRET TYPE C LENGTH 33.PERFORM FRM_GEN_UUID CHANGING UUIDRET.WRITE UUIDRET.