こちらのブログでは、SAP Datasphereで4月始まりのカレンダテーブルの作成方法について解説します。
はじめに
SAP Datasphereでは標準カレンダの暦として1月1日を始めとするグレゴリオ暦を採用しています。会計年度が1月始まりの場合はSAP Datasphereがもつ標準のカレンダで対応できますが、4月を年度始めとする企業が多い日本では会計年度に基づく分析を行う際には別途会計期間に沿ったカレンダを作成する必要があります。そういった場面でご活用頂ける4月始まりのカレンダテーブルの作成方法をこちらのブログでご紹介します。
SAP Datasphereの基盤であるSAP HANA Cloud上には、会計年度バリアント(会計伝票を転記できる期間)を指定することでそれに基づくカレンダを作成可能なUPDATE_FISCAL_CALENDARという名称のプロシージャが備わっています。今回はこのプロシージャを活用することで4月始まりのカレンダテーブルの作成を行います。(会計年度バリアントを変更することで4月始まり以外の会計機関にも柔軟に対応可能です。)
*本ブログは
こちらのブログを参考に書かれています。
*手順を進めるに当たり、SAP S/4HANAとの接続作成およびDP Agentの設定が必須です。インストール手順に関しては
こちらのブログを参照下さい
*また、本ブログでは以下を前提としています。バージョンの相違にご注意ください。
- SAP Datasphere:2023.16.49
- DP Agent :2.6.3.3
- SAP S/4HANA 2022
手順は以下の4つに分けてご説明します。
STEP1. 会計年度バリアントのメタデータをS/4HANAからインポート
STEP2. Open SQL スキーマへアクセス
STEP3. カレンダテーブルの作成
STEP4. カレンダテーブルの活用例

手順を始める前に、SAP S/4HANAにログインし会計年度バリアントを確認します。このステップを踏むことで、会計年度バリアント毎の期間を確認することが出来るので、適切な会計期間の開始時期を選択することが出来ます。トランザクションコードOB29で確認出来ます。
4月始まりの会計年度は「V3の会計年度バリアントを使用する」という事が確認できますので、本ブログではこちらを使用します。

STEP1. 会計年度バリアントのメタデータをS/4HANAからインポート
以下の2つをSTEP1で行います。
- S/4HANAからテーブルをインポート
- インポートしたテーブルを基にwrapper viewを作成
SAP S/4HANA上のT009とT009Bテーブルのメタデータをインポートすることで、Datasphere上にリモートテーブル(仮想テーブル)を作成します。(データビルダ >リモートテーブルをインポート)

使用するSAP S/4HANAへの接続を選択します。

T009およびT009Bの2つのテーブルを選択し、インポートを行います。
(ABAP Tables by table name> T..> T0..> T00)


選択したテーブルを確認し、問題が無ければ”インポートして配置”を行います。

“はじめに”でご紹介したUPDATE_FISCAL_CALENDARのプロシージャはOpen SQLスキーマからのみ呼び出すことが可能です。そのため、インポートした2つのテーブルT009およびT009Bを使用してプロシージャの実行をする為にはOpen SQLスキーマに公開する必要があります。Open SQL スキーマへはビューでのみ公開可能なため、T009およびT009Bに対するビュー(wrapper view)を作成します。
ビューの作成は下図のように先程インポートしたT009とT009Bのそれぞれのテーブルに対してグラフィックビューを作成し、デプロイします。 以下の図のようにリポジトリを選択した上で、「会計年度バリアント」と検索すると両方のテーブルが検索できます。今回はLV_009とLV_009Bをビジネス名および技術名につけ、「利用として公開」をオンにします。(データビルダ> 新しいグラフィックビュー>リポジトリ>「会計年度バリアント」)


STEP2. Open SQLスキーマへのアクセス
プロシージャ UPDATE_FISCAL_CALENDARを実行するためには、Open SQLにアクセスする為のデータベースユーザをスペース内に作成する必要があります。このデータベースユーザはSAP Datasphere上のユーザやスペースに対するメンバーとは異なります。データベースユーザの作成は以下のように行えます。(スペース管理>データベースアクセス>作成)

データベースユーザの作成において以下のオプションを入力/選択します。
- データベースユーザ名の接尾辞
- 読み込みアクセスを有効化(SQL)
- 書き込みアクセスを有効化(SQL,DDL, およびDML)

上記で作成したデータベースユーザを選択し、「データベースエクスプローラーを開く」ことでOpen SQLスキーマへ接続を行うことができます。この際にパスワードを取得する必要がありますが、こちらは右側に見えるiのアイコンから「新しいパスワードを要求」をクリックすると、パスワードを要求・コピーする事ができます。


SAP HANA データベースエクスプローラでOpen SQL スキーマを開くと、鍵マークの付いたアイコンが表示されます。こちらを選択し先程コピー頂いたパスワードを入力することで、Open SQL スキーマにアクセスすることが出来ます。


STEP3. カレンダテーブルの作成
ここでは、以下の4つを行います。
- STEP1で作成したwrapper viewを基にテーブルを作成
- 作成したテーブルに対してシノニムを作成
- プロシージャのターゲットテーブルを作成
- シノニムを使用してターゲットテーブルに対してプロシージャの実行
まず初めに、wrapper viewを元にテーブルをOpen SQL スキーマ内に作成し、そのテーブルに対してシノニムの作成を行います。こちらは余計な手順を挟んでいるように感じるかもしれませんが、前提条件として満たさなければなりません。
CREATE TABLE TABLE_T009 AS (SELECT * FROM JAPAN_PDM.LV_T009);
CREATE TABLE TABLE_T009B AS (SELECT * FROM JAPAN_PDM.LV_T009B);
CREATE SYNONYM SYN_T009 FOR TABLE_T009;
CREATE SYNONYM SYN_T009B FOR TABLE_T009B;
カレンダテーブル作成に使用するUPDATE_FISCAL_CALENDARのプロシージャを実行するために、ターゲットテーブルを以下のように作成します。
CREATE COLUMN TABLE "FISCAL_CALENDAR_SAP"(
"CALENDAR_VARIANT" NVARCHAR(2),
"DATE" NVARCHAR(8),
"DATE_SQL" DATE,
"FISCAL_YEAR" NVARCHAR(4),
"FISCAL_PERIOD" NVARCHAR(3),
"CURRENT_YEAR_ADJUSTMENT" NVARCHAR(2),
PRIMARY KEY INVERTED INDIVISUAL(
"CALENDAR_VARIANT",
“DATE”
)
);
最後にUPDATE_FISCAL_CALENDARのプロシージャを呼び出します。以下のSQLを使用し、必要に応じてパラメータを調整します。“はじめに”のパートでSAP S/4HANA上で確認した4月始まりの会計期間であるV3を会計年度バリアント (FISCAL_VARIANT)を指定します。
CALL “UPDATE_FISCAL_CALENDAR”(
T009_SYNONYM_NAME => ‘SYN_T009’/*<NVARCHAR(256)>*/,
T009B_SYNONYM_NAME => ‘SYN_T009B’/*<NVARCHAR(256)>*/,
T009_SCHEMA_NAME => ‘JAPAN_PDM#YASUTOMI’/*<NVARCHAR(256)>, スキーマ名*/,
FISCAL_VARIANT => ‘V3’/*V3→4月始まり*/,
FROM_YEAR => ‘2020’/*<NVARCHAR(4)>, 始まりの年*/,
TO_YEAR => ‘2030’/*<NVARCHAR(4)>, 終わりの年*/,
CLIENT => ‘400’/*<NVARCHAR(3)>*/,
TARGET_SCHEMA_NAME => ‘JAPAN_PDM#YASUTOMI '/*<NVARCHAR(256)>, スキーマ名*/,
TARGET_TABLE_NAME => 'FISCAL_CALENDAR_SAP'/*<NVARCHAR(256)>*/,
WITH_LEADING_ZEROS => 0 /*<TINYINT>、0 または 1 を使用 */
);
問題なくプロシージャの実行が出来ると以下のように表示されます。

それでは、Open SQL スキーマ内に作成したFISCAL_CALENDAR_SAPテーブルを元にビューを作成します。
新しいグラフィックビューの作成を開き、「ソース」を選択します。STEP2で使用したデータベースユーザを選択すると、Open SQL スキーマ内で作成したテーブルが表示されます。FISCAL_CALENDAR_SAPテーブルを選択し、ドラッグアンドドロップで中央のキャンバスに移動させることでビューを作成可能です。(データビルダ>グラフィックビュー>ソース>スキーマ名)
また、データプレビューを行う事で4月始まりのカレンダが生成されたことが確認頂けます。

