Создать случайную строку в представлении ABAP CDS

Я хотел бы заменить некоторую логику ABAP представлениями ABAP-CDS. У нас нет базы данных HANA (пока), поэтому нет SQL-скрипта. Есть ли способ создать случайную строку определенной длины в ABAP-CDS?

Это подготовка к миграции нашей БД HANA, которая должна заменить функциональный модуль GENERAL_GET_RANDOM_STRING.

Я хочу «протолкнуть» как можно больше логики в базу данных, потому что у нас есть около 16 000 000 записей, в которые нам нужно ввести случайную строку. И если это будет создано через базу данных, это будет намного быстрее.


person Sasku    schedule 04.11.2019    source источник
comment
Не могли бы вы объяснить, насколько вы хотите заменить логику ABAP на CDS? Хотели бы вы протолкнуть код бывшего функционального модуля в базу данных или предоставить стандартизированный доступ к данным через OData для замены проприетарных соединений RFC? В последнем случае вы можете выбрать постоянную, даже пустую строку в своем определении CDS и перезаписать ее в методе EXT класса предоставления данных (DPC). Если возможно, приведите минимальный пример.   -  person konstantin    schedule 04.11.2019
comment
Я не вижу этого функционального модуля в своей системе и, следовательно, длины случайного строкового поля. Можете ли вы использовать такие функции, как CURRENT_TIMESTAMP или TO_TIMESTAMP?   -  person Pavan Kumar Polavarapu    schedule 04.11.2019
comment
@konstantin - в настоящее время у меня нет определения CDS. Я просто хочу увидеть свои возможности, возможно это или нет. В противном случае я останусь с решением ABAP. Насколько мне известно, метод DPC EXT доступен только для служб OData, не так ли? Я бы использовал эти компакт-диски в своем обычном отчете о abap.   -  person Sasku    schedule 05.11.2019


Ответы (1)


Некоторые идеи:

Сгенерируйте GUID и усеките его до длины вашей случайной строки требований.

В качестве альтернативы, если ваша строка не является полностью случайной и у вас есть массив значений, которые вы хотите выбрать случайным образом. Выберите этот список с новым столбцом сгенерированного GUID. Отсортируйте этот список с помощью руководства, выберите верхний. В глубине души у меня есть мучительное сомнение, что я упускаю шаг от этого. Возможно, GUID также должен быть усечен в этом сценарии.

Надеюсь это поможет.

person Mike Watson    schedule 19.11.2019
comment
В общем, хорошая идея, но как я могу это сделать в представлении CDS? - Как сказано в вопросе, я хотел бы добавить как можно больше логики в базу данных. - person Sasku; 20.11.2019
comment
Да, похоже, есть способ с табличной функцией, но я бы сказал, что вам не лучше, чем просто делать это на ABAP. Я думал, что будет какой-то способ использовать SYSUUID, но, по-видимому, не в CDS. - person Mike Watson; 20.11.2019