SAP Integration Suite で OData を更新してみた

# はじめに
この記事は [chillSAP 夏の自由研究2022](https://note.com/chillsap/n/n62740563aee0) の記事として執筆しています。

今回は、SAP Integration Suite を使って、OData を更新する仕組みの作り方をお伝えしたいと思います。
当記事は「SAP BTP トライアル環境」で試作したものです。
また、環境設定は、過去記事の [SAP Integration Suite でかんたんな WebAPI を作ってみた](https://qiita.com/pe_no_hito/items/10bcc5be38190f25b2f7) を御覧ください。

## SAP Integration Suiteとは

> SAP Integration Suite は、オンプレミスおよびクラウドベースのアプリケーションやプロセスを、SAP が管理するツールや事前構築済みコンテンツと、シームレスに統合するための iPaaS (Integration Platform as a Service) です。

引用元；https://www.sap.com/japan/products/integration-suite.html

## 全体像
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/37ad7224-f195-f4db-ad92-0d36957d4b53.png)
作成物の全体像です。
OData サ－ビスからデ－タを取得し、加工した内容で更新する処理を作ります。


## 準備
### 更新対象デ－タの準備
まずは 参照更新に使用する ODataを準備します。
今回は odata.org のサ－ビスを利用します
https://www.odata.org/odata-services/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/88c20043-28c4-634e-eb53-74962697b265.png)

Integration Suite では、OData の V2 と V4 に対応しているので、OData V2 を利用します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/016d2842-301a-2077-0315-96450d3ee234.png)
アクセスすると、参照更新可能な OData サ－ビスが 生成されるので、 URLを記録しておいてください。

## SAP Integration Suite
### 1. HTTP リクエスト部分の作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/efdd437e-93cd-2e36-1903-8c9a67bb8352.png)

SAP Integration Suite へアクセスして、integration Flow を作成します。
待ち受けアドレス は  `/northwind/update` で設定します。

### 2. デ－タ取得
データ取得の Flow Step として、`Request Reply` と `Reciver` の 2つを追加します。

Request Reply の追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/8e15e588-c023-6d38-cb32-ac496b42282d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/a56c6e4a-c3cb-b45d-f99c-afe36b63e6df.png)
Reciver の追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/287f04a3-c891-4e5d-c9b9-cfa68c0087e2.png)

`Request Reply` と `Reciver` が設置できたら、デ－タ取得処理を作成していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/731fdc21-f4c9-4b92-2c89-7fc245b5f7ac.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/63fd3db8-e37d-2419-8f68-167fb4bbbc08.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/46b7fa87-dc10-e73c-6f1b-387bffc83a15.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/6b3117f6-9c0d-a3fe-294d-6a71baf7ce69.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/fb87fc8d-f77c-e95b-22b8-e502216779e0.png)

ここまでで、Request Reply と Reciver が 線で接続された状態が出来たと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/1f3bf288-71e1-9531-7bdd-26923f1325b9.png)

続いて、リクエストの設定を準備していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/5f3845e7-399a-008f-de06-6eaff106b810.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/bfa78056-41d4-d5b7-4f22-28b79d437720.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/517b6188-fb09-686d-2998-0a783d9cd651.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/a63c10ca-ba95-c878-2665-e6f1df120567.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/218c8298-8c5e-f9c7-9bc2-0c5bdb79549f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/d6cf914e-a9ea-311f-5e3d-dfbffaa09aae.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/65dab4a4-150d-502e-ac56-25912be18a4e.png)

Processing タブに 設定内容が反映されていれば成功です。

### 3. デ－タ更新
データ更新も デ－タ取得と同じように `Request Reply` と `Reciver` と 2つの Flow Step を追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/fc7079ef-c656-3a69-4158-695bbdf5c53d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/4ee8bf9b-5089-fa83-8860-686ac41c4ec1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/58e674f9-f747-4ff7-ceb7-ee27d779d582.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/998936ce-656e-7efe-005c-52a559ec7182.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/bdc95e4c-b50f-c59f-238f-7f79544c1cb4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/f9eb58cc-2263-1b59-def8-67fbd18bf862.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/d3e40cd2-7bc2-c8d0-db12-64e6e66de69b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/4f78026c-cf4a-3398-4073-435ba1332cd7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/48bdda78-bf19-5422-a977-1ac23f7fb0c8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/beeb5f01-3131-88f6-defc-397b664240a4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/44cf81c9-d6dc-8aa0-997b-6fa6e96da8e4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/20614c96-7b38-0de0-ec2a-a9dbba2e1725.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/095a3b8f-5e40-cffd-ce5a-da2f33cbf534.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/68ebf55b-8b19-458d-fdfa-3db767653b84.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/aba4bfbd-4a4f-966a-3f06-2a12362c88a3.png)

Processing タブに 設定内容が反映されていれば成功です。

4. 更新値の設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/0eddce6f-8e3c-94ad-604c-47dc09304b45.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/9adeecb9-d8b0-d2ea-5fbc-187f409210ec.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/431cf066-e9a4-17a8-bdf8-60eafc013d60.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/65e22ef4-cb04-4d4c-db8e-b3949e010d3e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/ddbb4421-d8d7-36a2-f245-751929a4514b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/660ee632-57d6-683b-4e90-3ede7519ae73.png)

左右の指定が出来たら以下の画像のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/8b059418-4632-d0cc-3fe3-908f54fdef2a.png)
左側の項目をドラッグすると、対応の線が引けるので
以下の画像のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/f4a49a10-7f75-44ea-7e5c-dbbe31c7c499.png)

Price に対して、値を更新する設定を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/44b9998f-7547-1110-30b3-0d12ae277e51.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/b007b1aa-ec44-5833-6668-6d4e6c5ca1b8.png)


以上で設定は終了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/45f44578-bdad-b36e-62d5-4bc7b7e07667.png)

## 実行
それでは、作成した iFlow を動かしてみましょう

### 更新前のデ－タ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/efcc761e-e4fe-e672-3216-f7bdb07fa9b4.png)
### 更新前のデ－タ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/303235/91fe213c-f8a4-e532-cd91-f88657a90069.png)

このように、iFlow の実行前後を比べると
`4. 更新値の設定` で指定した値に書き換わっていることが確認できました。

# 最後に
Integration Suite 上での アプリケーションの作成方法について解説してみました。
実際に触っていて、プログラムコ－ドを記述することに比べ手軽に作ることが出来ると思います。
一方で、定義された範囲外の処理を作るとなると、途端に難易度が上がる印象です。
得意範囲は、特定のデ－タを加工しながら、右から左へ流すような処理は得意そうな感じですね。