手順 2: SAP アイテム用のアプリケーション定義ファイルを作成する
完了までの時間: 15 分
目的:Microsoft SharePoint Server のビジネス Data Catalog機能は、基幹業務 (LOB) アプリケーションのデータを公開し、ポータルに組み込みます。 このデータをポータル サイトに組み込むには、Microsoft Office SharePoint Server で使用できるアプリケーション定義ファイルを作成する必要があります。
Microsoft Office SharePoint Server 2007 SDK で使用できるビジネス Data Catalog定義エディター ツールを使用すると、ビジネス Data Catalog用のアプリケーション定義ファイルを作成できます。 このツールは定義ファイルの XML ファイルを自動的に生成するため、XML エディターでファイルを手動で作成する必要はありません。
作成する Microsoft Office SharePoint Server アプリケーションの目的は次のとおりです。
顧客名に基づいて SAP システムで顧客を検索します。
フェッチされた顧客の一覧から顧客を選択し、顧客の詳細を取得します。
フェッチされた顧客の一覧から顧客を選択し、顧客の販売注文を取得します。
これらの要件ごとに、ビジネス Data Catalog定義エディター ツールで一連のタスクを完了する必要があります。 このトピックでは、これらのタスクを実行する方法について説明します。
前提条件
ビジネス Data Catalog定義エディターが Microsoft Office SharePoint Server 2007 SDK の一部としてインストールされている必要があります。
アプリケーション定義ファイルの作成
このトピックでは、WCF サービス用のアプリケーション定義ファイルを作成する手順について説明します。
WCF LOB サービスに接続し、エンティティを作成する
WCF サービスに接続して、サービスの Web サービス記述言語 (WSDL) を抽出する必要があります。 WSDL から、ビジネス Data Catalog定義エディターによってメソッドが抽出されます。 これらのメソッドを使用してエンティティを作成できます。 この例では、顧客と販売注文ごとに 1 つずつ、2 つのエンティティが作成されます。
WCF サービスに接続してエンティティを作成するには
ビジネス Data Catalog定義エディターを起動します。 [スタート] メニューの [Microsoft Business Data Catalog 定義エディター] をクリックします。
ツール バーの [ LOB システムの追加] をクリックします。
[LOB システムの追加] ウィンドウで、[ Web サービスへの接続] をクリックします。
[ URL ] ボックスに、WCF サービスの URL を入力します。 URL は次の形式である必要があります。
https://<computer_name>/Customer_Order/Rfc.svc?wsdl
ここで、Rfc.svc は Rfc コントラクト用に作成されたファイルです。
URL は、「 手順 1: SAP 成果物を WCF サービスとして発行する」のトピックで説明されているように、WCF サービスが正常に発行されたかどうかをテストするときに使用できます。
[Connect] をクリックします。
WCF アダプター サービス開発ウィザードで選択した操作を表示するには、[ Web メソッドの追加 ] タブをクリックします。次の方法が表示されます。
SD_RFC_CUSTOMER_GET
BAPI_SALESORDER_GETLIST
に Web メソッドを追加する
メソッドをデザイン サーフェイスにドラッグします。 両方の操作を異なるエンティティにドラッグしてください。
のエンティティを作成する
[OK] をクリックします。
[ LOB システムの名前を入力 してください] ダイアログ ボックスで、[ LOB システム名 ] ボックスに名前を入力します。 この例では、 Customer_Order呼び出し、[OK] をクリック します。
ビジネス Data Catalog定義エディターでは、2 つのエンティティが Entity0 と Entity1 として一覧表示されます。 これらのエンティティにわかりやすい名前を付けます。 SD_RFC_CUSTOMER_GETのエンティティの名前を Customer に変更し、BAPI_SALESORDER_GETLISTのエンティティの名前を SalesOrder に変更します。 エンティティの名前を変更するには、次の手順を実行します。
[Customer_Order] ノードを展開し、[エンティティ] ノードを展開します。
[Entity0] ノードを選択します。
[プロパティ] ウィンドウで、[名前] ボックスに「 Customer 」 と 入力します。
[Entity1] ノードを選択します。
[プロパティ] ウィンドウで、[名前] ボックスに 「SalesOrder 」 と 入力します。
メソッドのユーザー名とパスワード ヘッダーを指定する
SAP システムで選択した RFC の WCF サービスを作成するときに、エンドポイント動作構成の一部としてユーザー名とパスワード ヘッダーを指定しました。 「手順 1: SAP 成果物を WCF サービスとして発行する」を参照してください。 メソッドのプロパティには同じ値を指定する必要があります。
ユーザー名とパスワード ヘッダーを指定するには
SD_RFC_CUSTOMER_GET メソッドのユーザー名とパスワード ヘッダーを追加します。
[メタデータ オブジェクト] ペインで、[ 顧客 ] ノードを展開し、[ メソッド ] ノードを展開します。
[SD_RFC_CUSTOMER_GET] ノードをクリックし、[プロパティ] ウィンドウの [ プロパティ ] ボックスに対する省略記号 (...) ボタンをクリックします。
[PropertyView コレクション エディター] ウィンドウで [追加] をクリックし、[プロパティ] ウィンドウで[名前] ボックスに「HttpHeaderUserName」と入力します。 同様に、[PropertyValue] ボックスに「MyUserHeader」と入力します。 [種類] ボックスに [System.String] を選択します。
を追加する
[PropertyView コレクション エディター] ウィンドウで [ 追加] をクリックし、[プロパティ] ウィンドウで[名前] ボックスに 「HttpHeaderPassword 」 と 入力します。 同様に、PropertyValue ボックスに「MyPassHeader」と入力します。 [種類] ボックスに [System.String] を選択します。
[OK] をクリックします。
BAPI_SALESORDER_GETLIST メソッドのユーザー名とパスワード ヘッダーを追加します。
[メタデータ オブジェクト] ペインで、 SalesOrder ノードを展開し、[ メソッド ] ノードを展開します。
[BAPI_SALESORDER_GETLIST] ノードをクリックし、[プロパティ] ウィンドウの [ プロパティ ] ボックスに対する省略記号 (...) ボタンをクリックします。
[PropertyView コレクション エディター] ウィンドウで [追加] をクリックし、[プロパティ] ウィンドウで[名前] ボックスに「HttpHeaderUserName」と入力します。 同様に、[PropertyValue] ボックスに「MyUserHeader」と入力します。 [種類] ボックスに [System.String] を選択します。
[PropertyView コレクション エディター] ウィンドウで [ 追加] をクリックし、[プロパティ] ウィンドウで[名前] ボックスに 「HttpHeaderPassword 」 と 入力します。 同様に、PropertyValue ボックスに「MyPassHeader」と入力します。 [種類] ボックスに [System.String] を選択します。
[OK] をクリックします。
SAP システムへの接続用に単一 Sign-On を設定する
このトピックのすべての手順を完了すると、SharePoint アプリケーションにインポートできるアプリケーション定義ファイルが作成されます。 アプリケーションから SAP メソッドを呼び出して、SAP システムから関連データを取得します。 これを有効にするには、SAP システムのユーザーと SharePoint アプリケーションのユーザーとの間にマッピングを作成する必要があります。 このマッピングは、アプリケーション定義ファイルをインポートした後、SharePoint サーバーの全体管理コンソールで作成します。
ただし、マッピングを作成するには、ビジネス Data Catalog定義エディターで SecondarySsoApplicationId プロパティを設定する必要があります。
SecondarySsoApplicationId プロパティを設定するには
[メタデータ オブジェクト] ペインで、[ Customer_Order ] ノードを展開し、[ インスタンス ] ノードを展開します。
[ Customer_Order_Instance] をクリックし、[プロパティ] ウィンドウの [ プロパティ ] ボックスに対する省略記号 (...) ボタンをクリックします。
[PropertyView コレクション エディター] ウィンドウで [追加] をクリックし、[プロパティ] ウィンドウで[名前] ボックスに「SecondarySsoApplicationId」と入力します。 同様に、[PropertyValue] ボックスに「SAPSSO」と入力します。 [種類] ボックスに [System.String] を選択します。
を追加します
[OK] をクリックします。
要件 1: 顧客名に基づいて顧客を検索する
顧客名に基づいて顧客を検索するために使用できるアプリケーション定義ファイルを作成するには、次の一連のタスクを実行する必要があります。
SD_RFC_CUSTOMER_GET メソッドで、フィルターを作成し、顧客名を格納するパラメーターにマップします。
SD_RFC_CUSTOMER_GET メソッドの Finder メソッド インスタンスを作成します。 Finder メソッドは、フィルターに基づいてレコードの一覧を取得します。
フィルターを作成し、それを顧客名パラメーターにマップするには
フィルターを作成します。
[メタデータ オブジェクト] ウィンドウで、[ 顧客 ] ノードを展開し、[メソッド] ノード を 展開します。
SD_RFC_CUSTOMER_GETメソッドを展開し、[ フィルター] を右クリックし、[ フィルターの追加] をクリックします。
にフィルターを追加する
[プロパティ] ウィンドウの [名前] ボックスに「 CustomerName 」 と 入力します。
の名前を指定します
FilterType プロパティで、WildcardFilter を選択します。
フィルターを、SD_RFC_CUSTOMER_GET メソッドの NAME1 パラメーターにマップします。
[メタデータ オブジェクト] ウィンドウで、[ 顧客 ] ノードを展開し、[メソッド] ノード を 展開します。
SD_RFC_CUSTOMER_GET メソッドを展開し、[ パラメーター] ノードを展開します。
NAME1 ノードを展開し、2 番目の NAME1 ノードをクリックします。 NAME1 パラメーターには、顧客の名前が含まれています。
[プロパティ] ウィンドウで、FilterDescriptor リストから CustomerName を選択します。
にマップする
SD_RFC_CUSTOMER_GET メソッドの Finder メソッド インスタンスを作成するには
[メタデータ オブジェクト] ウィンドウで、[ 顧客 ] ノードを展開し、[メソッド] ノード を 展開します。
[SD_RFC_CUSTOMER_GET] ノードを展開し、[インスタンス] を右クリックし、[メソッド インスタンスの追加] をクリックして [メソッド インスタンスの作成] ウィンドウを開きます。
を追加する
[メソッド インスタンスの作成] ウィンドウで、[メソッド インスタンスの種類] の [Finder] をクリックします。 [戻り値の型][Descriptor] の [CUSTOMER_T] を選択します。
を追加する
[OK] をクリックします。
[プロパティ] ウィンドウの [名前] ボックス に「GetCustomerByName_Instance 」 と 入力します。
要件 2: 顧客の一覧から特定の顧客の詳細を取得する
顧客名に基づいて顧客を検索するために使用できるアプリケーション定義ファイルを作成するには、次の一連のタスクを実行する必要があります。
SD_RFC_CUSTOMER_GET メソッドで識別子を作成し、それを顧客番号を格納するパラメーターにマップします。
SD_RFC_CUSTOMER_GET メソッドの Specific Finder メソッド インスタンスを作成します。 Specific Finder メソッドは、識別子に基づいて特定のレコードを検索します。
識別子を作成し、それを顧客番号パラメーターにマップするには
Customer エンティティの識別子を作成します。
[メタデータ オブジェクト] ウィンドウで、[ 顧客 ] ノードを展開します。
[識別子] ノードを右クリックし、[識別子の追加] を選択します。
に識別子を追加する
[プロパティ] ウィンドウの [名前] ボックスに 「CustomerID 」 と 入力します。
[種類] ボックスに [System.String] を選択します。
の名前を指定します
識別子を SD_RFC_CUSTOMER_GET メソッドのキー パラメーターにマップします。
[メタデータ オブジェクト] ウィンドウで、[ 顧客 ] ノードを展開し、[メソッド] ノード を 展開します。
SD_RFC_CUSTOMER_GET メソッドを展開し、[ パラメーター] ノードを展開します。
KUNNR パラメーターを展開し、2 番目の KUNNR ノードをクリックします。
[プロパティ] ウィンドウで、[識別子] の一覧から [CustomerID[Customer] を選択します。
にマップする
入力パラメーターと戻り値パラメーターの間の関連付けを設定します。
[メタデータ オブジェクト] ウィンドウで、[ 顧客 ] ノードを展開し、[メソッド] ノード を 展開します。
SD_RFC_CUSTOMER_GET メソッドを展開し、[ パラメーター] ノードを展開します。
CUSTOMER_T ノードを展開し、次に 2 つ目のCUSTOMER_T ノード、次に Item ノードを展開し、KUNNR ノードをクリックします。
[プロパティ] ウィンドウで、[識別子] の一覧から [CustomerID[Customer] を選択します。
SD_RFC_CUSTOMER_GET メソッドの Specific Finder メソッド インスタンスを作成するには
[メタデータ オブジェクト] ペインで、[ 顧客 ] ノードを展開し、[ メソッド ] ノードを展開します。
[SD_RFC_CUSTOMER_GET] ノードを展開し、[インスタンス] を右クリックし、[メソッド インスタンスの追加] を選択して [メソッド インスタンスの作成] ウィンドウを開きます。
を追加する
[メソッド インスタンスの作成] ウィンドウで、[メソッド インスタンスの種類] に [Specific Finder ] を選択 します。 同様に、 [戻り値の型] [Descriptor] の [CUSTOMER_T] を選択します。
を追加する
[OK] をクリックします。
[プロパティ] ウィンドウで、[名前] ボックス に「GetCustomerByNumber_Instance 」 と 入力します。
要件 3: 顧客の一覧から特定の顧客の販売注文の詳細を取得する
特定の顧客の販売注文の詳細を取得するために使用できるアプリケーション定義ファイルを作成するには、次の一連のタスクを実行する必要があります。
Customer エンティティと SalesOrder エンティティ間の関連付けを設定します。
BAPI_SALESORDER_GETLIST メソッドの Association メソッドを作成します。
Customer エンティティと SalesOrder エンティティの間に関連付けを作成するには
[メタデータ オブジェクト] ウィンドウで、[ SalesOrder ] ノードを展開し、[メソッド] ノード を 展開します。
BAPI_SALESORDER_GETLIST メソッドを展開し、[ パラメーター] ノードを展開します。
CUSTOMER_NUMBER ノードを展開し、2 番目のCUSTOMER_NUMBER ノードをクリックします。
[プロパティ] ウィンドウで、[識別子] の一覧から [CustomerID[Customer] を選択します。
BAPI_SALESORDER_GETLIST メソッドの Association メソッド インスタンスを作成するには
[メタデータ オブジェクト] ウィンドウで、[ SalesOrder ] ノードを展開し、[メソッド] ノード を 展開します。
[BAPI_SALESORDER_GETLIST] ノードを展開し、[インスタンス] を右クリックし、[メソッド インスタンスの追加] を選択して [メソッド インスタンスの作成] ウィンドウを開きます。
を追加する
[メソッド インスタンスの作成] ウィンドウで、[メソッド インスタンスの種類] に [関連付け] を選択します。
[ ソース エンティティ] ボックスの 一覧で [顧客] を選択 します。
[ 戻り値の種類]の 一覧で[ SALES_ORDERS..] を選択します。
を作成する
[OK] をクリックします。
[プロパティ] ウィンドウで、[名前] ボックス に「SalesOrderForCustomer_Instance 」 と 入力します。
の名前を指定します
System.Null 許容型のパラメーターを削除する
BAPI_SALESORDER_GETLIST メソッドの Association メソッド インスタンスを作成するときに、戻り値の型をSALES_ORDERSとして選択しました。 SALES_ORDER パラメーターを展開すると、一部のパラメーターが System.Nullable 型であることがわかります。 パラメーターの種類を確認するには、Business Data Catalog 定義エディターでパラメーターを選択し、TypeName プロパティの値を確認します。
このようなパラメーターの場合、ビジネス Data Catalog定義エディターでは、同じ名前の "指定" サフィックスを持つ別のパラメーターが作成されます。 たとえば、 パラメーター ITM_NUMBER と ITM_NUMBERSpecifiedを確認します。 Microsoft Office SharePoint Server では、System.Null 許容パラメーターはサポートされていません。 そのため、System.Nullable パラメーター型を含むレコードを試すと、例外がスローされます。 したがって、ビジネス Data Catalog定義エディターからパラメーター ("指定された" サフィックスと同じ名前を持つパラメーターの有無にかかわらず) の両方を削除する必要があります
System.Nullable 型のパラメーターを削除するには
[メタデータ オブジェクト] ウィンドウで、[ SalesOrder ] ノードを展開し、[メソッド] ノード を 展開します。
[BAPI_SALESORDER_GETLIST] ノードを展開し、[パラメーター] ノードを展開します。
[SALES_ORDERS] を展開し、2 番目のSALES_ORDERSを展開して、[項目] を展開します。
名前に "Specified" サフィックスを含むパラメーターを右クリックし、[削除] を選択 します。
削除したパラメーターと同じ名前のパラメーターをサフィックスなしで右クリックし、[削除] を選択 します。 通常、このパラメーターは、"Specified" サフィックスを持つパラメーターの直前にあります。
既定のパラメーターを設定する
BAPI_SALESORDER_GETLISTは 2 つのパラメーターを受け取ります。 これらのパラメーターの 1 つである TRANSACTION_GROUP は、既定のパラメーターです。 そのため、このパラメーターの既定値を設定する必要があります。
TRANSACTION_GROUPの既定値を設定するには
[メタデータ オブジェクト] ペインで、 SalesOrder ノードを展開し、[ メソッド ] ノードを展開します。
[BAPI_SALESORDER_GETLIST] ノードを展開し、[インスタンス] ノードを展開します。
SalesOrderForCustomer_Instance メソッド インスタンスを選択し、[プロパティ] ペインで[DefaultValues] ボックスに対して省略記号ボタン (...) をクリックします。
[編集] ウィンドウTRANSACTION_GROUPノード を 展開し、[ TRANSACTION_GROUP ] ボックスに既定値 0 を指定します。
の既定値を指定します
[閉じる] をクリックします。
アプリケーション定義をファイルにエクスポートする
これで、SAP システム インスタンスのメタデータを含むアプリケーション定義が作成されました。 この定義は、Microsoft Office SharePoint Server にインポートできる XML ファイルにエクスポートする必要があります。
アプリケーション定義をファイルにエクスポートするには
[メタデータ オブジェクト] ペインで、[ Customer_Order ] ノードを右クリックし、[ エクスポート] をクリックします。
ファイルを Customer_Order.xml として保存します。
次の手順
ここで、SAP システムからデータを取得する SharePoint アプリケーションを作成する必要があります。 手順については、「 手順 3: SAP からデータを取得する SharePoint アプリケーションを作成 する」を参照してください。