Enterprise Servicesの解説を始めよう
最近SAPのリリースしているEnterprise Services(長いので以下、ESと略す)が充実してきた。ESとは何か、ESの存在意義は何か....はひとまず脇に置いておいて、公開情報から「使える」ESを探す方法を紹介したい。
Enterprise Servicesの探し方(1)
まずはESの一覧のありかから。
- SAPのヘルプサイト
-
- http://help.sap.com/ → 上部のタブ [Enterprise SOA] [ES for SAP ERP]
- または http://help.sap.com/content/documentation/esoa/erp/index.htm から English を選択。
- または http://help.sap.com/esoa_erp2005_2/helpdata/en/45/f0e4f6037941b2e10000000a11466f/frameset.htm
- SAPのヘルプサイトからダウンロードできるPDFドキュメント
- 前述のヘルプサイトから PDFファイル をダウンロード
- PDFへの直リンク3.34MB
- SDN内のES Workplace
- http://sdn.sap.com/ → 左のメニュー [+ Enterprise SOA]をクリック → [- Explore Enterprise Services]
- または https://www.sdn.sap.com/irj/sdn/explore-es
いずれもコンテンツは同じ(内容の更新反映時期が一時的に異なる場合がある)なので、用途に応じて使いやすい媒体を選択すればよい。
ヘルプサイトは、ハイパーテキストを生かして、体系的な読み方、理解に役立つ。
PDFドキュメントは、一覧性と検索性に優れる。1000ページ余あるので、印刷は避けたほうがよいだろう。
ES Workplaceは、Process Components > Enterprise Service Interfaces > Enterprise Service Operations と粒度が整理されていて、非常に分りやすい。WSDLをバックエンドのERPサーバ*1にもアクセスでき、本物のESを単体テストすることも可能である。このテストサーバの利用について、後日改めて紹介したい。
Enterprise Servicesの探し方(2)
では、ビジネスオブジェクト(以下BOと略す)"Sales Order"に関するESをチェックしてみよう。まずはPDFドキュメントで"Sales Order"をキーワードに検索。
P.528〜547にSales Order Processingのコンテンツが記載されている。
英語で記載されているので少々敷居が高いが....
用途
Sales Order Processingというプロセスコンポーネントは、販売側が受注伝票を登録・参照・更新できるアプリケーションの提供(the provision of applications)を可能にする。また、販売側は顧客のトレンド分析や出荷停止となっている受注伝票の一覧を見ることができる。
SAPバックエンドシステム管理の覚書
前提条件
このプロセスコンポーネントを利用するには、SD (Sales and Distribution)アプリケーションコンポーネントの導入が必要。
先日あるお客様と会話する中で、ESに対する「過剰な期待」が気になった。ESをコールするパラメータに、そのバックエンドのアプリケーションの挙動を設定するパラメータ*1をも指定でき、ESコールの度にダイナミックに設定を変更できるのではないか?という期待だ。もしそれができたら、アプリケーションロジックをサービスを呼ぶ側の恣意で変えることができる、非常に柔軟なシステムになるだろう。しかし、サービスコールするために必要な入力パラメータ数は飛躍的に多くなり、また、パラメータ同士の整合性もコール側が保証しなければならず、実際には「使えない」サービスとなってしまうと考える。
少なくとも現在、SAPがリリース済みのESに指定できる入力パラメータは、ランタイム用の引数だけであり、設定用の引数は含まれていない。
Create Sales Order
エンティティタイプは"Service Operation"。
ESR (Enterprise Service Repository)内での名称は"SalesOrderCreateRequestConfirmation_In"。実際にこのサービスをコールするときには、この名称を使う。
ESR内での「名前空間」は http://sap.com/xi/APPL/SE/Global。ESRを見ると、このディレクトリ内にこのService Operationの定義は格納されている。
CategoryはInboundで、ModeはSynchronous。このサービスに対してパラメータとともにサービスがコールされ、同期処理でレスポンスが返る仕様だ。非同期で使われるサービスの場合にはAsynchronousとなっている。
Related Web Service Definitionは ECC_SalesOrderCRTRC。たぶん、Sales OrderのCreate Recordの略だと思う。バックエンドのERPとつないでESの単体テストを行う時に、この名称を覚えておくと便利。また別途、ESの単体テストについては言及したい。
定義
Sales Order Processingに受注伝票を登録するよう(一回分の)リクエストを行い、確認メッセージを得る。
機能
このinboundオペレーションは次のメッセージタイプを処理する。
- SalesOrderCreateRequest_sync
- SalesOrderCreateConfirmation_sync
そして、以下の値をパラメータとして入力してやる必要がある。
- ProcessingTypeCode ... バックエンドシステムの「伝票タイプ」。標準受注伝票なら"OR"を指定。R/3時代と変わらんな。
- 以下、BuyerParty-InternalID などが必須項目として列挙されている。
また、次に挙げる値は使用不可。
- BuyerIDのschemeAgencySchemeAgencyID, schemeAgencyID, schemeID
- 以下、使用不可の項目が並ぶ。