Академический Документы
Профессиональный Документы
Культура Документы
Определение
ракурсов и профилей в
репозитарии. (S4D430)
Оглавление
ABAP CDS. Определение ракурсов и профилей в репозитарии. (S4D430) ..................... 1
0. Зачем это нужно ............................................................................................................................. 2
1. Введение ......................................................................................................................................... 4
2. Основы CDS view ........................................................................................................................... 6
3. Простые возможности: вычисление, соединения, объединения .......................................... 7
3.1. Вычислимые поля ....................................................................................................................... 7
3.2. Агрегатные функции ................................................................................................................... 9
3.3. Соединения и объединения ...................................................................................................... 9
4. Дальше — больше ....................................................................................................................... 10
4.1. Передача параметров .............................................................................................................. 10
4.2. Ассоциации ................................................................................................................................ 10
4.3. Расширения ............................................................................................................................... 12
4.4. Фильтрация по полномочиям ................................................................................................. 13
5. Табличные функции. Только для SAP HANA .......................................................................... 14
6. Использование CDS view............................................................................................................ 15
7. Заключение ................................................................................................................................... 16
1
0. Зачем это нужно
Начиная с версии 7.4 в SAP Net Weaver можно создавать в репозитарии
новые категории объектов — описания Core Data Services (CDS),
позволяющие:
2
данным (Data Control Language, DCL), язык управления транзакциями
(Transaction Control Language, TCL).
3
1. Введение
ABAP Core Data Services создаются средствами ABAP Development Tools
(ADT) в среде разработке Eclipse (перспектива “ABAP”). CDS нельзя
создать с помощью транзакций разработчика, подобных SE11 или SE80,
хотя во многих случаях в этих транзакциях можно увидеть (некоторые,
часто многие) результаты. При работе в ADT сначала создается проект, в
котором указывается, в какой SAP системе, в каком манданте и каким
пользователем ведется работа. Все, что ABAP-разработчик может
сделать с помощью «разработческих» транзакций (например SE80) можно
сделать с помощью ADT, помимо собственных инструментов ADT
позволяет использовать транзакции, но кроме того ADT предоставляет
инструменты для создания, ведения и других объектов разработки. Часть
таких возможностей изучается на семинаре HA400. Программирование
для SAP HANA на ABAP . Подробнее об этом семинаре можно прочесть в
статье ABAP для HANA. (HA400); следует заметить, что с момента выхода
этой статьи из семинара HA400 был исключен ряд тем и семинар стал
трехдневным.
@AbapCatalog.sqlViewName: 'ZQK1_A'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '2.05. Annotations'
@ClientDependent: true
@AbapCatalog.buffering.type: #GENERIC
@AbapCatalog.buffering.numberOfKeyFields: 1
@AbapCatalog.buffering.status: #ACTIVE
4
define view ZQK1_B as
select from spfli as a
inner join sflight as b
on a.carrid = b.carrid
and a.connid = b.connid
{ key a.carrid
, key b.connid
, key b.fldate
, paymentsum @<Semantics.amount.currencyCode: 'CURRENCY'
, currency @<Semantics.currencyCode: true
, @Semantics.amount.currencyCode: 'CURRENCY'
price @<EndUserText.label: 'Price(label)'
@<EndUserText.quickInfo: 'Price(quickInfo)'
} where currency = 'JPY'
Первый символ аннотации всегда @. Аннотации могут предшествовать
тому, что они аннотируют, а могут следовать за аннотируемым, в
последнем случае, они начинаются с двух символов @<. В ADT весьма
удобно сделано выделение цветом различных элементов. Нотация CDS-
описания соответствует, но не совпадает с SQL, например, приведенной
выше CDS соответствует следующий SQL-оператор,
CREATE VIEW "ZQK1_A" AS SELECT
"A"."MANDT" AS "MANDT",
"A"."CARRID",
"B"."CONNID",
"B"."FLDATE",
"B"."PAYMENTSUM",
"B"."CURRENCY",
"B"."PRICE"
FROM "SPFLI" "A" INNER JOIN "SFLIGHT" "B" ON (
"A"."CARRID" = "B"."CARRID" AND
"A"."CONNID" = "B"."CONNID" AND
"A"."MANDT" = "B"."MANDT"
5
)
WHERE "B"."CURRENCY" = N'JPY'
6
3. Простые возможности: вычисление,
соединения, объединения
Вычислимые поля и агрегатные функции позволяют перенести
вычисления с уровня приложения на уровень базы данных, что может
быть особенно выгодно для высокопроизводительных баз данных.
7
, source_unit => distid
, target_unit => cast( 'KM' as abap.unit ) )
end as dist_km
}
8
)
END AS "DIST_KM"
FROM "SPFLI" "SPFLI"
В вычислимых полях возможны две формы CASE (факультативные
синтаксические элементы даны в курсивом в квадратных скобках):
CASE операнд
WHEN операнд_1 THEN результат_1
[WHEN операнд_2 THEN результат_2
...]
[ELSE результат_n]
END ...
9
В то время, как в Словаре Данных нельзя создать ракурс базы данных,
использующий результаты других ракурсов, в CDS аналогичная вещь
вполне возможна: можно определить такие CDS view, источником данных
для которых будут другие CDS view.
4. Дальше — больше
4.1. Передача параметров
На уровне базы данных можно оперировать со значениями, полученными
с сервера приложений, например производить вычисления. Для этого
можно создать CDS view с параметрами. Передавать значения
параметрам CDS view можно из ABAP программы, для этого в
командe SELECT во фразе WHERE следует указать значения,
передаваемые соответствующим параметрам. Аналогично (с точностью
до синтаксических отличий) можно передавать параметры из одного CDS
view в другое. Параметры могут быть только скалярными; структуры и
таблиц в качестве параметров недопустимы.
4.2. Ассоциации
При определении CDS view можно установить ассоциации между
источниками данных. В принципе результат ассоциации логически
подобен соединению (если специально не указано иное, то именно
левому внешнему соединению), но представляет более компактную
форму записи или, если угодно, ассоциация это «ленивое» соединение, а
в случае открытой ассоциации (об этом чуть дальше) это - ассоциация по
запросу. Ассоциации можно, но не обязательно, присвоить псевдоним, это
бывает удобно, если имена источников длинны и/или непонятны. При
ассоциациях можно в квадратных скобках указать кардинальность
(например, [*], [1], [0..1], [1..n]); кардинальность может быть полезна как
элемент смыслового описания. В частности, предупреждения в редакторе
CDS могут зависеть от выбранной кардинальности.
Открытые ассоциации не содержат полей ассоциируемых источников и
потому не участвуют в соответствующих SQL-операторах CREATE VIEW и
10
не видны при предъявлении результатов, например, по кнопке F8 или в
транзакции SE11. Зато в запросах из ABAP можно указать любые поля из
открытых ассоциаций, надо только перед именем этих полей указать
путевое выражение, в итоге обращение к полю ассоциированного
источника будет иметь формат \ассоциация-поле. В запросе к базе
данных появятся соответствующие соединения и затребованные поля,
что можно увидеть при SQL-трассировке в транзакции ST05.
4.3. Расширения
Свой собственный CDS view можно изменить. А вот те CDS view, которые
создал другой производитель, например, SAP или третья фирма, просто
так не изменишь, потому что от поставщика может прийти новая версия, и
тогда, если вы его изменяли, то все ваши изменения погибнут. Поэтому
для CDS view, как и для многих других типов объектов разработки
предусмотрена возможность расширения. Расширение это создание
своих объектов разработки в своем диапазоне имен; эти расширения
соотнесены с расширяемым объектом. Когда (и если) от поставщика
придет новая версия объекта разработки, к ней будет применено то, что
указано в расширении.
12
on условия
{ новые_поля
}...
дает результат:
13
where actvt < '03';
}
Кроме того, что такие методы могут определять хранимые процедуры, они
могут также определять табличные функции, для чего в определении
метода следует написать:
14
В имплементации метода для табличной функции используется
конструкция:
method имя_метода
BY DATABASE FUNCTION
FOR HDB LANGUAGE SQLSCRIPT
OPTIONS READ-ONLY
USING источник
.
Может возникнуть вопрос, а зачем такие сложности, тем более что это все
работает только с одной базой данных, то есть теряется платформенная
независимость. Вот как раз ради того, чтобы воспользоваться приятными
особенностями этой конкретной базы данных. Например, SAP HANA
предоставляет не пять, а двадцать две агрегатные функции, языковый и
нестрогий текстовые поиски и другие дополнительные возможности.
Кроме того можно использовать CDS view как источники данных для SAP
Fiori.
7. Заключение
Мы кратко рассмотрели содержание семинара S4D430. Создание
ракурсов Core Data Services ABAP (CDS ABAP). Семинар продолжается
3 дня, включает 16 упражнений. CDS табличные функции доступны только
при использовании базы данных SAP HANA, остальные возможности
доступны в SAP NetWeaver версии 7.4 независимо от платформы.
Семинар необходим ABAP-разработчикам, консультантам в области
разработки на ABAP и руководителям разработок, нужен специалистам
по поддержке и консультантам в прикладной области для разумной
постановки заданий на разработку.
Для того, чтобы от данного семинара был толк, непременно необходимо
обладать знаниями, излагаемыми на семинарах BC400.Введение в
инструментальные средства ABAP (подробнее) или S4D400 -
16
Introduction to ABAP Programming for SAP S/4HANA и полезно
знать BC430.Словарь-справочник (подробнее).
https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abencds.htm.
17