Меню

Практика освоения ABAP CDS для непрограммистов. Часть 1

|

Публикация предназначена для консультантов по различным модулям SAP ERP. Описываемая технология ABAP CDS наиболее актуальна для систем SAP S/4HANA, но может применяться и в любых системах, начиная с платформы SAP Netweaver 7.40 SPS05, независимо от используемой базы данных.

АННОТАЦИЯ

Публикация предназначена для консультантов по различным модулям SAP ERP. Описываемая технология ABAP CDS наиболее актуальна для систем SAP S/4HANA, но может применяться и в любых системах, начиная с платформы SAP Netweaver 7.40 SPS05, независимо от используемой базы данных.

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

Изложенная информация будет полезна при решении задач, связанных с разработкой операционной и аналитической отчётности: самостоятельное создание отчётов, постановка задач для разработчиков ABAP или BW, анализ и использование уже существующих в системе стандартных или пользовательских разработок.

От читателя предполагается начальное знакомство с инструментальными средствами и элементами языка ABAP в объеме учебного SAP-курса BC400: работа с ABAP-словарём, программы, функциональные модули, классы и методы. Также необходимо знакомство с основами SQL.

Некоторые из запланированных в дальнейшем глав публикации будут адресованы разработчикам BW и предполагают владение основными понятиями, используемыми при построении отчётов в BW и при разработке экстракторов.

ПРЕДИСЛОВИЕ

Линейка продуктов компании SAP постоянно пополняется новыми наименованиями, на смену привычным версиям знакомых систем приходят новинки, полностью пересмотренные архитектурно, появляются новшества и в технологиях разработки. Изменений много, происходят они быстро. Порой даже то, что преподносилось как новшество, отходит на второй план и перестаёт развиваться уже в следующем пакете обновлений. В такой ситуации следить за развитием событий, быть в курсе новинок – задача, которая иногда оказывается непростой не только для компаний, использующих продукты SAP, но и для профессиональных консультантов. Знакомиться с новыми продуктами и технологиями работы приходится по презентациям, слайдам, видеороликам. Но такие источники зачастую ограничиваются общими словами и приукрашивают действительность в интересах маркетинга.

Для консультантов здесь возникает разрыв между презентационной информацией о новинках и реальностью их применения, техническими подробностями. Подробностями, которые бы позволили оценить истинные возможности продукта, его технологические преимущества, пути миграции с используемых старых решений, трудозатраты на поддержку и развитие, на переобучение или привлечение новых специалистов. И при этом никто не отменит необходимость для консультанта быть готовым к включению в работу с этими новинками. Причём ожидается, что для бизнес-пользователей качество поддержки и развития новых решений будет как минимум не ниже, чем было с предыдущим поколением систем.

Одной из таких технологий, появившихся сравнительно недавно, продолжающей интенсивное развитие и получающей всё больше практических применений в новейших версиях SAP-систем, является ABAP Core Data Services (CDS). Предлагаемая вниманию читателя работа имеет целью дать первоначальное представление о возможностях этой технологии, привести практические примеры, иллюстрирующие способы разработки и возможности применения CDS. Имея в виду упомянутый разрыв между презентациями и техническими деталями, основной упор сделан именно на практические примеры, которые читатель мог бы самостоятельно воспроизвести в своей тестовой системе.

Первая публикация содержит краткий теоретический обзор: предпосылки возникновения ABAP CDS, «взаимоотношения» этой технологии с классическим OpenSQL. Затем рассматривается понятие виртуальной модели данных (VDM) и на серии простых практических примеров строится небольшая демонстрационная VDM. Параллельно с практическими примерами, по мере их расширения и усложнения, приводятся и краткие теоретические сведения о таких элементах CDS, как аннотации, ассоциации, path expressions.

В дальнейших публикациях планируется рассмотреть такие применения CDS-ракурсов, как построение Fiori-приложений, Query Browser и визуализация с помощью программ линейки SAP BusinessObjects. Также запланирована отдельная серия практических примеров, ориентированных на работу консультантов SAP BW. Методами CDS можно создавать достаточно сложные и функциональные отчёты BW непосредственно на «живых» данных из таблиц транзакционной системы.