STEP4. カレンダテーブルの活用例
ここからは生成したカレンダテーブルの活用の1例の紹介となっており、以下の5つの手順を行います。
- カレンダテーブルに会計半期・会計四半期を追加
- ディメンションビューの作成と階層構造・ビジネス名の定義
- ファクトビューの作成とアソシエーションの定義
- SAP Analytics Cloudでストーリー作成
1.カレンダテーブルに会計半期・会計四半期を追加
今回は例として、会計半期・会計四半期の項目を新たに追加します。
再度Open SQL スキーマに入り、以下のSQLを参考に必要に応じてパラメータを調整した上で実行します。
alter table “JAPAN_PDM#YASUTOMI’"."FISCAL_CALENDAR_SAP"
add ("DATE_YEARMONTH" NVARCHAR(6) generated always as substring("DATE", 1, 6));
alter table " JAPAN_PDM#YASUTOMI’"."FISCAL_CALENDAR_SAP"
add ("DATE_MONTH" DECIMAL(2) generated always as substring("DATE", 5, 2));
alter table " JAPAN_PDM#YASUTOMI’"."FISCAL_CALENDAR_SAP"
add ("FISCAL_QUARTER" NVARCHAR(2) generated always as case
when "FISCAL_PERIOD" in ('1','2','3') then 'Q1’
when "FISCAL_PERIOD" in ('4','5','6') then 'Q2’
when "FISCAL_PERIOD" in ('7','8','9') then 'Q3’
else 'Q4' end
);
alter table " JAPAN_PDM#YASUTOMI’"."FISCAL_CALENDAR_SAP"
add ("FISCAL_HALF" NVARCHAR(2) generated always as case
when "FISCAL_PERIOD" in ('1','2','3','4','5','6’)
then 'H1' else 'H2' end
);

2. ディメンションビューの作成と階層構造・ビジネス名の定義
FISCAL_CALENDAR_SAPテーブルを元にビューを作成し、時間ディメンションとして使用するためにセマンティック用途でディメンションを選択します。 また、SAP Analytics Cloudからアクセスを許可するために「利用のために公開」をオンに変更し、属性のビジネス名を編集するためにペンのアイコンからビジネス名の編集を行います。

ビジネス名は以下のように変更します。
(CURRENT_YEAR_ADJUSTMENTは使用しない為、チェックを解除し非表示にします。)
- 会計年度バリアント
- 年月日_テキスト
- 年月日
- 会計年度
- 会計期間
- カレンダ年月
- カレンダ月
- 会計四半期
- 会計半期

次に、階層のアイコンから「レベルベース階層」を選択します。


会計年度>会計半期>会計四半期>カレンダ月の順に定義します。階層の高い順から指定することで、SAP Analytics Cloudで分析を行う際に時間軸でのドリルダウン/ドリルアップを行うことが出来るようになります。階層に対してビジネス名および技術名を指定し、「閉じる」を押します。

最後に、ビジネス名の変更、階層の定義が終わればビューに対してビジネス名に「時間ディメンション」、技術名に「D_Time」を付けデプロイを行います。

3. ファクトビューの作成とアソシエーションの定義
今回はサンプルデータを基にファクトビューの作成を行いますが、S/4HANAの会計データ等とも連携して頂けます。

アソシエーションを追加し、先ほど作成した会計カレンダ(時間ディメンション)との紐づけを行います。

また、以下のようにマッピングを行うことで「2.階層構造・ビジネス名を定義」で作成した時間軸の階層と関連付けを行います。

このファクトビューのデプロイを行い、分析モデルを作成します。先ほど関連付を行った階層を確認して頂くことができます。

4. SAP Analytics Cloudでストーリー作成
作成した分析モデルにアクセスを行い、ストーリーの作成を行います。以下は1つの例となりますが、新たに追加した半期・四半期の項目や階層を活用した分析が行って頂けるのが確認できるかと思います。

さいごに
最後までお読みいただきありがとうございました!
以下に参考としてSAP Help Portalのリンクを掲載しておりますので、併せてご確認ください。
**A huge thanks to Haruki-san!