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

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

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

20 ответов

79 просмотров

Через 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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта