【SAPが動画で学べる!】YouTubeチャンネル開設しました ▶ SAPラボチャンネルはコチラ

【SAP Fiori】RAPでODataサービスを作る方法

登場人物紹介

三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退しSAPの後進育成と啓蒙活動に従事中!
若者に負けぬようX(旧Twitter)も奮闘中。

この記事を読むメリット

  • RAP で OData サービスを作る順番(CDS ビュー → サービス定義 → サービスバインディング → 公開)が分かる
  • Eclipse(ADT)の画面で、CDS ビュー・サービス定義・サービスバインディングを作って公開する手順が分かる
  • 作ったサービスを T-CODE:/IWFND/MAINT_SERVICE・ブラウザ・T-CODE:/IWFND/GW_CLIENT で確かめる方法が分かる

前編の「ODataとは?仕組みと見方を解説」では、SAP が用意した OData サービスを開いて、中身の見方を説明しました。

後編のこの記事では、RAP(ABAP RESTful Application Programming Model) を使って、OData サービスを自分で作ります。

会社コードの一覧を返す読み取り専用のサービスを、Eclipse の画面と SAP の画面を見ながら 1 つずつ作り、公開して呼び出すところまで進めます。OData は V2 と V4 の 2 通りを作ります。

レイナ

博士!OData の見方は分かったんですけど、自分で OData サービスを作るにはどうすればいいんですか?

博士

うむ、RAP で作れるぞい。会社コードを返すサービスを、Eclipse と SAP の画面を見ながら一緒に作ってみるのじゃ!

SAPフリーランスバンク SAPフリーランスバンク
  • 転職求人
  • フリーランス案件
株式会社日立産業制御ソリューションズ

【リモート可】【PM/PL候補】【東京】SAP(S/4HANA)エンジニア ※フレックスタイム制/ワークライフバランス◎(S/4HANA)

年収
430~800万円 / 年
勤務地
東京本社:東京都台東区秋葉原6番1号(...
雇用形態
正社員
要スキル:
【必須】 SAP導入に強い興味があり、以...
キリンビジネスシステム株式会社

SAP会計領域コンサルタント(管理職)/キリングループ唯一のIT会社(FI/CO)

年収
900~1,300万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 以下A・B・Cすべてを...
キリンビジネスシステム株式会社

SAPコンサルタント/キリングループ唯一のIT会社(SD/MM/PP)

年収
500~850万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 SAPアプリケーショ...
株式会社ベイカレント・コンサルティング

【SAPコンサルタント】経営戦略実現を全社横断変革で支援/平均年収1,350万円

年収
600~2,500万円 / 年
勤務地
東京都港区麻布台1-3-1麻布台ヒル...
雇用形態
正社員
要スキル:
【必須(MUST)】 社会人経験3年以上...
株式会社 ホープス

【年収1000万円可】【リモート可】【上流工程】【SAP導入コンサルタント】リモート・ハイブリッド勤務OK|平均残業月10時間/HOPES ※基幹系業務システムの導入推進を行っていただける方を募集

年収
800~1,800万円 / 年
勤務地
〒 1040033:東京都中央区新川1-3-17新...
雇用形態
正社員
要スキル:
■SAPコンサルタント 【必須】 SAPモ...
COFIPP

【S/4HANA AMS体制Functional Lead】リモート可/R2R・P2D領域インシデント対応

月額単価
~1,500,000円 / 月
稼働場所
東京都
業務領域
要件定義, 運用・保守
作業内容:
グローバル企業のSAP S/4HANA AMS体制に...
COMMSD

【ECC6.0→S/4HANA再構築】東京・都内(出社)/SD・MM・CO ABAP開発・設計・テスト

月額単価
~1,200,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori), テスト
作業内容:
SAP ECC6.0からS/4HANAへの大型再構築プ...
MMPPSD

【SAP S/4保守・運用(ABAP)】東京・田無(テレワーク併用)/インシデント対応・ABAP改修

月額単価
~1,000,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori), 運用・保守
作業内容:
SAP S/4の保守・運用フェーズに参画し、...
COFIMMPPSD

【SAP Public Cloud導入(組立製造業・多モジュール)】兵庫(リモート対応可)/MM・SD・FI・CO・PP

月額単価
~1,100,000円 / 月
稼働場所
兵庫県
業務領域
要件定義
作業内容:
組立製造業を対象としたSAP Public Clou...
MMSD

【S/4HANA導入支援(システムテスト・移行)】東京・リモート併用/移行支援

月額単価
~1,400,000円 / 月
稼働場所
東京都
業務領域
テスト
作業内容:
S/4HANA導入プロジェクトの移行フェーズ...
COFIMMSD

【S/4HANA導入支援】東京(リモート併用)/基本設計&実装

