Skip to Content
Technical Articles
Author's profile photo Takayuki Tanaka

SAP Event MeshとSAP S/4HANA Cloudを接続し、イベント駆動アーキテクチャを構築する

はじめに

イベント駆動アーキテクチャをもつ拡張機能を実装するにあたり、重要な役割を持つSAP Event Mesh。SAP Event Meshのテナントの作成が終了していることを前提条件として、SAP S/4HANA Cloudからのイベント受け取り、別のシステムへ連携していくところまでの手順をご紹介します。

SAP Event Meshの概念、およびインスタンスの立て方については本ブログにて紹介していません。そういった内容の詳細に関してはこちらのブログをご覧ください。また、本ブログはSAP S/4HANA Cloudとの連携についての内容です。オンプレミスのSAP S/4HANAとの連携につきましてはこちらをご覧ください。

前提条件

  • SAP Event Mesh の管理UIのサブスクライブが完了している
  • SAP Event Meshのインスタンス作成が完了している

 

BTP Cockpitでの設定

SAP Event Meshのインスタンスのサービスキーを作成する

SAP S/4HANA Cloudからイベントを受け取るにあたり、SAP S/4HANA CloudがどこのSAP Event Meshのインスタンスにイベントを発行するのかを設定する必要があります。該当のSAP Event Meshにアクセスするためのアドレスや認証に関する情報を含んだ、サービスキーを作成しましょう。

サービス -> インスタンスおよびサブスクリプション -> インスタンス から該当のSAP Event Meshインスタンスを選択し、サービスキーセクション配下の「作成」をクリックします。

%u30B5%u30FC%u30D3%u30B9%u30AD%u30FC%u306E%u4F5C%u6210

サービスキーの作成

作成されたサービスキーをコピーします。

%u30B5%u30FC%u30D3%u30B9%u30AD%u30FC%u306E%u30B3%u30D4%u30FC

サービスキーのコピー

 

SAP S/4HANA Cloud側の設定

通信契約を作成する

SAP S/4HANA CloudからSAP Event Meshにイベントを発行するにあたり、SAP S/4HANA Cloud内で外部との通信を取り扱う窓口を作成する必要があります。これは「通信契約」と呼ばれています。詳細についてはこちらのブログをご覧ください。

今回のSAP Event Meshとの連携では、「SAP_COM_0092:エンタープライズイベンティング統合」という通信シナリオを利用します。作成時のウィザードに「サービスキー」という項目が登場しますが、ここに作成したSAP Event Meshインスタンスのサービスキーを入力し、作成を行います。

%u901A%u4FE1%u5951%u7D04%u306E%u4F5C%u6210

通信契約の作成

%u901A%u4FE1%u5951%u7D04%u306E%u5168%u4F53%u50CF

通信契約の全体像

これでSAP Event Meshのインスタンスとの接続が完了しました。

次にSAP S/4HANA Cloudから発行するイベントの有効化を行います。

 

イベント送信の有効化を行う

「エンタープライズイベントのイネーブルメント」アプリを起動します。

%u30A8%u30F3%u30BF%u30FC%u30D7%u30E9%u30A4%u30BA%u30A4%u30D9%u30F3%u30C8%u306E%u30A4%u30CD%u30FC%u30D6%u30EB%u30E1%u30F3%u30C8

エンタープライズイベントのイネーブルメント

先ほど作成した通信契約を選択すると、下図の画面に遷移します。

送信トピックセクション内の「作成」から、送信したいイベントトピックを選択し追加します。今回は「sap/s4/beh/outbounddelivery/v1/OutboundDelivery/Created/v1」という、出荷伝票の登録トピックを指定しています。

%u9001%u4FE1%u30C8%u30D4%u30C3%u30AF%u306E%u6307%u5B9A

送信トピックの指定

その他のイベントを指定したい場合には、下記SAP Business Accelerator Hubよりイベントの検索、およびペイロードの参照が可能です。

https://api.sap.com/products/SAPS4HANACloud/events/events

