SAP HANA での Rest API 開発の方法

「Webサービス」は、今やすべての作業や仕事にとって当たり前の言葉となっています。しかし、Webサービスは何をもってWebサービスと呼ぶのでしょうか。

Wikipediaによると、次のように定義されています。

Webサービスとは、電子機器が他の電子機器に提供するサービスであり、World Wide Webを介して相互に通信する。

ウェブサービスでは、本来は人間と機械のコミュニケーションのために設計されたHTTPなどのウェブ技術が、機械と機械のコミュニケーション、より具体的にはXMLやJSONなどの機械可読ファイルフォーマットの転送に利用されます。実際には、ウェブサービスは通常、データベースサーバーにオブジェクト指向のウェブベースのインターフェースを提供し、例えば、別のウェブサーバーやモバイルアプリケーションによって利用され、エンドユーザーにユーザーインターフェースを提供します。

本記事では、SAP HANA 上でどのように REST API での Web サービスを構築し、検証する方法を、手順にそって解説いたします。

SAP HANA で構築できる SOAP と REST の違い

SAP HANA の開発環境を使うと、非常に簡単なプロセスでWebサービスを作成することができます。簡単なAPIであれば、たった1日で構築できます。

SAP独自のプログラミング言語であるABAPを使うことで、さらに選択肢が広がります。

SOAPサービスを使用することを好む人もいますが、SAP UI5を利用する最新のアプリケーションのほとんどは、Restアーキテクチャを使用しています。この2つのスタイルの違いを見てみると、なぜRestが優れた選択肢であるかがすぐにわかるでしょう。

SOAPREST
XML-based プロトコルArchitectural style プロトコル
コンシューマーとプロバイダー間のコミュニケーションのためのWSDLXML または JSON を使ったデータのやり取り
RPCメソッドを呼び出してサービスを呼び出すURLパスからのサービス呼び出し
人には解読が難しい処理結果結果を簡単に読み取れるプレーンなXMLまたはJSON
HTTPでの転送に加えて、SMTP、FTPなどの転送も可能HTTPでの転送のみ
JavascriptでSOAPを呼び出すことも可能だが、実装は困難。Javascriptで簡単に呼び出し可能
やや遅いパフォーマンスパフォーマンスの向上、CPU負荷の低減、コードのスリム化が見込める

SAP HANA SE11で新しいデータ構造を構築する

Webエンジニアであるかどうかにかかわらず、RESTサービスを利用してできる最も一般的なメソッドについて聞いたことがあるかと思います。

この一般的なメソッドである”Create”、”Read”、”Update”、”Delete”の4つの操作は、あらゆるWebアプリケーションの基本です。

本記事では、仮のビジネスシナリオを用いて、SAP Rest API Web Serviceを作成するために必要な手順を紹介します。

顧客がモバイルアプリケーションを必要としており、すべてのパートナーを検索したり、パートナーIDを使用して個々のパートナーをフィルタリングしたいという機能要求を持つと仮定します。

まず、SAP Data Dictionary (SE11)を使ってデータ構造タイプを作成する必要があります。

このデータ構造で、どのデータをAPIとするかを決定します。

構造体を作成して「ZMOBILE_MEMBERS」と名付け、いくつかのフィールドを追加します。

SAP S/4HANA 導入支援サービス 基本ガイドブック

SAP HANA SEGWで新規プロジェクトを作成する

次に、SAP HANA の SEGWを使ってSAP Gatewayにアクセスし、新しいプロジェクトを作成します。

構造体をデータモデルにインポートします。

新しいデータモデルをインポートするための、選択肢がいくつかあるのがお分かりいただけるとか思います。

ファイルからモデルをインポートすることができますし、RFCファンクションモジュールのインターフェースを使用することもできます。検索結果を利用してモデルを作成することも可能です。

ここでは、DDIC(Data Dictionary) Structureを使用します。

エンティティに適切な名前を入力し、「Create Default Entity Set」をチェックすると、クエリ操作ができるようになります。

次に、表示させたいフィールドを選択し、最後にキーとなるフィールドを決定します。

これで準備完了です。サービスを実装する準備が整いました。

Service Implementationには、先述したRESTの代表的な4操作が表示されています。

今回は、エンティティクラスのGetEntity(Read)メソッドとGetEntitySet(Query)メソッドを実装します。実装したら保存してから「Generate Runtime Objects」ボタンをクリックします。

SAP Gatewayは、データプロバイダとモデルプロバイダのクラスを生成します。

ここで、「クエリ操作」を右クリックし、「Go to ABAP workbench」を選択します。

この時点のデータプロバイダクラスは、データを提供する機能までは持っていますが、どのように提供するかの実装をしていないので、動作しません。

編集モードを開き、MEMBERSSET_GET_ENTITYSEYメソッドを選択して、再定義をクリックします。これにより、実装の準備が整いました。

今回は例なので、データを取得するための数行のコードを書くだけで止め、フィルターもエラー処理もせず、すべてが正常に動作することを前提とします。

METHOD membersset_get_entityset.

  SELECT partner, addrcomm, name_first, name_last, crdat FROM but000
    INTO TABLE @DATA(lt_but000) UP TO 100 ROWS
    WHERE name_first NE @space
    AND name_last NE @space.

  IF lines( lt_but000 ) GT 0.
    “et_entityset is our exporting table with data
    APPEND LINES OF lt_but000 TO et_entityset.
  ENDIF.

ENDMETHOD.

実装が完了したら、保存してactivateしてください。

サービスを試す前に、Gatewayにサービスを登録する必要がありますので、t-code /n/IWFND/MAINT_SERVICESを入力し、add serviceボタンをクリックしてください。

登録するサービスを選択し、「Add Selected Services」ボタンをクリックします。

「メタデータの読み込みに成功しました」というポップアップが表示されれば、サービスを利用する準備が完了します。

SAP HANA で構築したサービスをGatewayでテストする

テスト対象のサービスを選択してください。ここでは以下のURLを使用しています。

/sap/opu/odata/sap/ZREST_MOBILE_BACKEND_SRV/?$format=xml

このURLをGateway Clientで実行すると、サービスのメタデータにアクセスできます。

メタデータを使用してサービスを利用しようとするタイプのフレームワークを使用してアプリケーションを開発する際に必要になるケースがあります。

もしサービスの詳細情報を確認したい場合は、「Add URI Option」をクリックし、「sap-documentation=all」オプションを選択します。

「sap-documentation=all」オプションを実行すると、サービスの詳細情報が表示されます。

それではテストを実施してみましょう。

「EntitySets」ボタンをクリックして、適切なentitysetを選択します。

今回はGETメソッドを使用することにします。

フォーマットをjsonに変更し、実行をクリックします。

実行後にJSON形式での結果が帰ってくることが確認できれば、テスト成功です。

このURIを外部に提供することで、様々なサービスや言語からでもデータにアクセスできるようになりました。

まとめ

以上が、SAP HANA環境を用いてのREST API構築手順のご紹介となります。

ここまでご覧いただければおわかりかと思いますが、ほんの数ステップでSAPのデータを公開することができます。ぜひお試しいただき、自社サービスの構築等にお役立ていただければと思います。

「パソナテックではSAP S/4 HANAマイグレーションを検討する際に欠かせない、考慮すべきポイントをまとめた入門資料「SAP S/4 HANAへの道 知っておくべきこと、今からやれることとは?」をご用意しました。本資料は、SAP S/4 HANAマイグレーションへ進む方へ必見の資料です。ぜひダウンロードいただき、ご覧ください。

SAPマイグレーション すべての選択肢 大全集
SAP S/4HANA 導入支援サービス 基本ガイドブック