月額単価
~1,400,000円 / 月
稼働場所
東京都
業務領域
設計
作業内容:
商社系のシステム再構築プロジェクトに...
SD

【S/4HANA新規導入支援(SDコンサルタント)】東京(リモート併用)/設計構築フェーズ

月額単価
~1,500,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
大手企業のS/4HANA新規導入プロジェクト...
COFI

【S/4HANA新規導入支援(原価チームリーダー)】東京駅・リモート併用

月額単価
~1,900,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
S/4HANA新規導入プロジェクトに参画し、...
FIPP

【S/4HANAコンサルティング(FI/PP)】兵庫・加古川(リモート併用)/結合テスト・キーユーザ教育

月額単価
~1,300,000円 / 月
稼働場所
兵庫県
業務領域
テスト, その他
作業内容:
組立製造業向けのS/4HANA導入プロジェク...
COFI

【商社向けパブクラ移行(FICOコンサル)】宮城・仙台(リモート併用)/要件定義+構築

月額単価
~1,100,000円 / 月
稼働場所
宮城県
業務領域
要件定義, 設計
作業内容:
総合商社向けのSAP PublicEdition移行案...
この記事のポイント

前提

  • 使うツール: Eclipse と ABAP Development Tools(ADT)
  • 使うトランザクション: /IWFND/MAINT_SERVICE・/IWFND/GW_CLIENT・/IWFND/V4_ADMIN
  • 例のデータ: テーブル T001(会社コード)
  • 作るもの: CDS ビュー ZST006_I_CompanyCode、サービス定義 ZST006_UI_COMPANYCODE、サービスバインディング ZST006_UI_COMPANYCODE_O2(V2)と ZST006_UI_COMPANYCODE_O4(V4)
  • 作る場所: パッケージ $TMP(ローカルオブジェクト)
  • 名前の ZST006_ は、この記事で使った例です。ほかの人と重ならない名前にするとよいでしょう。

SAP のヘルプでは、RAP の前提(Prerequisites)として、AS ABAP 7.55 SP00 以上で作業していること、SAP Gateway の設定が済んでいること、ADT で ABAP プロジェクトを作ってシステムにつないでいることを挙げています。権限については、ロール SAP_BC_DWB_ABAPDEVELOPER(ABAP Developer)と SAP_BC_DWB_WBDISPLAY(Display User)を挙げています。サービスバインディングなどの権限は、これとは別に足す必要があるとしています。SAP Gateway については、サービスの開発に /IWFND/RT_DEVELOPER、公開に /IWFND/RT_ADMIN、利用に /IWFND/RT_GW_USER のテンプレートのロールが要るとしています。

RAP で作るもの

実務での要件の例

社内の別のシステムの担当から「会社コードの一覧を読みたいので、OData のサービスを用意してほしい」と頼まれた場面を考えます。この要件は、次のように分けて進めます。

要件の部分どうするか
返す項目を決めるCDS ビュー ZST006_I_CompanyCode で、テーブル T001 の会社コード・名称・都市・国・通貨を選びます
OData サービスにするサービス定義 ZST006_UI_COMPANYCODE で公開する CDS ビューを決め、サービスバインディング(V2・V4)を作ります
呼び出せるようにするサービスバインディングを公開し(V4 は T-CODE:/IWFND/V4_ADMIN で公開)、ブラウザや T-CODE:/IWFND/GW_CLIENT で確かめます
データを更新できるようにするこの記事では扱いません。作るのは読み取り専用のサービスです

作る部品と順番

RAP では、OData サービスのデータモデルを CDS で定義します。そのうえで、次の順に部品を作ります。

RAP で OData サービスができるまで

この記事では、テーブル T001 から CDS ビューを作り、② のサービス定義から V2 と V4 の 2 つのサービスバインディングを作ります。前編で見た V2 と比べられるように、両方を作ります。

部品役割
① CDS ビュー(データ定義)テーブルのどの項目を使うかを、SQL のような文で定義します。
② サービス定義OData サービスに含める CDS ビューを決めます。OData の版(V2・V4)には関係しません。
③ サービスバインディングサービス定義を、OData V2 や OData V4 などのプロトコルに結び付けます。
④ 公開(Publish)サービスバインディングの画面で公開すると、SAP Gateway で有効になり、呼び出せるようになります。

1 つのサービス定義から、サービスバインディングは複数作れます。

Eclipse を準備する

RAP の部品は、Eclipse に ABAP Development Tools(ADT)を入れて作ります。ADT は SAP の配布サイト(tools.hana.ondemand.com)で配られています。

  • 対応する Eclipse の版は、配布サイトの ADT の欄に書かれています。
  • Eclipse のメニュー Help → Install New Software で、配布サイトの URL https://tools.hana.ondemand.com/latest を入れ、ABAP Development Tools を選んで入れます。
  • Windows からオンプレミスの SAP につなぐには、SAP GUI for Windows も要ります。