Поскольку основной задачей данных публикаций является начальное практическое освоение возможностей ABAP CDS консультантами, то подборку публикаций планируется включить также следующие темы. Они не взаимосвязаны между собой, но могут быть востребованы на практике:

  • Расширение (extending) существующих CDS-ракурсов
  • Опции ABAP Development Tools, делающие работу с CDS более удобной: Dependency Analyzer, Graphical Editor, Active Annotations
  • Табличные функции
  • Работа в CDS-ракурсами в ABAP программах: вывод в ALV. Оптимизация вывода грида с использованием SALV IDA
  • Роли и авторизации через DCL

Оглавление

1. ВВОДНАЯ ИНФОРМАЦИЯ

1.1. Эволюция работы с SQL в ABAP: от Open SQL к Core Data Services

1.1.1 Ограничения при использовании OpenSQL

1.1.2 Новые подходы к разработке приложений в SAP HANA и ABAP CDS

1.1.3 Преимущества ABAP CDS по сравнению с классическими инструментами

1.2. Virtual Data Model

1.2.1 Предпосылки появления VDM

1.2.2 Преимущества VDM в SAP S/4HANA

1.2.3 Виды CDS-ракурсов в VDM. Иерархическая организация VDM

1. ВВОДНАЯ ИНФОРМАЦИЯ

1.1. Эволюция работы с SQL в ABAP: от Open SQL к Core Data Services

1.1.1 Ограничения при использовании OpenSQL

Классическим подходом, реализующим SQL при работе с ABAP Application Server, являлся Open SQL. Это подмножество стандартного SQL, встроенное в язык ABAP.  То есть команды Open SQL можно писать напрямую в ABAP-коде без каких-то специальных мер адаптации. Безусловно, это очень удобный способ работы из ABAP с информацией таблиц БД, но он имеет ряд значительных ограничений по сравнению с полноценным SQL.

Наиболее сильным из таких ограничений является следующее. Команды классического SQL можно разделить на три подмножества:

  • DML – Data Manipulation Language. Содержит команды, выполняющие выборку или изменение данных (SELECT, INSERT, UPDATE, DELETE)
  • DDL – Data Definition Language. Содержит команды, позволяющие создавать или изменять объекты БД. Например – CREATE/ALTER/DROP TABLE
  • DCL – Data Control Language. Содержит команды, позволяющие управлять правами доступа к объектам БД.

Из этих трёх подмножеств в Open SQL реализован только DML. Конструирование объектов БД выполняется через инструментарий ABAP Dictionary (транзакция SE11 и т.п.). А настройки полномочий через DCL вообще нерелевантны для ABAP, так как полномочия пользователей никогда не определяются на уровне объектов БД.

Если же вернуться к DML, то и его стандартные возможности доступны в Open SQL не полностью. Вот только некоторые из возможностей классического DML, недоступные в Open SQL:

  • Команда UNION
  • Условия ветвления (команда CASE)
  • Вычисляемые значения в условиях WHERE
  • Вычисляемые поля в списке после SELECT
  • SQL-функции
  • Full/right outer join
  • Non-equi-join (то есть возможность использования знаков неравенства в условиях WHERE при сравнении значений полей из двух таблиц)
  • Определение ракурсов БД не только на основе таблиц, но и на основе других ракурсов.

Обойти столь жёсткие ограничения позволет использование так называемого Native SQL. В  программном блоке между командами EXEC SQL и ENDEXEC можно написать SQL-выражение, использующее возможности, специфические для той конкретной СУБД, на которой развёрнут сервер приложений. Однако такой подход имеет свои особенности и риски. Наиболее очевидный из которых – невозможность простой миграции такого приложения на другую СУБД.

