Выбор из объекта CDS по сравнению с представлением базы данных CDS

В SAP ABAP CDS оператор define view используется для создания ракурса CDS. Этот объект имеет имя сущности CDS, которое отображается в редакторе и пакетах, но также имеет аннотацию AbapCatalog.sqlViewName, которая должна быть другой. В документации по синтаксису define view есть некоторая информация:

Два объекта создаются для представления CDS (ABAP CDS), которое определяется с помощью DEFINE VIEW. Для каждого из двух объектов необходимо указать имя:

  • Имя CDS_DB_VIEW в представлении базы данных CDS должно быть указано в кавычках после аннотации @ AbapCatalog.sqlViewName. К этому имени применяются обычные правила для представлений словаря ABAP, и оно не чувствительно к регистру (оно внутри преобразуется в прописные буквы). Связанное представление SQL создается под этим именем в базе данных.

  • Имя cds_entity объекта CDS определяется после ключевых слов DEFINE VIEW (DEFINE необязательно). Кавычки указывать не нужно. Это имя соответствует правилам просмотра базы данных CDS, но может иметь длину 30 знаков.

Оба имени находятся в пространстве имен типов данных в ABAP Dictionary и должны быть уникальными. Эти два имени можно использовать в других операторах DDL или в программах ABAP для доступа к представлению CDS.

В нем упоминаются некоторые другие различия, такие как сущность, недоступная в инструментах словаря данных SAP (SE11, SE16), и тот факт, что выбор из сущности всегда выполняется в строгий режим, но кикер:

В DDL CDS и в ABAP представление CDS может рассматриваться как представление базы данных CDS CDS_DB_VIEW и как объект CDS cds_entity. Однако настоятельно рекомендуется, использовать только объект CDS.

Когда я запускаю и то, и другое в простом запросе, я замечаю, что при выборе из объекта столбец MANDT отсутствует, но этот столбец присутствует при выборе из представления базы данных CDS.

Итак, каковы реальные различия между представлением базы данных и сущностью CDS, о которых разработчики должны помнить при работе с представлениями CDS?


person Lilienthal    schedule 15.12.2016    source источник


Ответы (1)


Вам больше не следует запрашивать представление базы данных ABAP CDS и ограничивать свои запросы использованием сущности ABAP CDS. Хотя запрос представления базы данных возможен в NetWeaver 7.40, он устарел в более поздних версиях. Так что не беспокойтесь о просмотре базы данных :-)

См. Документацию по следующим вопросам: Устаревший доступ к представлениям CDS в Open SQL:

Для обеспечения единообразия поведения и использования только определенных свойств представления CDS, для доступа к представлению CDS следует использовать только имя объекта CDS.

Прямой доступ к просмотру базы данных CDS запрещен в строгом режиме с версии 7.50.

Что касается работы с клиентом, вы должны соответственно сосредоточиться на клиентском поведении объекта CDS. Различные варианты описаны ABAP CDS Client Handling.

person Christian Lechner    schedule 23.12.2016
comment
Надеюсь, что это поможет. Да, Кристиан, спасибо за ваш вклад и ссылки. Я отредактировал ваш ответ и добавил соответствующий раздел документа, чтобы избежать гниения ссылок. Кстати, добро пожаловать на сайт. - person Lilienthal; 23.12.2016