アグリゲーションビューの編集
2. アグリゲーションビューの編集
2. アグリゲーションビューの編集
① 以下の内容を参考にアノテーションを編集していきましょう。
| アノテーションの種類 | 内容 | 値 |
|---|---|---|
| @AbapCatalog.sqlViewName | ABAPディクショナリに登録される、CDSビュー名となる | ZIYYMMnnn_sum |
| @AbapCatalog.compiler.compareFilter |
〇フィルターの評価の仕方 ・TRUE: The filter conditions are compared and, if they match, the associated join expression is evaluated only once. ・FALSE: A separate join expression is created and evaluated for each filter condition. |
True |
| @AbapCatalog.preserveKey | 参照するテーブルのKeyをCDSビューのKeyとする | True |
| @AccessControl.authorizationCheck | ABAPから呼ばれた場合の権限チェック | #NOT_REQUIRED |
| @EndUserText.label | CDSビューの内容説明(60文字) | 任意 |
このように、アノテーションの編集まではベーシックビューと同じ流れで作成していきます。
② 定義部分(データ取得元テーブル、項目定義)の編集を行います。
| 変更概要 | 変更箇所 | 変更値 |
|---|---|---|
| data_source_name |
define view ZIYYMMnnn_SAMP_SUM as select from data_source_name |
define view ZIYYMMnnn_SAMP_SUM as select from zpayment |
| 集計単位 | – |
group by payer_id, currency |
| 項目 |
{ } |
{ //zpayment key payer_id as payer_id, @Semantics.amount.currencyCode:’currency’ sum(amount) as amount_sum currency as currency } |
❏ ビューの確認
今回のサンプルビューは、支払テーブル(zpayment) にある複数の明細から支払金額(amount) を 支払者(payer_id) × 通貨(currency) ごとに合計する「集計ビュー(Aggregation View)」です。
❏ ビューの確認
・データソース:zpayment
支払履歴(amount、currency、payer_idなど)を保持するテーブルです。同じ payer_id で複数の支払行が存在するため、それらを SUM() で合計しています。
・GROUP BY句
集計関数(SUM、COUNT、MAXなど)を使用する場合、集計対象外の項目はすべてGROUP BYに含める必要があります。
ここでは、payer_idとcurrencyを GROUP BY に含める
ことで amount_sum が成り立っています。
通貨を扱う際に用いられるABAP注釈(アノテーション)についてみてみましょう。
@Semantics.amount.currencyCodeとは?
金額のデータに対して、通貨コードを指定するためのアノテーションです。
通常、出力項目に通貨コードがある場合、金額の通貨コードは自動で設定されます。
しかし、金額に対して処理を加えている場合などは通貨コードが自動で設定されないため
通貨コードを明示的に指定しなければいけません。
今回は、出力項目「currency」を通貨コードに指定しています。
集計処理の特徴をみてみましょう。
SUM関数とは?
SUM関数は、指定した列の値を合計します。合計する単位は、GROUP BYで指定します。
今回は、支払者ID(payer_id)と通貨コード(currency)ごとに金額(amount)を合計しています。
また、集計(合計・平均・件数など)処理では、(出力項目の)集計項目以外の全項目をGROUP BYに記載する必要があります。
(チェック Ctrl + F2) を押下します。
(有効化 Ctrl + F3) を押下します。
これで、アグリゲーションビューが編集されました。