ABAP CDS. Коротко о главном

Беглый обзор ABAP CDS, как инструмента для создания моделей данных, и их последующем применении в ABAP конструкциях

Очень много интересного написано про инструментарий ABAP CDS, что заострять на этом отдельно внимание, наверное, особенно и не имеет смысла. Но чтобы было к чему обратиться, если возникнет такая потребность, оставлю здесь несколько параграфов по обозначенной теме.

См. About the ABAP CDS Development User Guide

Что такое CDS?

Core Data Services. Инструментарий, позволяющий создавать представления/ракурсы данных посредством языка DDL (Data Definition Language). Таких представлений/ракурсов есть несколько видов, и все они достаточно хорошо описаны в справочном материале от вендора.

См. ABAP CDS Entities

Важно здесь отметить, что представления/ракурсы данных могут быть использованы в ABAP программах/классах/ФМ etc., а также задействованы при создании oData сервисов (что представляет особую ценность). Еще один интересный момент связан с настройкой доступов к этим ракурсам. Но об этом я расскажу далее.

Как начать работать с этим инструментом?

См. Installing ABAP Development Tools
См. Configuring the ABAP Back-end for ABAP Development Tools

Где скачать Eclipse IDE?

См. SAP Development Tools -> Hana Tools
См. Eclipse Packages | The Eclipse Foundation

Пример создания CDS View

Допустим, что мне требуется создать CDS View, где будут считаны данные из двух таблиц.

Используя Eclipse IDE, я пробую создать такую модель данных.

После сохранения и активации CDS View, в back-end системе можно получить доступ к вновь созданным объектам, посредством транзакции SE11

Каким образом можно обратиться к CDS View используя ABAP?

Ответ на поставленный вопрос весьма простой. И на следующем видеофрагменте представлен пример такого обращения в ABAP программе.

Пример создания CDS Access View

Можно, как угодно плохо относиться к Eclipse IDE как к инструменту работы с объектами системы SAP, но здесь, мне кажется, можно согласиться с той точкой зрения, что он в несколько раз лучше, чем SAPGUI for Java и его "редактор" ABAP кода. Уважаемый SAP, если ты читаешь это, пожалуйста, сжалься над разработчиками и консультантами!🙏 Ну да я немного отошел от обозначенной темы.

В Eclipse IDE следует обратить внимание на периодически возникающие сообщения об ошибках/предупреждениях. В частности, после того, как вы создали и активировали новый CDS View, система предложит обратить ваше внимание на отсутствие Access Control'a для него же.

См. Access Controls

ABAP Core Data Services (CDS) has its own authorization concept CDS access controls using a data control language (DCL). The authorization concept of ABAP CDS uses conditions defined in CDS and can draw upon classical (PFCG) authorizations to check the authorizations of users.

The CDS authorization concept coexists with the classical authorization concept of Application Server ABAP (AS ABAP). You can use the concepts together or independently from another. The classical authorization concept is based on authorization objects. The authorization of a user occurs either implicitly, for example while calling a transaction, or explicitly with the statement AUTHORITY-CHECK. The CDS authorization concept is based on implicit authorization checks that occur during access attempts to CDS entities over ABAP SQL.

Посредством работы с Access Control я могу определить уровень доступа пользователя к данным, которые собираются/отображаются в созданном CDS View.

Для демонстрации простого сценария работы с этой сущностью, я настрою два варианта доступа к созданному CDS View, определив в качестве результирующего параметра, по которому будет приниматься решение о предоставлении доступа к данным, наличие в ролях пользователя объекта полномочий с определенным значением. На следующем видеофрагменте как раз про это.

Продолжая эту тему, хочется акцентировать ваше внимание на том, что в доступ к данным, отображаемым в созданном CDS View, предоставляется с через проверку на наличие у пользователя объектов полномочий, указанных в выражении aspect pfcg_auth ( S_CNTOR, CONTRYORG )

См. ABAP CDS - DEFINE ROLE, pfcg_condition

Предварительно я создал объект полномочий S_CNTOR с фильтром CONTRYORG, который в итоге должен оказаться в роли пользователя.

См. заметку Как создать пользовательский объект полномочий?

Тестирование доступа к View

На следующем видеофрагменте представлена последовательность действий, в результате которой создается роль, куда добавляется предварительно созданный объект полномочий S_CNTOR. Этому объекту полномочий устанавливается два значения, в соответствии с определенными в настройке для Access Control. Все это сопровождается последовательным запуском ABAP программы, где выполняется обычный SELECT по CDS View, а также непосредственный запуск просмотра данных в CDS View, но уже в Eclipse IDE.

Read more