Skip to Content

2018年5月24日に行われたSAP Tech JAMの会場案内用アプリ開発に使用した

プロダクトに関して記載しています。

 

会場案内アプリではSAP Cloud PlatformのHANA DBに作成したテーブルから

ODataサービスを利用したCRUD操作を行いました。

 

本記事ではSAP HANA CalculationView作成の

手順について説明します。

CalculationViewには様々な機能がありますが、

ここでは複数テーブルのJOINを行えるJoinNodeを使用した

CalculationViewを作成します。

【内容】

  1. CalculationViewの作成
  2. ODataサービス設定

 

【前提】

以下のブログを参考に、SAP CloudPlatform上のHANA DBにテーブルを作成してください。

SAP CP Trial環境のHANA DB設定

 

 

 

1.CalculationViewの作成

 

SAP CloudPlatformのNeo環境へアクセスします。

【前提】欄記載の手順に従い作成したMDCを起動し、

SAP HANA Web-based Development Workbenchへアクセスします。

 

Editorを押下します。

 

demoを選択し右クリック→New→Packageを押下し、

demoパッケージ配下に新規パッケージを作成します。

Package名 views

 

demoを選択し右クリック→New→CalculationViewを押下します。

表示されるモーダルに必要項目を入力し、Createを押下します。

パラメータは以下の通りです。

項目 設定値
Name demoJoin
radioButton Graphical
Data Category  CUBE

 

作成したdemoJoin.calculationviewを押下し、エディターを表示します。

 

 

editor左上のツールバーからJoinNodeを選択し、

上記画像を参考にドラッグ&ドロップします。

Join _1が作成されます。

 

上記+ボタンを押下します。

表示されたモーダルで「PRODUCTMASTER」を選択し、OKを押下します。

同様の手順で「MAKERMASTER」をJoin_1に追加します。

 

PRODUCTMASTER・MAKERMASTERを追加後、

Mappingタブを押下します。

 

Mappingタブでは、データソースとして指定されたカラムのうち、

Outputとなる項目を設定することができます。

今回はPRODUCTMASTERの全カラムとMAKERMASTERのNAMEカラムをOutputに設定します。

左側のData Souecesから必要項目をOutput Columnsにドラッグ&ドロップします。

 

MAKERMASTERのNAMEカラムはPRODUCTMASTERのNAMEカラムと名称が重複するため、

Outputでは「MAKER_NAME」という名称に変更します。

 

次に、Join Definitionタブを選択します。

ここではJOIN対象となるテーブルのリレーションを設定します。

PURODUCTMASTERのMAKER_IDをドラッグし、MAKERMASTERのIDと紐づけます。

2つの項目が矢印で接続されたことを確認します。

 

接続された矢印を選択すると、画面下部にPropertiesが表示されるので、

以下のパラメータを変更します。

項目 設定値
Cardinality n..1

 

Join Definitionの設定まで行うと、JoinNodeの作成は完了です。

作成したJoin_1のNodeをAggregationへ紐づけます。

上記画像を参考にNode横の矢印ボタンをドラッグ&ドロップしてください。

 

AggregationではJoinNodeと同様に、MappingタブでOutput Columnsを設定します。

 

上記を設定の上、保存ボタンもしくはCtrl+sで保存します。

編集内容の保存には成功しますが、有効化には失敗し、

以下のエラーメッセージが表示されると思います。

demo.views:demoJoin.calculationview] Repository: Encountered an error in repository runtime extension;Model inconsistency. Create Scenario failed: The following errors occurred: user is not authorized (2950)

 

このエラーは権限が不足しているために起こるエラーです。

エラー解消のため、以下の手順を実行します。

Development Workbenchトップ画面からSecurity画面へ遷移します。

Users→_SYS_REPOを選択し、Object Privilegesタブを押下します。

「+」ボタンを押下し、DEMO_USERを追加します。

追加したDEMO_USERのPrivilegesでCREATE_ANY・SELECTにチェックを入れ、

それぞれのGrantable to Others項目を「Yes」に変更します。

上記を設定後、変更を保存します。

 

先程作成したCalculationViewファイルを選択し、右クリック→Activateを押下します。

コンソールに以下の文言が表示されれば有効化に成功しています。

 File /demo/views/demoJoin.calculationview saved & activated successfully.

 

有効化をできたCalculationViewを実行します。

画面上部の実行ボタンを押下し、JOINされたデータが表示されるのを確認してください。

 

2.ODataサービス設定

【前提】欄記載の手順に従い作成したdemo.xsodataファイルを編集します。

// 変更前
service { 
    "DEMO_USER"."MAKERMASTER" as "makerdata";
    "DEMO_USER"."PRODUCTMASTER" as "productdata";
}
// 変更後
service { 
    "DEMO_USER"."MAKERMASTER" as "makerdata";
    "DEMO_USER"."PRODUCTMASTER" as "productdata";
    "_SYS_BIC"."demo.views/demoJoin" as "demoJoin" keys("ID");
}

上記内容に変更し、demo.xsodataを更新します。

 

更新後、実行ボタン押下でdemoJoinのデータが返却されることを確認します。

(実行ボタン押下後のURL末尾に”/demoJoin”を追記することでデータ内容を確認できます。)

 

以上の手順でCalculationViewの作成とODataサービス作成までを説明させていただきました。

投稿内容に関する質問・ご指摘等いただければ幸いです。

 

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply