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
    • 以下、使用不可の項目が並ぶ。

*1:ABAPシステムならばトランザクションコード/nSPROで設定する、いわゆる「パラメータ設定」