SAP CP Trial環境でMulti Target Applicationを作ってみる【DBModuleの作り方】

# はじめに

前回、SAP CloudPlatform Trial環境でMTA(Multi Target Application)を作成して
Cloud Foundry環境へSAPUI5アプリをデプロイするところまで試してみました。

【前回】
　[新しくなったSAP CloudPlatform Trial環境にSAPUI5アプリをデプロイしてみた](https://qiita.com/yonekura-h/items/3c53d8129a2cf25ab939)

UI部分の作成方法に続いて、
DB ModuleやJavaアプリケーションを用いて
　DB　⇔　OData　⇔　Fiori
の連携を実現できるMTAプロジェクト作成を目指します。

※※
MTAアプリケーションとは？
　[参考URL](https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/d04fc0e2ad894545aebfd7126384307c.html)
※※

今回はSAP CloudPlatformのTrial環境上でMTAのDB Moduleを作成してみます。
※Trial環境の事前準備等は前回記事参照

# HANA HDI Containerのインスタンス作成
WebIDEでのMTAプロジェクト作成を行う前に事前準備として
HDI Containerのサービスインスタンス生成を行います。

SAP CloudPlatformのコクピットにアクセスし、
サブアカウント(trial) > スペース(dev)の管理画面に遷移します。

↓サブアカウント(trial)
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/17e0a08a-65d2-798a-9d02-67678d2df097.png)

↓スペース(dev)
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/6030ded6-fe01-ffca-6138-188246ead449.png)


スペース(dev)管理画面の右側メニューにある「Service MarketPlace」を押下します。
Cloud Foundry環境のサービス一覧が表示されるので、その中から「SAP HANA Schemas & HDI Containers (Trial)」を選択します。

![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/a7cba24c-848d-ad6c-2f46-32a6638ae1bc.png)

「SAP HANA Schemas & HDI Containers (Trial)」のサービス管理画面で「Instances」を押下し、
「New Instance」でサービスインスタンスを生成します。
![図5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/b5d03259-04ab-e399-ff53-eb9c05e96c09.png)

立ち上がってくるダイアログ画面で以下のように設定します。

Planを`hdi-shered`選択し、Next
![図6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/43dc11c4-f711-135d-d634-b93dc3bf36b6.png)


2つめ、3つめの画面では設定せずにNext押下、
最後にInstance Nameを設定し、Finish
（`demoShered`という名前でインスタンスを生成）
![図9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/95af537b-5055-a8d8-46e8-a14792af1b52.png)

以下のようなダイアログが表示された場合はOK押下
![図10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/2b461596-03b0-8f63-fa34-8959811e8397.png)


Instanceの一覧に新しいインスタンスが表示され、
ステータスが`Created`になったら完了です。
![図11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/e9ce0b7b-97a8-1af0-f8df-5891ad039de1.png)

# MTAプロジェクトの作成
HDI Containerを作成が完了したら、
次はTrial環境のWebIDEにアクセスします。

※※
WebIDEでCF環境の開発を行う事前準備として、
[CF環境設定](https://qiita.com/yonekura-h/items/3c53d8129a2cf25ab939#cf%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A)が必要です。
※※

[MTAプロジェクトの作成](https://qiita.com/yonekura-h/items/3c53d8129a2cf25ab939#mta%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)を参考にMTAプロジェクトを作成します。

今回は`demoApp`という名称
いったん、UI部分は作成しないため、
~~「Use HTML5 Application Repository」のチェックをつけていません。~~
最終的にはUI部分も作成するため、「Use HTML5 Application Repository」のチェックはつけておいたほうがいいです。
※チェックをつける/つけないでなにが変わるのかは[こちら](https://qiita.com/yonekura-h/items/e1a1d94c63ad08bdc18a)参照

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/77d4a18e-836f-e32d-7293-01e1cf1a0eb5.png)


下図の通り、`mta.yaml`のみのプロジェクトが作成されます。
![図13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/467680f4-fe17-6d0e-fa55-eb4e1d636802.png)


# DBModuleの作成

`demoApp`プロジェクトを右クリック→「New」→「SAP HANA Database Module」を押下します。
![図14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/b72765eb-e294-8e78-c018-c41f883a85bf.png)

名称（`demoDBMod`）を入力しNext
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/fd70cb81-0421-9d32-76b0-bbcbf3c45129.png)

SchemaName（`demoSchema`）を入力しFinish
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/225264fc-bd27-d96c-a5fe-74152b83d0f3.png)

`demoDBMod`のディレクトリが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/346af2ab-758d-e79b-85f8-e6dcc0e32643.png)



# HDI Containerの操作

DBModuleは作成できましたが、
HDI Containerの中身については何も準備できていない状態なので
今後参照できるように適当なテーブルを作ってみます。

作成した`demoDBMod`を右クリックし、「Open HDI Container」を押下します。
![図15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/7ac262aa-bfd9-0910-fdb3-4e4e46f0829d.png)

DataBase Explorerが起動するので、
「＋」を押下して今回作成したHDI Containerのインスタンスを追加します。

![図16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/ba82ca0a-a0c7-ae85-12b4-e48294daa62a.png)


下図のように
DataBase TypeがHDI Containerになっていれば
作成したインスタンス（`demoShered`）が選択できるはずなので、
選択してOKを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/9239f0f6-d04a-747f-cd6b-7451fb2f3af1.png)

処理が完了すると以下のように表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/3e0a1228-aee2-5882-85bd-e9aa4949c723.png)

とりあえずSQLのコンソールが立ち上げられたので、
テスト用にテーブルを作成してみます。

```sql

create table product (id int not null primary key, name varchar(10), col varchar(10));
```
![図17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/3d63051d-ac70-811d-7600-3f49cc8e1d4d.png)

Tablesを確認するとテーブルがちゃんと作成されていました。
![図18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/60993188-b6f0-65bc-07f2-3efd7a9805ad.png)

あとは「Genelate INSERT Statement」等でデータを増やしたりします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/d9cda7ed-ebd1-b489-81d8-168b3b618f55.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159467/5a80c632-6434-f64e-1542-080f03cecaa7.png)


# おわりに

上記まででひとまずMTAで実現する
　　DB　⇔　OData　⇔　Fiori
のDB部分を作成できたと思います。

次はOData部分をJavaアプリケーションで作成したいと思います。