Обычно это невозможно, как в запросах ABAP SQL:
SELECT m~*, kt~*
FROM mara AS m
JOIN makt AS kt
...
Это противоречит всей идее ассоциаций CDS, потому что они были созданы для присоединения по запросу и для уменьшения избыточных обращений к базе данных. Выборка всех полей сводит на нет всю идею «ленивого соединения».
Однако в предложении FROM есть еще один синтаксис, который включается выражениями пути , который позволяет запрашивать подчеркивающие ассоциации как полностью, так и по отдельности элементы. Вот как
SELECT *
FROM ygac_i_request_role( pm_req_id = @lv_test )
\_Role AS role
INTO TABLE @DATA(lt_result).
Это извлекает все поля ассоциации _Role
во внутреннюю таблицу.
Примечание: помните, что невозможно получить все опубликованные ассоциации текущего представления одновременно, только один путь на запрос.
Возможный обходной путь - использовать JOIN
SELECT *
FROM ygac_i_request_role AS main
JOIN ygac_i_request_role
\_Role AS role
ON main~ProvisionItemId = role~RoleId
JOIN ygac_i_request_role
\_Relation AS relation
ON main~ProvisionItemId = relation~RoleId1
INTO TABLE @DATA(lt_table).
Это создает глубоко структурированный тип с выделенной структурой для каждой ассоциации соединения, например:
Если вас не устраивает такая структура для вашей задачи, lt_table
следует объявить статически, чтобы все поля были размещены в плоском виде
TYPES BEGIN OF ty_table.
INCLUDE TYPE ygac_i_request_role.
INCLUDE TYPE ygac_i_role.
INCLUDE TYPE ygac_i_role_rs.
TYPES END OF ty_table.