1. ABAP プロジェクトを作る

ADT では、SAP のシステムとつなぐために ABAP プロジェクト を作ります。メニューの File → New → ABAP Project を選びます。

File メニューの New

画面の見方

  1. New: 新しく作るものを選ぶメニューです。
  2. ABAP Project: SAP のシステムにつなぐプロジェクトを作ります。

2. 接続先を選ぶ

接続先のシステムを選んで「Next」を押します。

接続先の選択

画面の見方

  1. 接続先: つなぐシステムの行です。一覧には、SAP Logon に登録してある接続先が出ます。
  2. Next: 次の画面に進みます。

この例では、SAP Logon の接続先 S4(システム ID FAA)を選びました。次の接続の設定の画面は、そのまま「Next」を押します。

3. ログオンする

クライアント・ユーザー・パスワード・言語を入れて、「Finish」を押します。

ログオン

画面の見方

  1. ログオンの情報: SAP にログオンするクライアント・ユーザー・パスワード・言語です。
  2. Finish: プロジェクトを作ります。

この例では、クライアント 100、言語 JA でログオンしました。

4. プロジェクトを確かめる

左の Project Explorer に、作ったプロジェクトが表示されます。

Project Explorer

画面の見方

  1. ABAP プロジェクト: つないだシステムのプロジェクトです。後ろの [ ] に、システム・クライアント・ユーザー・言語が表示されます。
  2. Local Objects ($TMP): 自分のローカルオブジェクト(パッケージ $TMP)です。この記事の部品は、すべてここに作ります。

CDS ビューを作る

最初に、テーブル T001 から会社コードの項目を選ぶ CDS ビューを作ります。CDS ビューは データ定義(Data Definition) として作ります。

1. 新規作成のメニューを開く

Local Objects ($TMP) を右クリックし、New → Other ABAP Repository Object を選びます。

右クリックのメニュー

画面の見方

  1. Local Objects ($TMP): 作る先のパッケージです。
  2. New: 新しく作るもののメニューです。
  3. Other ABAP Repository Object: 作るものの種類を一覧から選びます。

2. Data Definition を選ぶ

Core Data Services → Data Definition を選んで、「Next」を押します。

Data Definition を選ぶ

画面の見方

  1. Core Data Services: CDS の部品の種類です。
  2. Data Definition: CDS ビューを書くためのデータ定義です。
  3. Next: 次の画面に進みます。

3. 名前と説明を入れる

名前と説明を入れて、「Next」を押します。

データ定義の名前

画面の見方

  1. Package: 作る先のパッケージです。
  2. Name・Description: データ定義の名前と説明です。
  3. Next: 次の画面に進みます。

この例では、Name に ZST006_I_COMPANYCODE、Description に 会社コード(OData 練習) を入れました。

4. 移送依頼の画面を進める

移送依頼を選ぶ画面です。$TMP に作るときは、何も選ばずに「Next」を押します。

移送依頼の画面

画面の見方

  1. メッセージ: パッケージ $TMP では変更記録が有効になっていない、という表示です。
  2. Next: 次の画面に進みます。

5. テンプレートを選ぶ

ソースのひな形(テンプレート)を選んで、「Finish」を押します。

テンプレートの選択

画面の見方

  1. defineViewEntity: CDS ビュー(ビューエンティティ)を作るためのテンプレートです。
  2. Finish: データ定義を作り、エディタを開きます。

テンプレートの下に、ひな形のソースが表示されます。ソースは次の手順で書き換えます。

6. ソースを書いて有効化する

開いたエディタのソースを、次のとおりに書き換えます。Ctrl+S で保存し、Ctrl+F3 で有効化します。

@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '会社コード(OData 練習)'
define view entity ZST006_I_CompanyCode
  as select from t001
{
  key bukrs as CompanyCode,
      butxt as CompanyCodeName,
      ort01 as CityName,
      land1 as Country,
      waers as Currency
}
行意味
@AccessControl.authorizationCheck: #NOT_REQUIREDアクセス制御(CDS ロール)の設定です。NOT_REQUIRED は、CDS ロールが無いときに出る警告を出さないための値で、アクセス制御そのものを止めるものではありません。CDS ロールを作れば、アクセス制御が効きます。SAP の入門の手順でも NOT_REQUIRED にしています。
@EndUserText.labelCDS ビューの説明です。
define view entity ZST006_I_CompanyCodeCDS ビューの名前です。テンプレートには、データ定義の名前をもとにした名前が入っています。
as select from t001データを読むテーブルです。
key bukrs as CompanyCodekey を付けた項目が CDS ビューのキーになります。as の後ろは項目の別名です。
butxt as CompanyCodeName など使う項目と、その別名です。

この例では、会社コードごとに見せるデータを絞る CDS ロールは作っていないので、どのユーザーにも全部の会社コードが返ります。

この例は、ABAP の言語版が Standard ABAP(従来の ABAP)のデータ定義で、テーブル T001 を直接読んでいます。ABAP for Cloud Development の言語版では、リリースされた API(と同じソフトウェアコンポーネントのオブジェクト)しか使えません。この例のシステムでは、T001 のリリース状態は「NOT_TO_BE_RELEASED」で、後継としてリリース済みの CDS ビュー I_CompanyCode が登録されていました。ABAP for Cloud Development で作るときは、I_CompanyCode のようなリリースされた CDS ビューから作ることになります。

CDS ビューのエディタ

画面の見方

  1. データ定義: 作ったデータ定義です。Core Data Services → Data Definitions の下に入ります。
  2. ソース: CDS ビューのソースです。

有効化すると、ウィンドウのタイトルに「active」と表示されます。

7. データプレビューで確かめる

エディタの中をクリックして F8 を押すと、CDS ビューが返すデータを一覧で見られます。

データプレビュー

画面の見方

  1. Data Preview: CDS ビューのデータを表示するタブです。
  2. 項目: CDS ビューの項目です。ソースで付けた別名が見出しになります。

この例では、CompanyCode・CompanyCodeName・CityName・Country・Currency の 5 項目が表示されました。

サービス定義を作る

次に、OData サービスに含める CDS ビューを決める サービス定義 を作ります。

1. Service Definition を選ぶ

Local Objects ($TMP) を右クリックし、New → Other ABAP Repository Object を選びます。Business Services → Service Definition を選んで、「Next」を押します。

Service Definition を選ぶ

画面の見方

  1. Business Services: サービス定義・サービスバインディングの種類です。
  2. Service Definition: サービス定義です。
  3. Next: 次の画面に進みます。

2. 名前と説明を入れる

名前と説明を入れて、「Next」を押します。移送依頼の画面は、CDS ビューのときと同じく何も選ばずに「Next」を押します。

サービス定義の名前

画面の見方

  1. Name・Description: サービス定義の名前と説明です。

この例では、Name に ZST006_UI_COMPANYCODE、Description に 会社コード(OData 練習) を入れました。

3. テンプレートを選ぶ

テンプレート defineService を選んで、「Finish」を押します。

サービス定義のテンプレート

画面の見方

  1. defineService: サービス定義を作るためのテンプレートです。
  2. Finish: サービス定義を作り、エディタを開きます。

4. ソースを書いて有効化する

エディタのソースを次のとおりに書き換え、Ctrl+S で保存し、Ctrl+F3 で有効化します。

@EndUserText.label: '会社コード(OData 練習)'
define service ZST006_UI_COMPANYCODE {
  expose ZST006_I_CompanyCode as CompanyCode;
}
行意味
define service ZST006_UI_COMPANYCODEサービス定義の名前です。
expose ZST006_I_CompanyCode as CompanyCode;サービスに含める CDS ビューです。as の後ろの別名(任意)が、OData のエンティティセットの名前になります。
サービス定義のエディタ

画面の見方

  1. ソース: サービス定義のソースです。

サービスバインディング(V2)を作って公開する

サービス定義を OData V2 に結び付ける サービスバインディング を作り、公開します。

1. Service Binding を選ぶ

Local Objects ($TMP) を右クリックし、New → Other ABAP Repository Object を選びます。Business Services → Service Binding を選んで、「Next」を押します(「サービス定義を作る」の手順 1 の画面で、Service Definition の 1 つ上にあります)。

2. バインディングの種類を選ぶ

名前と説明を入れ、Binding Type の一覧から種類を選びます。

バインディングの種類

画面の見方

  1. Binding Type: プロトコル(OData V2・V4、InA、SQL)と用途(UI・Web API)の組み合わせです。
  2. OData V2 – UI: OData V2 の、UI(Fiori アプリなど)用のサービスです。
  3. OData V4 – UI: OData V4 の、UI 用のサービスです。

一覧には、InA – UI・OData V2 – UI・OData V2 – Web API・OData V4 – UI・OData V4 – Web API・SQL – Web API が並びます。SAP のヘルプでは、UI は Fiori elements などの UI を付けられるサービス、Web API は UI 以外の用途で使うサービスと説明しています。また、名前の頭に、UI のサービスは UI_、Web API は API_ を付けることを勧めています。

3. サービス定義を選んで作る

名前・説明・Binding Type を入れてサービス定義を選ぶと、「Finish」が押せるようになります。この例では、そのまま「Finish」を押して作りました。

V2 のサービスバインディングの入力

