Skip to Content
Technical Articles
Author's profile photo Takuya Endo

SAP Master Data Integrationを使った外部アプリケーションとのデータ連携 part1

1    本ブログについて

本ブログではSAP Master Data Integration(以下、「MDI))を初めて使われる方を対象にその他SAPアプリケーションとのデータ連携において必要な設定と手順について解説いたします。

本ブログでは私が実際にセットアップした時の手順をもとに注意しなければいけない点等を補足しながらまとめておりますのでMDIをセットアップする際に参考にしていただければ幸いです。

2    MDIとは

まずは今回の主役であるMDIとは一体どんなものなのか解説します。

SAP Business Technology Platform(以下、「BTP」)上で提供されるサービスで名前の通りデータの連携を担うサービスです。

後程触れますが、実際にMDIの機能を利用するためにはMaster Data Orchestration(以下、「MDO」)のサービスのSubscriptionも必要になります。

何のためにMDIが提供されているか、ですが下記の通りアプリケーション間で直接データを連携する「Point-to-point integration」ではなく、「Central integration point」としてMDIを中心に各アプリケーションに保管されているデータを連携することでMDIによる一貫したマスタデータの管理・データ管理における運用コスト削減を目的としたサービスです。BTP上で提供されるサービスですのでInstanceを作成し、このInstanceによって「Central integration point」を構成します。

図1:MDI Concept

InstanceとMDIで保管されるデータの関係についてご説明いたします。下記図2はMDIのLandscapeのイメージ図ですが青枠のClientがMDI Instance、緑枠のTenantがBTP Subaccountに該当します。MDIではデータはClient単位ではなく、Tenant単位で管理されます。例えば下記図2のClient1にてデータ変更が発生した場合は同じTenantに属するClient2とClient3にデータが連携され、異なるTenantに属するClient 4-6には反映されません。

%u56F32%uFF1AMDI%20Landscape

図2:MDI Landscape

共有されるのであればなぜわざわざClient(MDI Instance)が複数存在するのでしょうか。それはClientと連携先のシステムが1:1の構成でMDI Instanceを用意する必要があるからです。下記図3はSAP Success Factors、S/4 HANA On Premise、S/4 HANA Cloudと連携する場合に必要なMDI Instanceのイメージ図です。連携するシステムは合計3つですのでMDI Instanceは3つ必要です。後述の設定手順の中でも触れますが各Instanceのパラメータの中で連携先となるシステムのBusiness Systemを設定します。この値によって連携先との関係を紐づかせるイメージです。さらに各Instanceでは書き込み権限などの権限設定が可能です。

%u56F33%uFF1AMDI%20%u30A4%u30F3%u30B9%u30BF%u30F3%u30B9

図3:MDI インスタンス

3    制約事項

MDIの設定手順に入る前にBTP環境について確認しなければいけない点について共有いたします。

下記の条件を満たしているか確認してください。

[Global Account]

Cloud Foundry環境のGlobal Accountである。

[Subaccount]

SubaccountのRegionは下記のいずれかである。

・Europe (Frankfurt) – EU10

・US East (VA) – US10

・Australia (Sydney) – AP10

・Singapore – AP11

※2023年1月時点でMDIとMDOのサービスが利用可能なRegionは下記の通りです。MDIが利用できるRegionはMDOが利用できるRegionに包含されていますのでMDIがサポートされたRegionであれば問題ありません。

最新の情報は下記リンクをご確認ください。

MDI – Technical Prerequisites

MDO – Technical Prerequisites

%u56F34%uFF1AMDI%u3068MDO%u304C%u63D0%u4F9B%u3055%u308C%u308BSubaccount%u306ERegion%uFF082023%u5E741%u6708%u6642%u70B9%uFF09

図4:MDIとMDOが提供されるSubaccountのRegion(2023年1月時点)

[Space]

用意したSubaccountに紐づくSpaceが作成されている。

[Service]

Marketplaceにて下記サービスが確認できる。

・Master Data Integration

・Master Data Integration(Orchestration)

