169 похожих чатов

А кто-нибудь знает простые способы чтения CDS с виртуальными элементами? Хотелось

бы получить значения виртуальных колонок из ABAPа, а не из Fiori приложения.

20 ответов

27 просмотров

Через http запрос к одата сервису, где реализована эта cds

Iurii-Slobodchikov Автор вопроса
Alexander
Через http запрос к одата сервису, где реализована...

Да, если не получится никак больше реализовать, то придётся так. Но это как-то через чур. Может, всё таки есть какие-то вспомогательные классы или ещё какие обходные пути...

Iurii Slobodchikov
Да, если не получится никак больше реализовать, то...

Не пробовал, но думаю что возможно сделать через amdp функцию

Iurii-Slobodchikov Автор вопроса
Антон Хрипунов
Не пробовал, но думаю что возможно сделать через a...

это тогда придётся полностью все CDS на эту AMPD функцию переписать. тоже так себе работка)

можно покопать в сторону класса cl_sadl_abqi или дебагом пройти http вызов по классам sadl

Iurii-Slobodchikov Автор вопроса
Andrei Tarasov
можно покопать в сторону класса cl_sadl_abqi или д...

Спасибо! Получилось так: DATA(lo_abqi) = cl_sadl_abqi_factory=>create_for_entity( EXPORTING io_mdp = cl_sadl_mdp_exposure=>get_for_entity( iv_type = 'CDS' iv_id = '<CDS_NAME>' ) iv_entity_id = cl_sadl_mdp_exposure=>get_exposure_entity_id( iv_entity_type = 'CDS' iv_entity_id = '<CDS_NAME>' ) ). TYPES: BEGIN OF ts_data, valuetext TYPE string, tablehead TYPE string, tablecells TYPE string, END OF ts_data. DATA lt_data TYPE STANDARD TABLE OF ts_data. lo_abqi->select( EXPORTING is_requested = VALUE #( fill_data = abap_true elements = VALUE #( ( `VALUETEXT` ) ( `TABLEHEAD` ) ( `TABLECELLS` ) ) ) is_paging = VALUE #( maximum_rows = 10 ) IMPORTING et_data_rows = lt_data ).

Iurii Slobodchikov
Спасибо! Получилось так: DATA(lo_abqi) = cl_sadl...

А что за задача была поставлена ? Из-за виртуальных элементов нет возможности через open sql?

Iurii-Slobodchikov Автор вопроса
Olga
А что за задача была поставлена ? Из-за виртуальны...

Виртуальные элементы не заполняются при простом SELECT. Как уже написали выше, нужно чтобы SADL запускался.

Iurii-Slobodchikov Автор вопроса

Ещё придумал вариант попроще: выбрать нужные данные простым ABAP SQL, а затем вручную запустить методы if_sadl_exit_calc_element_read~get_calculation_info if_sadl_exit_calc_element_read~calculate чтобы заполнить вычисляемые колонки :)

Iurii-Slobodchikov Автор вопроса
Alexander
Их параметры тоже вручную заполнить?

Да. У меня просто один класс для вычисляемых полей и поэтому просто получается: SELECT ColumnNeededForCalculation, CalculatedColumn FROM zcds_calc_test INTO TABLE @DATA(lt_data) UP TO 1 ROWS. DATA(lo_calc) = new zcl_cds_virtual_calc( ). DATA(lt_elem) = VALUE if_sadl_exit_calc_element_read=>tt_elements( ( `CALCULATEDCOLUMN` ) ). lo_calc->if_sadl_exit_calc_element_read~get_calculation_info( EXPORTING it_requested_calc_elements = lt_elem iv_entity = `ZCDS_CALC_TEST` ). lo_calc->if_sadl_exit_calc_element_read~calculate( EXPORTING it_original_data = lt_data it_requested_calc_elements = lt_elem CHANGING ct_calculated_data = lt_data ).

Iurii-Slobodchikov Автор вопроса
Alexander
А вы свой универсальный сделали?

Нет. Просто для этой задачи. Здесь просто нужно знать какие ColumnsNeededForCalculation нужно выбирать, чтобы вычислялись CalculatedColumns. Может даже if_sadl_exit_calc_element_read~get_calculation_info не понадобится запускать, но в моём случае нужно...

Iurii Slobodchikov
Виртуальные элементы не заполняются при простом SE...

Эт понятно. Я вот и спросила что за задача была, ведь если запроектировали виртуальные значит так и придумали через sadl . Если бы цели были выбирать из абапа там же рядом бы и программировали логику

Iurii-Slobodchikov Автор вопроса
Olga
Эт понятно. Я вот и спросила что за задача была, ...

Нужно, чтобы и через SADL и через ABAP были видны одни и те же данные. И да, спасибо! Именно твой вопрос и подтолкнул к использованию ABAP как и описал выше. Так меньше оверхеда получается, если данные нужны для ABAP.

Olga
Эт понятно. Я вот и спросила что за задача была, ...

А ALV with IDA уже ещё пока не выбирает виртуальные поля? (Она ж тоже через SADL)

Iurii-Slobodchikov Автор вопроса
Alice V.
А ALV with IDA уже ещё пока не выбирает виртуальны...

Неа, IDA вываливается в ошибку (дамп) при использовании CDS с вычисляемыми параметрами.

Iurii Slobodchikov
Неа, IDA вываливается в ошибку (дамп) при использо...

https://blogs.sap.com/2023/08/22/alv-ida-using-cds-view-long-text-using-calculation-field/ Вот недавно был пост по этому поводу

Iurii-Slobodchikov Автор вопроса
Ualikhan
https://blogs.sap.com/2023/08/22/alv-ida-using-cds...

Да, но это про вычисляемые поля в IDA, а не в CDS

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
Карта сайта