画面の見方

  1. Name・Description: サービスバインディングの名前と説明です。名前は 26 文字までです。
  2. Binding Type・Service Definition: バインディングの種類と、使うサービス定義です。
  3. 注意書き: どの版を使うかの目安です。
  4. Finish: サービスバインディングを作ります。

この例では、Name に ZST006_UI_COMPANYCODE_O2、Binding Type に OData V2 - UI、Service Definition に ZST006_UI_COMPANYCODE を指定しました。

③ には、「実装タイプ managed でドラフトを使わず、Fiori Elements を使う場合は OData V2 で公開する。それ以外は OData V4 を強く推奨する」という意味の英文が表示されています。SAP のヘルプでも、取引系のサービスにはできるだけ OData V4 を使うよう書かれています。

バインディングの種類は、作った後には変えられません。

4. 有効化して公開する

サービスバインディングのエディタが開きます。Ctrl+F3 で有効化してから、Publish を押します。

公開前のサービスバインディング

画面の見方

  1. Binding Type: バインディングの種類です。
  2. Service Versions: サービスの版と、使っているサービス定義です。
  3. Local Service Endpoint: 公開の状態です。
  4. Publish: サービスを公開します。

この例では、公開前の Local Service Endpoint は Unpublished でした。

公開するには、サービスバインディングが有効化されている必要があります。

5. 公開できたことを確かめる

公開が終わると、エディタの右側にサービスの URL とエンティティセットが表示されます。

公開後のサービスバインディング(V2)

画面の見方

  1. Local Service Endpoint: 公開の状態です。
  2. Service URL: サービスの URL です。リンクを押すと、ブラウザでサービスドキュメントが開きます。
  3. Entity Set and Association: サービスに含まれるエンティティセットです。

この例では、Local Service Endpoint が Published になり、ボタンが Unpublish(公開の取り消し)に変わりました。Service URL は /sap/opu/odata/sap/ZST006_UI_COMPANYCODE_O2、エンティティセットは CompanyCode でした。エンティティセットの名前には、サービス定義で付けた別名が使われています。

サービスバインディング(V4)を作って公開する

同じサービス定義から、OData V4 のサービスバインディングも作ります。手順は V2 と同じで、Binding Type に OData V4 – UI を選びます。

この例では、Name に ZST006_UI_COMPANYCODE_O4、Description に 会社コード OData V4、Service Definition に ZST006_UI_COMPANYCODE を指定しました。

1. 有効化して公開する

エディタで Ctrl+F3 で有効化してから、Publish を押します。V4 のエディタは、Publish ボタンが左側の Services の中にあります。

公開前のサービスバインディング(V4)

画面の見方

  1. Binding Type: バインディングの種類です。
  2. Services: サービスの名前・版・サービス定義です。
  3. Local Service Endpoint と Publish: 公開の状態と、公開するボタンです。

この例では、Publish でエラー(Local Publish of … failed)が表示されました。そこで、「うまくいかないとき」の手順で公開しました。

2. 公開できたことを確かめる

公開した後にエディタを開き直すと、Local Service Endpoint が Published になっていました。Services の下の版(1.0.0)を選ぶと、右側に URL とエンティティセットが表示されます。

公開後のサービスバインディング(V4)

画面の見方

  1. Local Service Endpoint と Unpublish: 公開の状態と、公開を取り消すボタンです。
  2. サービスの版: 選ぶと、右側にその版の情報が表示されます。
  3. Service URL: サービスの URL です。
  4. Entity Set and Association: サービスに含まれるエンティティセットです。

この例では、呼び出しに使った URL は /sap/opu/odata4/sap/zst006_ui_companycode_o4/srvd/sap/zst006_ui_companycode/0001/ でした。V2 とは形が違い、/sap/opu/odata4/ で始まります。

SAP の学習コンテンツでは、V4 のサービスは単体ではなく サービスグループ として公開され、URL は /sap/opu/odata4/sap/<サービスグループ>/<リポジトリ ID>/sap/<サービス>/<版> の形になると説明しています。この例では、サービスグループがサービスバインディングの名前、リポジトリ ID が srvd、サービスがサービス定義の名前、版が 0001 でした。

SAP の画面で確かめる

公開したサービスを、SAP の画面とブラウザで確かめます。V2 の見方は前編で説明したものと同じです。

1. T-CODE:/IWFND/MAINT_SERVICE で V2 のサービスを探す

T-CODE:/IWFND/MAINT_SERVICE は、OData V2 のサービスの一覧です。「フィルタ」を押して、外部サービス名で絞り込みます。

サービスカタログのフィルタ

画面の見方

  1. 外部サービス名: 絞り込みに使うサービスの名前です。
  2. 続行: 入力した条件で絞り込みます。

この例では、外部サービス名に ZST006* と入れて絞り込みました。

登録されたサービス