Есть две основных причины серьёзных коллизий в использовании Open SQL. Во-первых, являясь частью языка ABAP, команды Open SQL должны обеспечивать одинаковый и корректный результат работы вне зависимости от того, на какой СУБД развёрнут сервер приложений. И если какие-то операции DML могут быть по-разному реализованы в различных СУБД (например – округление при арифметических вычислениях), то такие операции исключаются из Open SQL. Во-вторых, при работе с классическими СУБД считается, что для улучшения производительности необходимо максимально переносить вычислительную нагрузку с уровня БД на уровень сервера приложений. А для него не требуются развитые возможности SQL.

1.1.2 Новые подходы к разработке приложений в SAP HANA и ABAP CDS

Появление SAP HANA, с её мощными возможностями обработки больших массивов данных, повлекло фундаментальные изменения в подходах к разработке приложений. Важнейшую роль стал играть перенос на уровень БД той части логики, которая отвечает за массовую обработку данных (так называемая Data-Centric Logic). Для традиционных СУБД такой перенос осуществим лишь частично, для SAP HANA – практически полностью.  Распространённым названием для такого подхода стал термин «Code-to-data», иллюстрируемый на Рис.1:

Рис.1. Перенос логики «Code-to-data»

Перевод картинки:

  • Classic Approach – Классическое выполнение кода
  • Intensive computations in APPLICATION layer – Основные расчёты на сервере приложений
  • Database – База данных
  • Application Programming Models – Программный код приложений
  • Data Centric Approach – Выполнение кода на уровне данных
  • Intensive computations in DATABASE layer – Основные расчёты в СУБД

С появлением SAP HANA также связано и ещё одно важное изменение в разработке приложений. Возможности SAP HANA XS позволяют создавать приложения непосредственно на базе данных, а не на сервере приложений. Такая разработка, в свою очередь, влечёт необходимость в инструментарии работы с метаданными (вместо ABAP Dictionary). Этот инструментарий не может ограничиваться просто созданием таблиц или ракурсов БД. Он должен также обладать широкими возможностями семантического обогащения этих ракурсов. Например, определять удобные словесные названия для полей, выделять специфические поля, содержащие тексты, обозначения языка, валюты, единиц измерения, и т.д. Также появляется необходимость и в определении полномочий напрямую на создаваемых объектах БД. Для решения этих задач SAP предоставил Core Data Services (CDS). CDS – это совокупность из трёх предметно-ориентированных языков, предназначенных для создания и использования семантически обогащённых моделей данных. Задачи, решаемые каждым из этих языков, проиллюстрированы на Рис.2:

Рис.2. Предметно-ориентированные языки в CDS

Перевод картинки:

  • Data modelling and retrieval… – Семантически обогащённое моделирование и представление данных
  • Extends native SQL means… – Расширение возможностей Native SQL для повышенной производительности
  • Consume CDS entities… - Использование CDS-ракурсов в ABAP средствами Open SQL
  • Fully transparent… - Доступные для понимания расширения SQL
  • Define authorizations for… - Создание полномочий для доступа к CDS-ракурсам
  • Modelled and declarative approach – Однократно декларируемые правила доступа к CDS
  • Integrates with classic… - Возможно использование в классических ролях и объектах полномочий

Появление CDS, также как концепции «Code-to data», было мотивировано возможностями SAP HANA. Но они не ограничиваются только этой платформой. С выходом SAP Netweaver 7.40 SP5 впервые стала доступна технология ABAP CDS. В распоряжении консультантов, ведущих разработку на сервере приложений, уже имелся ABAP Dictionary. Но DDL в  ABAP CDS предоставляет разработчику более широкие возможности (об этом чуть ниже). Поэтому логичным стало добавление CDS-сущностей к ABAP-словарю: сначала разработчик с использованием DDL составляет код, определяющий CDS-сущность, а потом в процессе активации этого кода создаётся объект ABAP-словаря. В том числе, такой объект может далее использоваться через Open SQL.

Итак, Data-Centric Logic перенесла массивные вычисления с сервера приложений на уровень БД. CDS расширил возможности использования SQL в программном коде ABAP. И в то же время появился подход, при котором логика работы пользовательского интерфейса (UI Application Logic) стала отделяться от основного приложения, а иногда и переноситься на сторону клиента или отдельного сервера приложений. Разделение UI-логики и бизнес-логики приложений позволило разделить жизненные циклы соответствующих частей программного кода. Всё это вместе привело к архитектурным изменениям, как в системном ландшафте, так и в разработке приложений. Классическое «распределение обязанностей» проиллюстрировано на Рис.3:

