1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
REPORT 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' EXPORTING IV_DATE = SY-DATUM IV_TIME = SY-UZEIT IV_TIMEZONE = SY-ZONLO IMPORTING EV_TIMESTAMP = LV_TIMESTAMP "length 15. EXCEPTIONS TIME_CONVERSION_FAILED = 1 OTHERS = 2. IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. "获取随机数. CALL FUNCTION 'QF05_RANDOM_INTEGER' EXPORTING RAN_INT_MAX = 999999 RAN_INT_MIN = 100000 IMPORTING RAN_INT = LV_RANDOMINT "length 6. EXCEPTIONS INVALID_INPUT = 1 OTHERS = 2. IF SY-SUBRC <> 0. * IMPLEMENT SUITABLE ERROR HANDLING HERE ENDIF. "调用系统的uuid函数. CALL FUNCTION 'EHSS_ESCOM_UUID_GENERATE' IMPORTING E_IDENT = LV_IDENT E_MESG = LV_MESG E_IDENTNM = LV_IDENTNM "right(12) EXCEPTIONS ID_NOT_GENERATE = 1 OTHERS = 2. IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. "强制类型转换. 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. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/1642.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。