以下では出荷伝票の登録イベントの内容を紹介しています。

ce/sap/s4/beh/outbounddelivery/v1/OutboundDelivery/DelivBlockChanged/v1%u306E%u30D8%u30C3%u30C0%u304A%u3088%u3073%u30DA%u30A4%u30ED%u30FC%u30C9%u4F8B

ce/sap/s4/beh/outbounddelivery/v1/OutboundDelivery/DelivBlockChanged/v1のヘッダおよびペイロード例

画像上部のSUB(Subscribe)という緑色の四角の横に記載されている文字列(今回はce/sap/s4/beh/outbounddelivery/v1/OutboundDelivery/DelivBlockChanged/v1)をSAP Event Mesh側でサブスクライブすると、このイベントを取得することができます。

次はSAP Event Mesh側の設定をご紹介します。

 

SAP Event Mesh側の設定

SAP Event Meshを構成する大きな要素として、外部システムからサブスクライブする「Topic」と、受信したイベントを一時的に貯めておく「Queue」、そして受信したイベントを消費システムに送信するための「Webhook」という仕組みが存在します。この章では、それぞれの作成手順をご紹介します。

Queueを作成する

サブスクライブしたSAP Event MeshのUIにアクセスすると、作成したSAP Event Meshインスタンスの一覧が表示されます。インスタンスは、SAP Event Mesh側ではMessage Clientと呼ばれます。

Message%20Client

Message Client

「Create Queue」ボタンから任意の名前のQueueを作成すると、指定した名前の先頭にMessage ClientのNamespace(今回はjp10/frbtp/sci)が付いたものが正式なQueueの名前として利用可能になります。

Queue%u306E%u4F5C%u6210

Queueの作成

Topicをサブスクライブする

次にSAP S/4HANA Cloud側で送信トピックとして設定したトピックをサブスクライブします。作成したQueueの横の「Action」タブから「Queue Subscriptions」を選択し、Topicの欄に「<Message ClientのNamespace>/<SAP Business Accelerator Hub上でコピーしたトピック名>」を入力し、「Add」ボタンをクリックすることでサブスクライブを行うことができます。

Topic%u306E%u30B5%u30D6%u30B9%u30AF%u30E9%u30A4%u30D6

Topicのサブスクライブ

これでSAP S/4HANA Cloudからイベントを受け取る設定は完了です。

動作確認

この状態でSAP S/4HANA Cloudから出荷伝票の登録を行うと、下図のようにQueueにメッセージが追加されたことが確認できます。

Queue%u306B%u5165%u3063%u3066%u304D%u305F%u30E1%u30C3%u30BB%u30FC%u30B8

Queueに入ってきたメッセージ

TestタブからQueueに入ったメッセージを取り出してみると、以下のようにSAP Business Accelerator Hubで確認したヘッダおよびペイロードが入っていることが確認できます。

Queue%u304B%u3089%u306E%u30E1%u30C3%u30BB%u30FC%u30B8%u306E%u53D6%u308A%u51FA%u3057

Queueからのメッセージの取り出し

最後に、このメッセージを消費システムに届けるためのWebhookを設定します。

Webhookを設定する

Message Clientの画面に戻り、Webhookタブ内の「Create Webhook」ボタンをクリックし、出現したウィザードに従ってWebhookの作成を行います。その後、Actions内の「Resume」ボタンをクリックすることでWebhookが有効化されます。

Webhook%u306E%u4F5C%u6210

Webhookの作成

有効化に成功すると、下図のようなステータスになります。

%u6709%u52B9%u306AWebhook

有効なWebhook

これ以降、該当のイベントを発行すると動作確認の章で確認したペイロードが、Webhookで登録した宛先へと即時、送信されます。

おわりに

SAP Event Meshはイベント駆動アーキテクチャを構成するうえで非常に重要な構成要素です。ぜひ本記事を参考にしながら、Cloud Integration に接続してみたり、CAPアプリケーションに接続してみたりなど、いろいろなシナリオで手元で動かしていただければと思います。

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.