SAP Event Mesh S/4HANAと連携方法

前回Event Meshを使ってみましたが、今回はS/4HANA側の設定も合わせて実施します
BTPとS/4HANA両方に知見がある人は少ないと思うので参考になればと思います

SAP Event Meshを試してみる - Qiita
SAP Event Meshの概要については私が以前書いたブログを確認ください

https://qiita.com/nanaki11/items/aa976865e1ed6b93cdf7 

# BTPでの作業

基本的にBTP側の作業は前回と同じ

https://qiita.com/nanaki11/items/aa976865e1ed6b93cdf7 

::: note warn
トライアルアカウントだとnamespaceを設定できない
Event Meshのinstance作成時以下のようなパラメータを設定します
しかしトライアルアカウントだとnamespaceを設定するとエラーになるため、その部分を省いた状態でinstanceを作成しないといけないです
namespaceはS/4HANAからみた場合の住所みたいなものでないとS/4HANAとの連携は出来ません
:::
```json
{
    "emname": "<yourmessageclientname>",
    "namespace": "<yourorgname>/<yourmessageclientname>/<uniqueID>",
    "version": "1.1.0",
    "options": {
        "management": true,
        "messagingrest": true,
        "messaging": true
    },
    "rules": {
        "queueRules": {
            "publishFilter": [
                "${namespace}/*"
            ],
            "subscribeFilter": [
                "${namespace}/*"
            ]
        },
        "topicRules": {
            "publishFilter": [
                "${namespace}/*"
            ],
            "subscribeFilter": [
                "${namespace}/*"
            ]
        }
    },
    "resources" : {
    "units" : "10" //default value is 10//
  }
}
```
## Applicationのサブスクライブ
BTPのInstances and Subscriptions画面からEventMeshを選択してApplicationもサブスクライブしてください
こちらはパラメーターの設定などは不要です

こんな画面が開きます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/336223a3-ce86-ccca-8240-9c9466bb3caa.png)

Message Clients→さっき作成したinstanceと移動します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/db68262f-ff2e-2a72-1886-4c1d7ff9e7f3.png)

ここではトライアルアカウントで設定していたようなQueuesやWebhooksの設定が可能です

Queues→Queue Subscriptionsから各Queueが受信するTopicを設定してください
ここのTopicとあとでS/4HANAはチャネルに設定したEventが同じものを受信します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/15d28e3a-6e39-aca4-dbe9-ee27b1318900.png)

::: note warn
トピックの設定は画像で警告が出ている通り命名ルールに従う必要があります
instance作成した際に設定したルールも守る必要があります
:::

# S/4HANAの作業
:::note
S/4HANAのバージョンによって作業が異なりますので中位ください
:::

## SSL証明書のインストール

https://github.com/SAP-samples/cloud-extension-s4hana-business-process/blob/mission/mission/event_based/Configure_event_based_1909.md

こちらのステップ24までを参考にSSL証明書をS/4HANAにインポート

::: note
証明書はルート証明書を利用
S/4HANAのバージョンや契約形態によってはそのままインポート出来ない場合があります
その場合は別途形式変換をしてからインポートする必要があります
:::

## OATH Clientの有効化
初期状態から有効化されてる場合は不要
Tr.SICF からOA2C_CONFIGのサービスを検索して有効化

## ロール
Tr.PFCGからSAP_IWXBE_RT_XBE_ADMを検索して有効化
ここのロールが有効になっていないとEvent伝達の途中でコケてBTPまで通知されません

参考URL:

https://answers.sap.com/questions/13453430/daemon-status-pending.html

## チャンネルの作成
tr./IWXBE/CONFIGでチャンネルの設定をします。



バージョンごとに異なる設定方法

2020など新しいバージョンの場合は画像の **via Service key** ってところにinstanceのServiceKeyをすべて貼り付けてください
あと名前とディスクリプションを任意で入力すればOK
Check ConnectionとActivateが成功すればOKです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/41a8faf3-5328-49f1-9bad-616a631f3767.png)

::: note

1909など古いバージョンの場合は以下のURL（step28以降）に従ってtr.SM59で宛先とtr.OA2C_CONFIGで **ServiceKey** の情報からOAUTH認証の設定を作成してください

作成後そこで作成した設定をtr./IWXBE/CONFIGで割り当てます

参考：

https://github.com/SAP-samples/cloud-extension-s4hana-business-process/blob/mission/mission/event_based/Configure_event_based_1909.md

:::

::: note

ネットワークの設定
以下の4点をBasisの方に確認してもらってください
・ファイヤウォールの設定の見直し
・SM59で作成した宛先にプロキシの設定
参考：

https://launchpad.support.sap.com/#/notes/3106170

・OA2C_CONFIGにプロキシの設定
・Clientにグローバルプロキシの設定
参考：

https://launchpad.support.sap.com/#/notes/3039709

:::

## ドピック割当

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/11aeddd0-35dc-64a0-5b68-0e384c191915.png)

前の画面から移動してTopicを割り当てます
なのでここのTopicとBTP側のTopicが一致している必要があります

またここで表示されるイベントは以下になります
独自で作成するか出来るかは不明

https://api.sap.com/content-type/Events/events/events

# テスト
実際に設定したEventを実行してもいいですがtr./IWXBE/EVENT_DEMOからテストTest Eventを実行することが出来ます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/966b35dc-1445-e2a2-ed1a-b726cafafc58.png)

テストイベントをBTP側に設定しておくかすべてのイベントを受信するようにしておく（*で設定をする）必要があります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/e903752d-a505-3c71-8b39-2b842d0692d8.png)


# 参考資料


How to use SAP S/4HANA Event Enablement with SAP Cloud Platform (JA)

https://blogs.sap.com/2020/07/01/how-to-use-sap-s-4hana-event-enablement-with-sap-cloud-platform-ja/

Discoveryセンター

https://discovery-center.cloud.sap/protected/index.html#/missiondetail/3242/3268/?tab=overview


https://blogs.sap.com/2021/02/15/configure-sap-enterprise-messaging-for-sap-s-4-hana-on-premise-2020-via-service-key

https://blogs.sap.com/2021/06/07/your-first-end-to-end-tutorial-of-event-mesh-on-sap-business-technology-platform-china-shanghai-region/