ブログ

【SAP】初心者必見!S/4 HANA Public Cloudのデータを「カスタムCDSView」を用いて外部参照する方法

この記事をSNSでシェア!

はじめに

SAP関連のお仕事で、基幹システムをSAPに移行するプロジェクトに参画する機会があると思います。
SAPで存在しないシステムを使用する際、機能開発を行うケースと、外部システムをそのまま使用するケースがあります。どちらの場合でも、外部システムとSAPの連係は必要です。
そこで今回は外部アプリケーションからのS/4 HANA パブリッククラウド(※1)のデータ取得方法を簡単に説明します。

※1 :S/4 HANA にはPublic Edition(パブリッククラウド版)と、Private Edition(プライベートクラウド版)が存在します。Public Editionでは「Fit to Standard(標準機能に業務を合わせる)」での運用が基本となりますが、2022年より徐々に拡張開発できるようになっています。今回の記事はPublic Editionに関しての内容となります。SAPの拡張開発については、過去記事に詳しく記載しております。
【SAP UI5】フロントエンドエンジニアの方必見!~SAP未経験でも拡張開発可能なSAPUI5~ 

S/4HANAのデータ構造について

S/4HANAではDBを直接参照することはできません。その代わりに、「CDSView」というSAPが提供しているビューでデータを参照します。イメージは下図の通りです。

ユーザーから直接内部DBは確認できず、CDSViewより確認します。外部からデータを参照する場合は標準で提供されているAPIまたはカスタムCDSViewを使用します。
カスタムCDSViewは、公式から提供されているCDSViewから作成します。

CDSViewの考え方(VDM)について:VDM Layers and View Types SAP Help Portal

SAP公式のCDSViewについて

CDSViewは、業務ごとに使用するデータをまとめたビューで、これを利用することで、外部アプリケーションからデータを取得することができます。
CDSViewの定義はS/4HANAの機能「ビューブラウザ」から確認できます。

ビューブラウザに関して:View Browser SAP Help Portal

定義を見ながら、使用用途に応じたCDSViewを選びます。ちなみに接頭語については、「I_」始まりのものが「Basic interface view」という一般的に使用されるビューとなります。

接頭語に関して:Naming Conventions in the Virtual Data Model SAP Help Portal

CDSViewの内容関しては公式のヘルプポータルをご確認ください。使用できるCDSViewの内容は変わることがあるため、最新の情報であることを確認してから参照してください。
リンク:CDS Views SAP Help Portal

カスタムCDSViewについて

作成方法

カスタムCDSViewはS/4HANAのアプリ上から作成することができます。
一からCDSViewを作ることはできず、公式から提供されているCDSViewを基に作成します。
複数のCDSViewを組み合わせて1つのカスタムCDSViewを定義することも可能です。

種類(シナリオ)に関して

カスタムCDSViewを作成する際、「シナリオ」というものを選択します。
外部から接続するので「外部API」を選択します。「外部API」で作成するCDSViewは、SAPと非SAPシステム間でのデータ連携に使用するとこができます。

他にも汎用的に用いることができる「標準CDSView」、データ分析ができる「分析キューブ」などが存在します。

詳細設定でできること

テーブル結合

複数のCDSViewを結合することも可能です。
内部結合や外部結合の選択も可能ですが、結合できるのは主のCDSViewと副のCDSViewのみで副同士のCDSViewの結合はできません。

項目設定

カスタムCDSViewでは、CDSViewから使用したい項目のみを選択し表示します。
初めはキー情報のみ定義されているため、外部から参照したい項目を追加します。

その他設定

絞込情報をカスタムCDSView内で付け加えることができます。SQLを例に例えるとWhere句のようなものです。

取得時に$Filterなどを使い絞り込むことも可能です。
Filterを使うと、CDSViewを再利用したりと柔軟性が高くなりますが状況により使い分けます。
それぞれの特徴は下記の表のとおりです。状況に合わせ使用しましょう。

使用ケース注意点
カスタムCDS View内で
絞込情報を設定
パフォーマンスの最適化や
一貫性が求められる場合
柔軟性が低くなる
取得時に
フィルタ設定
柔軟性が必要な場合、
CDS Viewを再利用する場合
パフォーマンスへの影響やフィルタ条件の管理が煩雑になる可能性がある
補足事項

CDSViewはデータベースのView定義に似た定義を行うことができます。 しかし、できないことも多く要件に合わせた設計が必要です。 また、必要に応じて取得後、プログラムで処理をする必要があります。 以下に代表的な制約事項を記載します。

・テーブルの行の結合(Union)はできない
結合は一つのプライマリデータソースを主軸に、複数のデータソースを結合させていく形になります。リレーションの属性を結合させる方法のみなので、結果の結合であるUnionと同様の処理はCDSView上ではできません。