※下記図5の通り、似たもので「Master Data Orchestaraion」というサービスがありますがこちらはMDIとの連携では利用しません。

%u56F35%uFF1ABTP%20Subaccount%20-%20Service%20Marketplace

図5:BTP Subaccount – Service Marketplace

※Marketplaceに該当のサービスが見つからない場合はGlobal Accountから該当のSubaccountにBooster 「Set up SAP Master Data Integration」を割り当てる必要があります。BTP Boosterにつきましてはこちらをご確認ください。

4    設定手順(MDIセットアップ)

早速、本題の設定手順につきまして解説いたします。SaaSアプリケーションということで手順はシンプルです。ただし、当手順はあくまでもMDIインスタンスをセットアップするための手順で連携するアプリケーションに依存せず共通で必要な手順です。この手順による設定が完了した後、連携するアプリケーション毎に追加の設定を実施する必要があります。

  1. MDI Instance作成
  2. Service Key作成
  3. Business System付与
  4. MDOのSubscription

1.     MDI Instance作成

まずは準備したBTPのspaceにMDIのInstanceを作成します。

①準備したSpaceよりMDIのInstanceを作成。

 

②下記の通り入力しNextをクリック。

– Service: Master Data Integration

– Plan: sap-integration

– Instance Name: [任意の値]

 

③下記の通りパラメータを設定し、Nextをクリック。

※今回はMDI→S/4 HANA On Premiseに対してBusiness Partnerのデータを連携するための手順を確認しますので下記の通り入力しています。パラメータの使い方はこちらも参考にしてみてください。

– application: MDIと連携するアプリケーションの識別子を指定します。“ariba”, “c4c”, “cdc”, “commerceCloud”, “concur”, “cpq”, “mdg”, “s4”, “sfsf”, “hrc”から指定します。

– businessSystemId: 連携するアプリケーションの識別子です。

S/4 HANA On Premiseの場合は、LCR_GET_OWN_BUSINESS_SYSTEMファンクションを実行することで取得できる値を利用します。

S/4 HANA Cloudの場合は、Communication Systems より自身のSystemで確認できる「Business System」フィールドの値を利用します。

– writePermissions: 書き込み権限を許可するエンティティを指定します。

MDIではOne Domain Model(以下、「ODM」)に倣ってデータが管理されますのでそのエンティティの値を指定します。MDIにてサポートされているODMエンティティについてはこちらをご確認ください。

 

④「Create」をクリック。

 

⑤Statusが「Created」になっていることを確認。

2.     Service Key作成

作成したMDI InstanceでService Keyを作成します。ここには外部からアクセスするために必要なAPIのEnd PointやOAuth認証等で必要となる情報が含まれます。

①作成したMDI Instanceの「・・・」から「Create Service Key」をクリック。

 

②下記の通り入力し、「Create」をクリック。

Service Key Name: 「任意の値」

こちらは任意の値で問題ありませんが”ValidFromYYYYMMDD”のように作成日を入れていつから有効なのかわかるようにすることが推奨されています。

 

③作成されていることを確認。

 

右上の「View Credentials」から確認してみると下記のように情報が含まれていることが確認できます。認証に必要な情報もありますので外部に公開しないようにご注意ください。

 

3.     Business System付与

「2 MDIとは」で少し触れたBusiness Systemの値をMDI Instanceに付与します。Business Systemで付与するためにはMDI APIを実行する必要があります。そしてこのAPIを実行するためにはPasscodeが必要でこのPasscodeを取得するための権限(Role)をBTPのアカウントに付与する必要があります。

①Role「one-mds-master > BusinessConfigurationAdmin」を追加したRole Collectionsにユーザーを割当。

%u2191%u304C%u5BFE%u8C61%u306Erole%u3002

対象のrole

 

%u2191%u3067%u306F%u3001Role%20Collection%u300Cmdi_admin%u300D%u306B%u5272%u5F53

↑では、Role Collection「mdi_admin」に割当

 