画面の見方

  1. 技術サービス名: サービスカタログに登録されたサービスの名前です。
  2. 外部サービス名: サービスのもう 1 つの名前です。
  3. ICF ノードのステータス: サービスを呼び出す入口(ICF ノード)の状態を表すアイコンです。

この例では、技術サービス名と外部サービス名はどちらも ZST006_UI_COMPANYCODE_O2 で、サービスバインディングの名前と同じでした。ICF ノード ODATA は緑のアイコン(サービスが有効です)でした。Publish を押しただけで、ここに登録されています。

2. ブラウザでサービスドキュメントを開く

サービスバインディングの Service URL をブラウザで開きます。ブラウザは、ADT と同じクライアントにログオンするようにします。クライアントを指定するときは、前編で説明したとおり、URL に sap-client=<クライアント> を付けます。

https://<ホスト>:<ポート>/sap/opu/odata/sap/ZST006_UI_COMPANYCODE_O2/
サービスドキュメント

画面の見方

  1. エンティティセット: サービス定義で公開した CDS ビューです。href の値がエンティティセットの名前です。

この例では、エンティティセット CompanyCode の sap:member-title は「会社コード(OData 練習)」で、CDS ビューやサービス定義の説明と同じ文字列でした。一覧には SAP__ で始まるエンティティセットも並んでいますが、これはサービス定義で公開したものではありません。

3. $metadata でデータの形を見る

URL の後ろに $metadata を付けます。

https://<ホスト>:<ポート>/sap/opu/odata/sap/ZST006_UI_COMPANYCODE_O2/$metadata
$metadata

画面の見方

  1. エンティティタイプ: 1 件の形の定義です。名前は、サービス定義の別名の後ろに Type を付けたものです。
  2. キー: CDS ビューで key を付けた項目です。
  3. プロパティ: CDS ビューの項目です。名前はソースで付けた別名です。

この例では、エンティティタイプは CompanyCodeType、キーは CompanyCode でした。sap:label には「会社コード」「会社名」「市区町村」「国/地域コード」「通貨」のように日本語の項目名が入っています。CDS ビューのソースには、ラベルを書いていません。SAP のヘルプによると、CDS でラベルを付けていないときは、データエレメントの項目ラベルが入ります。この例でも、テーブル T001 の項目のデータエレメントの長いラベルと同じでした。

SAP のヘルプによると、RAP で作った OData V2 のサービスでは、単位と通貨の型が組み込みのエンティティセットとして自動で $metadata に入ります。この例でも、SAP__Currencies と SAP__UnitsOfMeasure が入っていました。前編で見た、SEGW で作られた標準のサービス API_COMPANYCODE_SRV の $metadata には、SAP__ で始まるエンティティセットはありません。

4. V2 のデータを JSON で見る

エンティティセットの後ろに、前編で説明したクエリオプションを付けます。ここでは、会社コード 1010 または 1710 だけを JSON で受け取ります。

https://<ホスト>:<ポート>/sap/opu/odata/sap/ZST006_UI_COMPANYCODE_O2/CompanyCode?$filter=CompanyCode eq '1010' or CompanyCode eq '1710'&$format=json
V2 のデータ(JSON)

画面の見方

  1. 1 件目: 条件に合った 1 件目のプロパティと値です。
  2. 2 件目: 条件に合った 2 件目のプロパティと値です。

この例では、会社コード 1010(Company Code 1010、Walldorf、EUR)と 1710(Company Code 1710、Palo Alto、USD)の 2 件が返りました。自分で作った CDS ビューの 5 項目が、そのまま OData のプロパティになっています。

5. V4 のデータを見る

V4 のサービスも、同じようにブラウザで開けます。URL は V4 のサービスバインディングの Service URL です。

https://<ホスト>:<ポート>/sap/opu/odata4/sap/zst006_ui_companycode_o4/srvd/sap/zst006_ui_companycode/0001/CompanyCode?$filter=CompanyCode eq '1010' or CompanyCode eq '1710'
V4 のデータ(JSON)

画面の見方

  1. value: 返ったデータの一覧です。
  2. 1 件目: 1 件目のプロパティと値です。

この例では、$format を付けなくても JSON で返りました。V2 の "d"・"results" の代わりに、"value" の中に 1 件ずつ並んでいます。V2 にあった __metadata はありません。

6. T-CODE:/IWFND/GW_CLIENT で呼び出す

SAP Gateway クライアント(T-CODE:/IWFND/GW_CLIENT)でも、V4 のサービスを呼び出せます。要求 URI に、会社コード 1010 の 1 件を指定して実行し、「データエクスプローラ」を押します。

SAP Gateway クライアント

画面の見方

  1. 要求 URI: 呼び出す URL です(ホストとポートは要りません)。
  2. ステータス: 応答のステータスコードと、その理由です。
  3. 応答本文: 応答の中身を、パラメータ名とパラメータ値の表で表示しています。