参照リンク:結合条件 SAP Help Portal

・集計処理(Group By)はできない

同じ項目で集計し、まとめることはできません。
(計算を使用しても、データソースからカーディナリティが “1 つまたは複数” の項目を使用することはできないため)
ちなみに、Distinctと同様の処理は可能です。集計プロパティ(COUNT_DISTINCT)を使用することで、アノテーションを付けた同じ項目で集計をかけることはできます。これは、要素の個数を出すだけであり、項目値の合計算出はできません。

参照リンク:計算 SAP Help Portal

参照リンク:集計値 SAP Help Portal

上記処理を行う必要があるなら、取得したデータをもとにプログラム等で別途処理を行う必要があります。

カスタムCDSViewに関して:カスタム CDS ビュー SAP Help Portal

外部からS/4 HANAのデータを取得する方法

カスタムCDSViewの作成時にシナリオを「外部API」で選択することによって、CDSViewをAPI化することができます。そのため、SAP公式の標準のCDSViewはそのままでは作成できず、必ずカスタムCDSViewを作成する必要があります。 次に、作成したカスタムCDSViewに対して、「カスタム通信シナリオ」「通信契約」を順番に設定しカスタムCDSViewが外部から参照できるように権限を与えます。

カスタム通信シナリオの追加

「カスタム通信シナリオ」は、外部アプリケーションとS/4HANAの通信を管理する仕組みのことです。S/4HANAの画面上にあります。S/4HANAで作成したCDS Viewやその他のHTTPサービスを外部からアクセスできるようにするためのエンドポイント(APIのセット)を定義することができます。

「カスタム通信シナリオ」で通信シナリオを作成し、そのシナリオにカスタムCDS Viewを設定します。そうすることで外部APIとして利用できるようになります。

カスタム通信シナリオに関して:カスタム通信シナリオ SAP Help Portal

通信契約の設定

「通信契約」は、通信シナリオを基に、どのアプリケーションがどの権限でアクセスできるかを管理する設定のことです。S/4HANAの画面上にあります。通信契約では、どのアプリケーションがどのシナリオにアクセスできるか、認証方法(例:OAuth 2.0など)、セキュリティの設定などを管理することができます。また、カスタム通信シナリオを実際に動かすために必要となります。

「通信契約」で、先ほど作成した通信シナリオに通信契約を付け加えます。

これにより、通信契約の画面に記載されているURLを使用することができるようになります。
これで外部との接続が可能となります。

通信契約:通信契約 SAP Help Portal

補足:カスタム通信シナリオと通信契約の違い

カスタム通信シナリオは作成したカスタムCDSViewを外部アプリケーションとして定義付けるためのものです。 外部アプリケーションとして定義付けしたものに通信契約で権限を与えることによって、外部アプリケーションからデータの参照が可能になります。 そのため、標準で用意されているAPI(通信シナリオ)を外部アプリケーションから使用する場合も通信契約による権限付与が必要になります。

参照リンク:外部 API: OData API としてのカスタム CDS ビューの公開 SAP Help Portal

Postmanで取得できるデータの内容

Postmanを使用することで、画像のようにデータを確認することができます。
S/4HANAを外部から取得する際、oDataという通信方式を用いています。そのため、PostmanにURLを入力することで簡単にデータを確認することができます。
ODataに関しては過去記事に詳しく記載してありますので、ぜひご覧ください。
【OData】SAPのアドオン開発のデータ連携を簡単に!OData APIについて

赤枠で囲んでいる箇所がデータ1行に該当します。
赤枠の内側はカスタムCDSViewで設定した項目内容となります。

まとめ

S/4 HANA上のデータをどのように外部から取得するか、CDSViewとは何かについて解説しました。

SAP関連の初案件で、SAPと外部アプリケーションを連携するインターフェースを製造するプロジェクトへ参画し、知らないことが多く苦労しました。今回の記事では、私が基本設計前もしくは基本設計の段階で知っておきたかった情報を共有しています。同じような経験をする方の参考になれば幸いです。

最後に

外部アプリケーションからS/4 HANA Public Cloudのデータを取得する知識は、SAPプロジェクトでの拡張開発やインターフェースの構築に大いに役立ちます。今回はデータ取得の基本的な流れを紹介しました。今後は、データの登録や更新に関する具体的な手順も記事にしていきます。最後までお読みいただき、ありがとうございました。

投稿者プロフィール

東浦 ななみ
東浦 ななみ
文系大学卒業後、SES企業に就職。常駐先で、C#を用いた生産管理システムの開発や保守を行っていました。現在は株式会社KYOSOに在職し、Javaを用いたSAPのIF開発案件に携わっております。SAP認定試験保有しています。
この記事をSNSでシェア!