SAP S/4HANAでの伝票登録をIDocで拾ってSAP CP Integration Serviceをトリガーしてみた

# はじめに

この記事は[「SAP S/4HANAで購買発注が登録されるたびiPhoneに「アイーン」とPush通知が来たらぜったいどきどきしちゃう」シリーズ](https://qiita.com/monamona/items/0e4c38ce315282e73b96)の3つ目の記事です。

**※ まだ手順を全部書ききれていないので、後日アップデートを予定しています**

## 前回までの実装

前回までの記事では、「SAP S/4HANAで伝票登録されたら「あい〜〜ん」Push通知が来たらぜったいどきどきしちゃう」という奇特な業務ユーザからの要望をかなえるべく、SAP Cloud Platform (Cloud Foundry) Mobile Servicesから「アイーン」というPush通知を受け取れるiOSアプリを構築し、そのAPIの動作確認を行いました。

今回は、いったんPush通知からは離れて、S/4HANAでの伝票登録をきっかけにクラウド上のIntegration Flowを動かす部分について実装していきます。

## 今回の目標

今回の記事のゴールは、SAP S/4HANAで購買依頼発注伝票が登録されたらトリガーされるIntegration FlowをIntegration ServiceとIDocを活用して実装することです。
<img width="998" alt="スクリーンショット 2020-02-11 22.45.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320955/09b495f1-1e8b-ece8-eadf-d2f90a8a6c4b.png">

ちなみに、SAP関係者のみなさまにおかれましては古式ゆかしいIDoc使うのかよ〜と思われるかもしれないのですが、
S/4HANA 1809, 1909と今をときめくEnterprise Messagingの連携設定を一生懸命がんばったのですが少なくともトライアルのサービスプランでは接続がうまくいかず、
またそもそもS/4HANA 1809, 1909側に購買関連の連携の口があまりなさそうだったので諦めてしまい、
代わりにIDocを使ってIntegration Serviceに直接S/4HANAの情報を連携させることにしました。
やり方がわかってないだけの可能性もあるので、Enterprise Messagingの接続の設定や連携の口を増やすのがうまくいったよという方がいらっしゃったら、ぜひぜひぜひぜひ教えてください〜〜

# 前提条件

## 開発実行環境
- バックエンド開発実行環境: SAP S/4HANA 1809
- クラウド開発実行環境: SAP Cloud Platform (Cloud Foundry trial account) ※ 無料
    - Integration Service

# 構築手順

## Integration Flowの構築
まずはSAP Cloud Platform Integration Serviceを活用してIntegration Flowを構築していきます。

### Integration Flowの仮実装

こちらの[チュートリアル](https://blogs.sap.com/2019/06/10/self-service-enablement-of-cloud-integration-service-on-cloud-foundry-environment/)の手順に準じてIntegration Flowを作成しました。いったんフローの中身にはこだわらず、このチュートリアル通りに作成し、デプロイして動くことを確認します。
さらっと書きましたが特に初回はまあまあ時間がかかるので、心の余裕を持って実装するのが良いと思います。

Postmanから叩いてIntegration Flowを動かし、Status Code 200番台になればOKです。
<img width="972" alt="ｚｚｚ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320955/068b594d-a0f2-f2b0-d1b2-26418ded8b55.png">

Integrationのテナントからもログが確認できました。正常に動作しているようです。
<img width="1135" alt="integration monitor.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320955/fba32687-df40-d445-a18e-e134b6ec482b.png">

※キャプチャを撮り忘れていたので上記の2枚のキャプチャは後から仮で作りました。以後のキャプチャの技術名称などとは齟齬があります。

### SenderからのConnectorの設定をIDOCに変更

上記のチュートリアルではSender --> Integration ProcessをつなぐConnectorのタイプがHTTPになっていると思うのですが、これをIDOCに変えておきます。
こうすることで、IDOCの独自仕様のへんてこなヘッダ情報などをIntegration Flowが自動的に取り除いてくれるで、後続のプロセスでパラメータ編集がやりやすくなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320955/d6963b29-e959-b05b-03b5-36af66c09143.png)


設定ができたらチュートリアルと同様の手順でデプロイし直します。

※IDOCの設定をしたあとも、URLは変わりますが、Postmanからの動作確認は一応可能です。ただしその際にはHTTPリクエストのbodyの中にIDOC仕様のヘッダ情報を仕込んでおいてあげないとInternal Errorとなってしまうので、この段階で無理して動作確認しなくても良いと思います。

## Integration ServiceとIDocの連携

構築したIntegration FlowをS/4HANAでの購買発注伝票登録をトリガーとして起動できるように、S/4HANA側のIDOC関連設定を行っていきます。このあたりの設定は百戦錬磨のSAP ERP戦士のみなさまにおかれましてはお茶の子さいさいと思われるので、手短に手順をご紹介します。

ちなみにSAP IDocそのものの技術的な作りについては、tamiさんが「[【SAP】IDocについて整理してみた](https://qiita.com/tami/items/6416f27bce2dcd1ee749)」という記事を投稿されており、大変勉強になります。ぜひご参照ください。

### Integration Service証明書の取得
**アップデート予定**

### RFC設定
**アップデート予定**
T-Code: `SM59`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320955/f85c1b43-9dfc-d4f4-d48a-3415c52e43e7.png)


### IDOC設定

**アップデート予定**

## 動作確認

動作確認のために、SAP S/4HANAで購買発注伝票を登録します。

Integration Flowがトリガーされていることが確認できればOKです！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320955/beec6302-090e-f64b-673c-2ad02b0ac4bc.png)


# 次回は・・・

前回の記事では、APIを活用してMobile ServicesからiPhoneに「アイーン」通知を送る方法を確認しました。
次回は、今回の実装と前回の内容を組み合わせて、**SAP S/4HANAで購買発注が登録されたら購買発注伝票番号を含んだ「アイーン」通知が届く**ように、今回実装したIntegration Flowを改造していきます。

次回の記事でやっと[「SAP S/4HANAで購買発注が登録されるたびiPhoneに「アイーン」とPush通知が来たらぜったいどきどきしちゃう」シリーズ](https://qiita.com/monamona/items/0e4c38ce315282e73b96)の完結です…！