В 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?