From 7e7afa995ca0f552cc89cd3034a56d97871bc77f Mon Sep 17 00:00:00 2001 From: Thorsten Wolf Date: Thu, 27 Feb 2025 09:13:11 +0100 Subject: [PATCH] proposal for https://github.com/open-abap/open-abap-core/issues/930 --- src/uuid/cl_system_uuid.clas.abap | 8 ++++++++ src/uuid/cl_system_uuid.clas.testclasses.abap | 5 +++++ src/uuid/if_system_uuid_static.intf.abap | 6 ++++++ 3 files changed, 19 insertions(+) diff --git a/src/uuid/cl_system_uuid.clas.abap b/src/uuid/cl_system_uuid.clas.abap index a5e3ffe7..a0cd2ee7 100644 --- a/src/uuid/cl_system_uuid.clas.abap +++ b/src/uuid/cl_system_uuid.clas.abap @@ -4,6 +4,7 @@ CLASS cl_system_uuid DEFINITION PUBLIC. INTERFACES if_system_uuid_static. ALIASES create_uuid_c32_static FOR if_system_uuid_static~create_uuid_c32. + ALIASES create_uuid_c36_static FOR if_system_uuid_static~create_uuid_c36. ALIASES create_uuid_x16_static FOR if_system_uuid_static~create_uuid_x16. PRIVATE SECTION. CLASS-METHODS random RETURNING VALUE(rv_str) TYPE string. @@ -37,6 +38,13 @@ CLASS cl_system_uuid IMPLEMENTATION. TRANSLATE uuid TO UPPER CASE. ENDMETHOD. + METHOD if_system_uuid_static~create_uuid_c36. + DATA lv_str TYPE string. + lv_str = random( ). + TRANSLATE lv_str TO UPPER CASE. + uuid = lv_str. + ENDMETHOD. + METHOD if_system_uuid_rfc4122_static~create_uuid_c36_by_version. ASSERT version = 4. uuid = random( ). diff --git a/src/uuid/cl_system_uuid.clas.testclasses.abap b/src/uuid/cl_system_uuid.clas.testclasses.abap index 275a09a2..3309039f 100644 --- a/src/uuid/cl_system_uuid.clas.testclasses.abap +++ b/src/uuid/cl_system_uuid.clas.testclasses.abap @@ -4,6 +4,7 @@ CLASS ltcl_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. METHODS create_uuid_c36_by_version FOR TESTING RAISING cx_static_check. METHODS create_uuid_x16 FOR TESTING RAISING cx_static_check. METHODS create_uuid_c32 FOR TESTING RAISING cx_static_check. + METHODS create_uuid_c36 FOR TESTING RAISING cx_static_check. METHODS create_uuid_c32_dyn FOR TESTING RAISING cx_static_check. ENDCLASS. @@ -21,6 +22,10 @@ CLASS ltcl_test IMPLEMENTATION. cl_abap_unit_assert=>assert_not_initial( cl_system_uuid=>if_system_uuid_static~create_uuid_c32( ) ). ENDMETHOD. + METHOD create_uuid_c36. + cl_abap_unit_assert=>assert_not_initial( cl_system_uuid=>if_system_uuid_static~create_uuid_c36( ) ). + ENDMETHOD. + METHOD create_uuid_c32_dyn. " DATA uuid TYPE c LENGTH 32. " CALL METHOD (`CL_SYSTEM_UUID`)=>create_uuid_c32_static diff --git a/src/uuid/if_system_uuid_static.intf.abap b/src/uuid/if_system_uuid_static.intf.abap index d90239da..57d45f52 100644 --- a/src/uuid/if_system_uuid_static.intf.abap +++ b/src/uuid/if_system_uuid_static.intf.abap @@ -11,6 +11,12 @@ INTERFACE if_system_uuid_static PUBLIC. RAISING cx_uuid_error. + CLASS-METHODS create_uuid_c36 + RETURNING + VALUE(uuid) TYPE sysuuid_c36 + RAISING + cx_uuid_error. + CLASS-METHODS create_uuid_c22 RETURNING VALUE(uuid) TYPE sysuuid_c22