②作成したService Keyの「uaa.url」の値にアクセス。

※sign in の方法はRole Collectionにて指定した方法です。

 

③URLの末尾に「/passcode」を追加してアクセス。

 

④下記のように「Temporary Authentication Code」としてpasscodeが

表示されるのでメモ。

 

⑤Web API実行用ツールからMDI APIを実行。

※Postmanを利用してAPIを実行します。こちらに記載されているサンプルを使い、PostmanのCollectionsを作成します。今回は「Business User [ Using Passcode ]」を利用します。

 

⑤-1 下記のように値を変更して実行し、Access Tokenを取得。

– URL:

xsuaa_url : Service Keyの「uaa.url」の値

– Authorization タブ:

Username: Service Keyの「uaa.clientid」の値

Password: Service Keyの「uaa.clientsecret」の値

– Bodyタブ:

passcode: ④で取得したpasscodeの値

※④でpasscodeを取得してからしばらく時間が経つと利用できずうまくAccess Tokenが取得できない場合があります。「Invalid passcode」のようなエラーが発生したときはもう一度passcodeを取得して実行してみてください。

 

⑤-2 新しくPostmanにてRequestを作成し、Business Systemの値を定義するためのMDI APIを実行。

Responseが201になり、レスポンスを取得できていれば成功です。

Method:

POST

URL:

「<BASE_URL>/businesspartner/v0/odata/API_GENERIC_CONFIGURATIONS/GenericConfigurations」

※<BASE_URL>はService Keyの「uri」の値

Authorization タブ:

Type: 「Bearer Token」

Token: ⑤-1で取得した「access_token」の値

Bodyタブ:

{

“ConfigurationName”: “Business System”,

“ConfigurationValue”: “<Business System name>”

}

※<Business System name>は連携先となるシステムのBusiness Systemの値。

 

4.     MDOのSubscription

BTPのSubaccountにてMDOをSubscriptionします。

①Service Marketplaceより「Master Data Integration(Orchestration)」の「・・・」から「Create」をクリック。

※既に作成済みのため上記画面では「Create」がクリックできない状態になっています。

 

②Role Collections「MDOAdmin」にて以下2つのRoleを追加し、MDOにアクセスするユーザーを割当。

・MasterDataOrchestrationAdmin

・MasterDataOrchestrationDisplay

 

③MDOの「・・・」から「Go to Application」をクリック。

 

④タイルが表示されることを確認。

※ 表示されない場合、Role Collectionsへユーザーの割当がうまく反映されていない可能性がありますのでログアウトし、再度ログインした後アクセスしてみてください。

 

5    設定手順(MDI→S/4 HANA On Premise連携)

4ではMDI自身のセットアップを実施しました。この後はMDIと外部アプリケーション間でデータ連携するために必要な設定を実施します。前述の通りこの部分は接続するアプリケーションによって異なります。今回は、例としてMDI→S/4 HANA On PremiseへBusiness Partnerのデータを連携するための設定を試してみたいと思います。必要な手順は以下の通りです。(その他SAP Success FactorsやNon SAPアプリケーションとのデータ連携手順につきましても今後Updateしていきたいと思います。)

  1. SOAP Endpoint作成
  2. Destination設定
  3. Distribution Model作成

1.     SOAP Endpoint作成

まずは連携先となるS/4 HANA側にSOAP Endpointを作成します。

この部分の手順はこちらのBlog Ⅷでも書かれているので参考にしてみてください。

①連携先のS/4 HANAにてt-code : 「SOAMANAGER」を実行しSOA管理にアクセスし、Webサービス設定をクリック。

 

②「オブジェクトタイプ is “サービス設定”」、「オブジェクト名 is “BUSINESSPARTNERSUITEBULKREPLIC”」で検索しエントリをクリック。

 

③サービス登録をクリック。

 

④サービス名、新規バインド名を任意の値で入力し、次画面をクリック。

 

⑤プロバイダセキュリティにて設定後、次画面をクリック。

⑥「終了」をクリック。

