#primary-key #guid #abap
#первичный ключ #идентификатор guid #abap
Вопрос:
Я хочу сгенерировать случайное UUID
значение , подобное в Java
with UUID.randomUUID()
.
Я придумал эту функцию GUID_GENERATE
и использовал ее следующим образом
DO 5 TIMES.
CALL FUNCTION 'GUID_CREATE'
IMPORTING
ev_guid_16 = ev_guid_16
ev_guid_22 = ev_guid_22
ev_guid_32 = ev_guid_32.
WRITE: /, ev_guid_16, ev_guid_22, ev_guid_32.
ENDDO.
Результат этой программы всегда один и тот же GUID
. Мне нужен новый случайный ответ на каждый запрос.
Я хочу использовать его в качестве первичного ключа в таблице базы данных. Этот ключ также будет передан через веб-службу Java-приложению и пользователю в качестве идентификатора.
У вас есть какие-нибудь идеи, как я могу генерировать случайные UUID/GUID
ABAP
данные?
Ответ №1:
Прежде всего, вы используете функциональный модуль, который устарел. В комментарии в начале исходного кода указано, что.
*"----------------------------------------------------------------------
* NOW this function has been replaced, see note 935047 "BINK215094
* 28.6.2006 The function module has been switched to the new UUID methods
* which exist in the class cl_system_uuid
* - due to compatibility reasons we catch the exceptions
* - sy-subrc not touched manually
* (sy-subrc was set in case of an error when calling the former
* 'RFCControl' kernel-call, but it wasn't evaluated and finally
* overwritten when leaving this function)
*"----------------------------------------------------------------------
Пожалуйста, используйте класс CL_SYSTEM_UUID
и следующие методы:
IF_SYSTEM_UUID_STATIC~CREATE_UUID_X16
IF_SYSTEM_UUID_STATIC~CREATE_UUID_C22
IF_SYSTEM_UUID_STATIC~CREATE_UUID_C26
IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32
Комментарии:
1. Спасибо за подсказку. Я попробую их и сообщу, работают ли они. Если это так, я думаю, вы заработали зеленую стрелку 🙂
Ответ №2:
Вы абсолютно уверены, что созданный GUID
всегда один и тот же? Потому что этого не должно происходить. Обратите внимание, что разница между ними может составлять всего один символ, когда вы генерируете их внутри быстрого цикла.
Комментарии:
1. Это был один единственный символ… Глупо! Спасибо за подсказку!