Рис.3. В классических SAP-системах вся логика исполняется на сервере приложений

Перевод картинки:

  • UI Rendering – Визуализация интерфейса
  • Presentation Server – Сервер визуализации
  • UI Application Logic – Логика функционирования интерфейса
  • Service Logic – Бизнес-логика приложения
  • Data-Centric Logic – Логика обработки данных
  • Database – База данных
  • Relational Database – Реляционная СУБД
  • Application Server – Сервер приложений

Теперь же описанные инновации изменили картину. Выполнение различных «участков» логики приложений распределилось так, как это показано на Рис.4:

Рис.4. Распределение исполнения логики приложений в современных SAP-системах

Перевод картинки:

  • UI Rendering – Визуализация интерфейса
  • UI & Client Side Application Logic  – Сервер интерфейсной логики и визуализации
  • UI Application Logic – Логика функционирования интерфейса
  • Service Logic – Бизнес-логика приложения
  • Application Server ABAP – Сервер приложений ABAP
  • Data-Centric Logic – Логика обработки данных
  • Database – База данных
  • CDS ABAP (as part of ABAP Dictionary) – CDS ABAP (в составе ABAP-словаря)
  • Database Schema – Схема БД
  • (Any) Database – База данных (в.т.ч SAP HANA)

1.1.3 Преимущества ABAP CDS по сравнению с классическими инструментами

Какие же преимущества даёт DDL в ABAP CDS по сравнению с традиционным созданием ракурсов БД через ABAP-словарь? Есть изменения, связанные непосредственно с возможностями определения ракурсов. Эти новшества проиллюстрированы на Рис.5:

Рис. 5. ABAP Dictionary vs ABAP CDS

Перевод картинки:

  • ABAP Dictionary Views – Ракурсы ABAP-словаря
  • ABAP CDS Views – CDS-ракурсы
  • Support on all DBMSs – Поддерживается на всех СУБД
  • inner join & simple selection only – только inner join и простые выборки
  • not supported – не поддерживается
  • Calculation expressions, aggregation, grouping – Вычисляемые выражения, агрегация, группировка
  • Nested views (on views)  – Ракурсы, вложенные друг в друга

Но помимо этого, появляются ещё и возможности, ранее недоступные при разработке приложений:

  • Аннотации (Annotations) для обогащения модели данных дополнительными метаданными. В том числе, можно добавлять семантическую информацию для приложений-потребителей (аналитические приложения, OData-сервисы, SAP UI5)
  • Определение семантических взаимосвязей между CDS-объектами, которое при компиляции кода транслируется в JOIN. Такие взаимосвязи называют ассоциациями (Associations).
  • Определение полномочий для доступа к CDS-объектам
  • Выражения, используемые для вычислений и подзапросов в модели данных

Схематически эти возможности проиллюстрированы на Рис.6:

Рис.6. Возможности семантического обогащения данных в CDS DDL

Перевод картинки:

  • Entities with… – Структурные и пользовательские типы данных
  • Associations… – Ассоциации, т.е. семантические взаимосвязи
  • Calculated Fields… - Определение расчётных полей внутри модели данных
  • Annotations – Аннотации для обогащения метаданных

Возможности DDL постоянно расширяются. Это необходимо учитывать при изучении примеров, приведённых в дальнейших разделах. Например, только в Netweaver 7.5 появилась поддержка таких возможностей, как Foreign Keys, Table Functions, Graphical Editor, OData и публикация в Fiori

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти

Обсуждения Количество комментариев2

Комментарий от  

Михаил Вронский

  |  01 ноября 2018, 18:47

Большое спасибо за статью. Написана хорошим языком, даны правильные формулировки - с полнотой и логической последовательностью.

Комментарий от  

Сергей Разин

  |  14 апреля 2022, 11:20

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