⑦バインドが作成されていることを確認し、アクションの眼鏡アイコンをクリック。

⑧転送設定タブの計算されたアクセスURLをメモ。

(このURLは後続の手順で利用します。)

⑨残り5つのサービスにて②-⑧を実施。

(合計6つのサービスに対して設定が必要になります。)

– BP: BUSINESSPARTNERSUITEBULKREPLIC

– BP Confirmation: BUSINESSPARTNERSUITEBULKREPLI1

– BP Relationship: BUSINESSPARTNERRELATIONSHIPSUI

– BP Relationship Confirmation: BUSINESSPARTNERRELATIONSHIPSU1

– Key Mapping: KEYMAPPINGBULKREPLICATEREQUEST

– Key Mapping Confirmation: KEYMAPPINGBULKREPLICATECONFIRM

2.     Destination設定

次に連携元であるMDIを提供するBTP上でDestinationを設定します。

今回はOn Premiseへの連携となるため、SAP Cloud Connector(以下、「SCC」)を事前にセットアップしております。SCCにつきましてはこちらを参考にしてみてください。

①左側のメニューよりDestinationsを開き、「New Destination」をクリック。

 

②以下のように各フィールドに値を入力し、「Save」をクリック。

Name:

「<businessSystemId>_BPOUTBOUND」(Outbound Destination for BP)

※<businessSystemId>は連携先となるシステムのBusiness Systemの値です。MDIインスタンスを作成した時に定義したbusinessSystemIdです。(手順4 > 1. > ②)

Type:

プロトコルのタイプを指定。

URL:

「<host>:<port>/<計算されたアクセスURL >」

※<host>と<port>はt-code:smicmで遷移後、「Shift+F1キー」で確認できます。(SCCを利用する場合はSCCが連携しているURLに置き換える必要があります。)

※<計算されたアクセスURL>は前手順1.-⑧でメモした値です。

Proxy Type:

連携先がオンプレミスのS/4 HANAの場合「OnPremise」、S/4 HANA Cloud、もしくはInternet経由で接続する他システムの場合「Internet」。

Authentication: 接続する時の認証方式を選択します。

 

③「Check Connection」をクリックし、正常に接続できていることを確認。

 

3.     Distribution Model作成

最後にMDOを利用してDistribution Modelを作成します。ここで複製におけるスケジューリングやフィルタリングなどを設定したり、実際に複製を実行することが可能です。

①MDOにアクセスし、「Manage Distribution」をクリック。

 

②「Create」をクリック。

 

③各パラメータを設定し、「Save」をクリック。

各設定値のガイドはこちらに書かれていますので参考にしてみてください。

今回は下記の値にしています。

Model: 「BP_SOAP」

Business Object Type:

「Business Partner (sap.odm.businesspartner.BusinessPartner)」

Mode: 「Push」

Package Size: 「1」

Recurrence Pattern: 「Continuous Distribution」

Provider Interface: 「MDI_SOAP_BUSINESS_PARTNER」

Provider: 「MDI」

Consumer: 「<businessSystemId>」

 

④「Activate」をクリック。

 

⑤「Replicate」をクリックしウィザードにて連携先を指定後、再度「Replicate」をクリック。

 

実際に連携先のS/4 HANA OnPに連携されているかログを確認してみます。t-code : SRT_MONIを実行し、メッセージモニタを確認すると、一部のデータがエラーですが疎通できていることが確認できます。

6    最後に

SaaSアプリケーションという性質上、比較的単純なパラメータ設定でセットアップすることができるかと思います。一方で標準機能として提供される機能を正しく利用するためにはアプリケーションの仕様に則った使い方を検討する必要があります。例えばMDIで管理されるデータは全てODMに倣い管理されます。そのため外部のアプリケーションと連携する際にはこのデータモデルに合わせるためのマッピングが必要です。

今回はMDI→S/4HANA OnPでのBPデータ連携のために必要な設定手順でしたが今後いろいろなシナリオで手順をまとめていきたいと思います。

Assigned Tags

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