アグリゲーションビューの編集

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) を押下します。

これで、アグリゲーションビューが編集されました。


NEXT>> 3. アグリゲーションビューの実行

研修の詳細はこちら