この例では、要求 URI に /sap/opu/odata4/ から入れました。ステータスコード 200(OK)が返り、会社コード 1010 の 5 項目が表示されました。

うまくいかないとき

V4 の Publish で「Local Publish of … failed」と表示される

V4 のサービスバインディングで Publish を押したときに、次のエラーのダイアログが表示された場合の対処です。

V4 の公開のエラー

画面の見方

  1. エラーのメッセージ: サービスバインディングの公開に失敗したことを表します。

もう 1 つのダイアログには「例外が発生しました」とだけ表示されます。このときは、V4 のサービスグループを T-CODE:/IWFND/V4_ADMIN で公開します。手順は次のとおりです。System Alias には、同じシステム自身を指すシステムエイリアス(画面の例では LOCAL。ローカルの印あり、RFC 接続先 NONE)を選びます。SAP Gateway を別のサーバ(ハブ)に置く構成では、サービスを作ったシステムを指すシステムエイリアスを選びます。

  1. T-CODE:/IWFND/V4_ADMIN を開き、「サービスグループ公開」を押します。
  2. System Alias に LOCAL、Service Group ID にサービスバインディングの名前(この例では ZST006*)を入れ、「サービスグループ取得」を押します。
  3. 「非公開サービスグループ」の一覧で、サービスバインディングと同じ名前の行を選び、「サービスグループ公開」を押します。
  4. カスタマイジング依頼を聞かれたら、依頼を指定して続けます。
  5. 「新規サービスグループの公開完了」と表示されたら、Eclipse でサービスバインディングのエディタを開き直します。Local Service Endpoint が Published になっています。
サービスグループ公開

画面の見方

  1. System Alias: 絞り込みに使うシステムエイリアスです。
  2. Service Group ID: 探すサービスグループの名前です。
  3. サービスグループ取得: 条件に合う、まだ公開されていないサービスグループを一覧に出します。
  4. サービスグループ: 公開するサービスグループの行です。
  5. サービスグループ公開: 選んだ行を公開します。

この例では、サービスバインディング ZST006_UI_COMPANYCODE_O4 と同じ名前のサービスグループが一覧に出ていました。

公開の取り消しと削除

練習で作ったサービスは、使い終わったら消しておくとよいでしょう。

  1. サービスバインディングのエディタで Unpublish を押し、公開を取り消します。
  2. サービスバインディング → サービス定義 → CDS ビューの順に削除します。

公開したままのサービスバインディングは、「Service endpoint of Service Binding … is published.」と出て削除できません。先に公開を取り消します。

V4 は、公開の取り消しも Publish と同じエラーになることがあります。そのときは、T-CODE:/IWFND/V4_ADMIN で次のように取り消します。

  1. 左のツリーの「サービスグループ」の下で、サービスバインディングと同じ名前のグループをダブルクリックします。
  2. 右上のシステムエイリアスの一覧で LOCAL の割当を「割当削除」で消します。
  3. ツリーのグループを右クリックし、「グループ削除」を選んで「はい」を押します。
  4. カスタマイジング依頼を聞かれたら、依頼を指定して続けます。

グループを削除すると、サービスバインディングが未公開の状態に戻り、削除できるようになります。

なお、SAP のヘルプによると、オンプレミスのシステムでは、サービスバインディングで公開できるのは今のシステムだけです。公開した状態と、そのときにできたものを移送することはできません。品質保証や本番のシステムでサービスを使うには、公開したシステムで公開を取り消し(Unpublish)、SAP Gateway のツールでサービスを有効にして保守します。

この記事の部品は、練習用にパッケージ $TMP に作りました。$TMP では変更記録が有効になっていないので(「CDS ビューを作る」の手順 4 の表示)、品質保証や本番のシステムでも使うサービスは、移送できるパッケージに作るとよいでしょう。

まとめ

  • RAP では、CDS ビュー → サービス定義 → サービスバインディング → 公開(Publish)の順に作ります。
  • 1 つのサービス定義から、V2 と V4 のサービスバインディングを作れます。URL の形は V2 が /sap/opu/odata/、V4 が /sap/opu/odata4/ で始まります。
  • 公開したサービスは、T-CODE:/IWFND/MAINT_SERVICE・ブラウザ・T-CODE:/IWFND/GW_CLIENT で確かめられます。
レイナ

CDS ビューとサービス定義を作って、バインディングで公開するだけなんですね!

博士

うむ。1 つのサービス定義から、V2 と V4 の両方を作れるのじゃ。

  • 転職求人
  • フリーランス案件
株式会社日立産業制御ソリューションズ

【リモート可】【PM/PL候補】【東京】SAP(S/4HANA)エンジニア ※フレックスタイム制/ワークライフバランス◎(S/4HANA)

