随机数
-
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. -
ABAP 生成随机数的函数
1:QF05_RANDOM 2:QF05_RANDOM_INTEGER