年収
430~800万円 / 年
勤務地
東京本社:東京都台東区秋葉原6番1号(...
雇用形態
正社員
要スキル:
【必須】 SAP導入に強い興味があり、以...
キリンビジネスシステム株式会社

SAP会計領域コンサルタント(管理職)/キリングループ唯一のIT会社(FI/CO)

年収
900~1,300万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 以下A・B・Cすべてを...
キリンビジネスシステム株式会社

SAPコンサルタント/キリングループ唯一のIT会社(SD/MM/PP)

年収
500~850万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 SAPアプリケーショ...
株式会社ベイカレント・コンサルティング

【SAPコンサルタント】経営戦略実現を全社横断変革で支援/平均年収1,350万円

年収
600~2,500万円 / 年
勤務地
東京都港区麻布台1-3-1麻布台ヒル...
雇用形態
正社員
要スキル:
【必須(MUST)】 社会人経験3年以上...
株式会社 ホープス

【年収1000万円可】【リモート可】【上流工程】【SAP導入コンサルタント】リモート・ハイブリッド勤務OK|平均残業月10時間/HOPES ※基幹系業務システムの導入推進を行っていただける方を募集

年収
800~1,800万円 / 年
勤務地
〒 1040033:東京都中央区新川1-3-17新...
雇用形態
正社員
要スキル:
■SAPコンサルタント 【必須】 SAPモ...
COFIPP

【S/4HANA AMS体制Functional Lead】リモート可/R2R・P2D領域インシデント対応

月額単価
~1,500,000円 / 月
稼働場所
東京都
業務領域
要件定義, 運用・保守
作業内容:
グローバル企業のSAP S/4HANA AMS体制に...
COMMSD

【ECC6.0→S/4HANA再構築】東京・都内(出社)/SD・MM・CO ABAP開発・設計・テスト

月額単価
~1,200,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori), テスト
作業内容:
SAP ECC6.0からS/4HANAへの大型再構築プ...
MMPPSD

【SAP S/4保守・運用(ABAP)】東京・田無(テレワーク併用)/インシデント対応・ABAP改修

月額単価
~1,000,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori), 運用・保守
作業内容:
SAP S/4の保守・運用フェーズに参画し、...
COFIMMPPSD

【SAP Public Cloud導入(組立製造業・多モジュール)】兵庫(リモート対応可)/MM・SD・FI・CO・PP

月額単価
~1,100,000円 / 月
稼働場所
兵庫県
業務領域
要件定義
作業内容:
組立製造業を対象としたSAP Public Clou...
MMSD

【S/4HANA導入支援(システムテスト・移行)】東京・リモート併用/移行支援

月額単価
~1,400,000円 / 月
稼働場所
東京都
業務領域
テスト
作業内容:
S/4HANA導入プロジェクトの移行フェーズ...
COFIMMSD

【S/4HANA導入支援】東京(リモート併用)/基本設計&実装

月額単価
~1,400,000円 / 月
稼働場所
東京都
業務領域
設計
作業内容:
商社系のシステム再構築プロジェクトに...
SD

【S/4HANA新規導入支援(SDコンサルタント)】東京(リモート併用)/設計構築フェーズ

月額単価
~1,500,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
大手企業のS/4HANA新規導入プロジェクト...
COFI

【S/4HANA新規導入支援(原価チームリーダー)】東京駅・リモート併用

月額単価
~1,900,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
作業内容:
S/4HANA新規導入プロジェクトに参画し、...
FIPP

【S/4HANAコンサルティング(FI/PP)】兵庫・加古川(リモート併用)/結合テスト・キーユーザ教育

月額単価
~1,300,000円 / 月
稼働場所
兵庫県
業務領域
テスト, その他
作業内容:
組立製造業向けのS/4HANA導入プロジェク...
COFI

【商社向けパブクラ移行(FICOコンサル)】宮城・仙台(リモート併用)/要件定義+構築

月額単価
~1,100,000円 / 月
稼働場所
宮城県
業務領域
要件定義, 設計
作業内容:
総合商社向けのSAP PublicEdition移行案...

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

株式会社スプラッシュエンジニアリング(https://splash-eng.com/)の代表取締役。

新卒でSAPエンジニアとして働き始め、SAPエンジニア・コンサルタント歴は10年以上。
2015年にシステム開発会社である株式会社Luxyを創業し2021年にバイアウト。その後、受託開発会社の株式会社アガルートITパートナーズ代表取締役も兼任。
2024年にこれまでの会社の代表を退任し株式会社スプラッシュエンジニアリングを創業。

一緒に「SAPラボ」を盛り上げてくれる副業ライター(SAP経験者)を募集してますので、お問い合わせよりお願いします!

この記事のポイント