步驟 2:建立 SAP 成品的應用程式定義檔
完成時間: 15 分鐘
目的:Microsoft SharePoint Server 中的商務資料目錄功能會公開企業營運 (LOB) 應用程式的資料併入入口網站。 若要將此資料併入入口網站,您必須建置 Microsoft Office SharePoint Server 可取用的應用程式定義檔。
商務資料目錄定義編輯器工具,可供 Microsoft Office SharePoint Server 2007 SDK 使用,讓您建立商務資料目錄的應用程式定義檔。 此工具會自動產生定義檔的 XML 檔案,因此您不需要在 XML 編輯器中手動建立檔案。
您建立的 Microsoft Office SharePoint Server 應用程式用途如下:
根據客戶名稱搜尋 SAP 系統中的客戶。
從擷取的客戶清單中選取客戶,並擷取客戶的詳細資料。
從擷取的客戶清單中選取客戶,並擷取客戶的銷售訂單。
針對上述每個需求,您必須在商務資料目錄定義編輯器工具中完成一組工作。 本主題提供有關如何執行這些工作的指示。
必要條件
您必須將商務資料目錄定義編輯器安裝為 Microsoft Office SharePoint Server 2007 SDK 的一部分。
建立應用程式定義檔
本主題提供建立 WCF 服務應用程式定義檔的逐步指示。
連線到 WCF LOB 服務,並建立實體
您必須連線到 WCF 服務,才能擷取服務的 Web 服務描述語言 (WSDL) 。 從 WSDL,Business 資料目錄定義編輯器會擷取方法。 這些方法可用來建立實體。 在此範例中,會建立兩個實體,每個實體分別用於客戶和銷售訂單。
連線到 WCF 服務並建立實體
啟動商務資料目錄定義編輯器。 在 [開始]功能表上,按一下[Microsoft Business 資料目錄定義編輯器]。
在工具列上,按一下 [ 新增 LOB 系統]。
在 [新增 LOB 系統] 視窗中,按一下 [ 連線至 Webservice]。
在 [ URL] 方塊中,輸入 WCF 服務的 URL。 URL 的格式必須如下:
https://<computer_name>/Customer_Order/Rfc.svc?wsdl
其中 Rfc.svc 是針對 Rfc 合約建立的檔案。
當您測試 WCF 服務是否成功發佈時,可以使用 URL,如 步驟 1:將 SAP 成品發佈為 WCF 服務主題中所述。
按一下 [連線]。
若要查看您在 WCF 配接器服務開發精靈中選取的作業,請按一下 [ 新增 Web 方法] 索引 標籤。您會看到下列方法:
SD_RFC_CUSTOMER_GET
BAPI_SALESORDER_GETLIST
將方法拖曳至設計介面。 請確定您將這兩個作業拖曳至不同的實體。
的實體
按一下 [確定]。
在 [ 輸入 LOB 系統的名稱 ] 對話方塊中,于 [LOB 系統名稱 ] 方塊中輸入名稱。 在此範例中,將它 呼叫Customer_Order,然後按一下 [ 確定]。
在商務資料目錄定義編輯器中,這兩個實體會列為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]。
按一下 [確定]。
為 BAPI_SALESORDER_GETLIST 方法新增使用者名稱和密碼標頭。
在 [中繼資料物件] 窗格中,展開 [SalesOrder ] 節點,然後展開 [ 方法] 節點。
按一下 [BAPI_SALESORDER_GETLIST] 節點,然後在 [屬性] 窗格中,針對 [ 屬性 ] 方塊按一下省略號 (...) 按鈕。
在 [PropertyView 集合編輯器] 視窗中,按一下 [新增],然後在 [屬性] 窗格中輸入 [名稱] 方塊的HttpHeaderUserName。 同樣地,針對[PropertyValue] 方塊輸入MyUserHeader。 針對 [類型]方塊選取 [System.String]。
在 [PropertyView 集合編輯器] 視窗中,按一下 [新增],然後在 [屬性] 窗格中輸入 [名稱] 方塊的HttpHeaderPassword。 同樣地,針對[PropertyValue] 方塊輸入 MyPassHeader。 針對 [類型]方塊選取 [System.String]。
按一下 [確定]。
設定單一 Sign-On 以連線到 SAP 系統
完成本主題中的所有程式執行之後,您將會建立可匯入 SharePoint 應用程式的應用程式定義檔。 從應用程式,您可以叫用 SAP 方法,以從 SAP 系統擷取相關資料。 若要啟用此功能,您必須在 SAP 系統中的使用者與 SharePoint 應用程式中的使用者之間建立對應。 匯入應用程式定義檔之後,您會在 SharePoint 管理中心主控台中建立此對應。
不過,若要建立對應,您必須在 Business 資料目錄定義編輯器中設定SecondarySsoApplicationId屬性。
若要設定 SecondarySsoApplicationId 屬性
在 [中繼資料物件] 窗格中,展開 [Customer_Order ] 節點,然後展開 [ 實例] 節點。
按一下 [Customer_Order_Instance],然後在 [屬性] 窗格中,針對 [ 屬性 ] 方塊按一下省略號 (...) 按鈕。
在 [PropertyView 集合編輯器] 視窗中,按一下 [新增],然後在 [屬性] 窗格中輸入 [名稱] 方塊的SecondarySsoApplicationId。 同樣地,輸入[PropertyValue] 方塊的SAPSSO。 針對 [類型]方塊選取 [System.String]。
按一下 [確定]。
需求 1:根據客戶名稱搜尋客戶
若要建立可用來根據客戶名稱搜尋客戶的應用程式定義檔,您必須執行下列一組工作。
在 SD_RFC_CUSTOMER_GET 方法中,建立篩選,並將它對應至儲存客戶名稱的參數。
為 SD_RFC_CUSTOMER_GET 方法建立 Finder 方法實例。 Finder方法會根據篩選來擷取記錄清單。
若要建立篩選,並將它對應至客戶名稱參數
建立篩選。
在 [中繼資料物件] 窗格中,展開 [ 客戶 ] 節點,然後展開 [方法] 節點。
展開SD_RFC_CUSTOMER_GET方法,以滑鼠右鍵按一下 [ 篩選],然後按一下 [ 新增篩選]。
在 [屬性] 窗格中,于 [名稱] 方塊中輸入CustomerName。
的名稱
針對 FilterType 屬性,選取 [萬用字元Filter]。
將篩選對應至 SD_RFC_CUSTOMER_GET 方法中的 NAME1 參數。
在 [中繼資料物件] 窗格中,展開 [ 客戶 ] 節點,然後展開 [方法] 節點。
展開 SD_RFC_CUSTOMER_GET 方法,然後展開 [參數] 節點。
展開 NAME1 節點,然後按一下第二個 NAME1 節點。 NAME1參數包含客戶的名稱。
在 [屬性] 窗格中,從FilterDescriptor清單中選取[CustomerName]。
建立 SD_RFC_CUSTOMER_GET 方法的 Finder 方法實例
在 [中繼資料物件] 窗格中,展開 [ 客戶 ] 節點,然後展開 [方法] 節點。
展開 SD_RFC_CUSTOMER_GET 節點,以滑鼠右鍵按一下 [ 實例],然後按一下 [ 新增方法實例 ] 以開啟 [建立方法實例] 視窗。
在 [建立方法實例] 視窗中,按一下[方法實例類型的尋找器]。 選取 [傳回 TypeDescriptor] 的 [CUSTOMER_T]。
按一下 [確定]。
在 [屬性] 窗格中,于 [名稱] 方塊中輸入GetCustomerByName_Instance。
需求 2:從客戶清單擷取特定客戶的詳細資料
若要建立可用來根據客戶名稱搜尋客戶的應用程式定義檔,您必須執行下列一組工作。
在 SD_RFC_CUSTOMER_GET 方法中,建立識別碼,並將其對應至儲存客戶號碼的參數。
為 SD_RFC_CUSTOMER_GET 方法建立 特定的 Finder 方法實例。 特定 Finder方法會根據識別碼尋找特定記錄。
若要建立識別碼,並將其對應至客戶號碼參數
建立 Customer 實體的識別碼。
在 [中繼資料物件] 窗格中,展開 [客戶 ] 節點。
以滑鼠右鍵按一下 [識別碼] 節點,然後選取 [ 新增識別碼]。
在 [屬性] 窗格中,于 [名稱] 方塊中輸入CustomerID。
針對 [類型] 方塊選取[System.String]。
的名稱
將識別碼對應至 SD_RFC_CUSTOMER_GET 方法的索引鍵參數。
在 [中繼資料物件] 窗格中,展開 [ 客戶 ] 節點,然後展開 [方法] 節點。
展開 SD_RFC_CUSTOMER_GET 方法,然後展開 [參數] 節點。
展開 [KUNNR ] 參數,然後按一下第二個 [KUNNR ] 節點。
在 [屬性] 窗格中,從 [識別碼] 清單中選取[CustomerID[Customer]。
設定輸入與傳回參數之間的關聯。
在 [中繼資料物件] 窗格中,展開 [ 客戶 ] 節點,然後展開 [方法] 節點。
展開 SD_RFC_CUSTOMER_GET 方法,然後展開 [參數] 節點。
展開 CUSTOMER_T 節點,然後展開第二 個CUSTOMER_T 節點,再展開 [專案 ] 節點,然後按一下 [KUNNR ] 節點。
在 [屬性] 窗格中,從 [識別碼] 清單中選取[CustomerID[Customer]。
為 SD_RFC_CUSTOMER_GET 方法建立特定的 Finder 方法實例
在 [中繼資料物件] 窗格中,展開 [ 客戶 ] 節點,然後展開 [ 方法] 節點。
展開 [SD_RFC_CUSTOMER_GET ] 節點,以滑鼠右鍵按一下 [ 實例],然後選取 [ 新增方法實例 ] 以開啟 [建立方法實例] 視窗。
在 [建立方法實例] 視窗中,針對[方法實例類型] 選取[特定尋找工具]。 同樣地,選取 [傳回 TypeDescriptor]的 [CUSTOMER_T]。
按一下 [確定]。
在 [屬性] 窗格中,輸入 [名稱] 方塊GetCustomerByNumber_Instance。
[
需求 3:從客戶清單擷取特定客戶的銷售訂單詳細資料
若要建立可用來擷取特定客戶銷售訂單詳細資料的應用程式定義檔案,您必須執行下列一組工作。
設定 Customer 與 SalesOrder 實體之間的關聯。
建立 BAPI_SALESORDER_GETLIST 方法的 Association 方法。
建立 Customer 和 SalesOrder 實體之間的關聯
在 [中繼資料物件] 窗格中,展開 [SalesOrder ] 節點,然後展開 [方法] 節點。
展開 BAPI_SALESORDER_GETLIST 方法,然後展開 [參數 ] 節點。
展開 CUSTOMER_NUMBER 節點,然後按一下第二個 CUSTOMER_NUMBER 節點。
在 [屬性] 窗格中,從 [識別碼] 清單中選取[CustomerID[Customer]。
之間的關聯
建立 BAPI_SALESORDER_GETLIST 方法的 Association 方法實例
在 [中繼資料物件] 窗格中,展開 [SalesOrder ] 節點,然後展開 [方法] 節點。
展開 BAPI_SALESORDER_GETLIST 節點,以滑鼠右鍵按一下 [實例],然後選取 [ 新增方法實例 ] 以開啟 [建立方法實例] 視窗。
在 [建立方法實例] 視窗中,選取[方法實例類型的關聯]。
在 [來源實體] 清單中,選取 [客戶]。
在 [ 傳回 TypeDescriptor ] 清單中,選取 [SALES_ORDERS]。
按一下 [確定]。
在 [屬性] 窗格中,輸入 [名稱] 方塊SalesOrderForCustomer_Instance。
的名稱
移除 System.Nullable 類型的參數
建立 BAPI_SALESORDER_GETLIST 方法的 Association 方法實例時,您已將傳回類型選取為 SALES_ORDERS。 如果您展開SALES_ORDER參數,您會發現某些參數是 System.Nullable 類型。 您可以在 Business 資料目錄定義編輯器中選取 參數,並查看TypeName屬性的值,以查看參數類型。
針對這類參數,Business 資料目錄定義編輯器會建立另一個具有相同名稱但具有 「Specified」 尾碼的參數。 例如,查看 參數ITM_NUMBER 和 ITM_NUMBERSpecified。 Microsoft Office SharePoint Server 不支援 System.Nullable 參數。 因此,當您嘗試包含 System.Nullable 參數類型的記錄時,它會擲回例外狀況。 因此,您必須從商務資料目錄定義編輯器中移除 (和不含 「Specified」 尾碼的參數,且具有相同名稱)
移除 System.Nullable 類型的參數
在 [中繼資料物件] 窗格中,展開 [SalesOrder ] 節點,然後展開 [方法] 節點。
展開 BAPI_SALESORDER_GETLIST 節點,然後展開 [參數] 節點。
展開 SALES_ORDERS,展開第二 個SALES_ORDERS,然後展開 [專案]。
以滑鼠右鍵按一下名稱中包含 「Specified」 尾碼的參數,然後選取 [ 刪除]。
以滑鼠右鍵按一下名稱與您刪除的參數同名的參數,不含尾碼,然後選取 [ 刪除]。 一般而言,此參數位於具有 「Specified」 尾碼的參數之前。
設定預設參數
BAPI_SALESORDER_GETLIST採用兩個參數。 其中一個參數TRANSACTION_GROUP是預設參數。 因此,您必須設定此參數的預設值。
若要設定TRANSACTION_GROUP的預設值
在 [中繼資料物件] 窗格中,展開 [SalesOrder ] 節點,然後展開 [ 方法] 節點。
展開 [BAPI_SALESORDER_GETLIST ] 節點,然後展開 [ 實例] 節點。
選取 SalesOrderForCustomer_Instance 方法實例,然後在 [屬性] 窗格中,針對 [ DefaultValues ] 方塊按一下省略號按鈕 (...) 。
在 [編輯] 視窗中,展開 [TRANSACTION_GROUP ] 節點,然後針對 [TRANSACTION_GROUP ] 方塊指定預設值 0。
的預設值
按一下 [關閉] 。
將應用程式定義匯出至檔案
您現在已建立包含 SAP 系統實例中繼資料的應用程式定義。 您必須將此定義匯出至 XML 檔案,此檔案可以匯入 Microsoft Office SharePoint Server。
將應用程式定義匯出至檔案
在 [中繼資料物件] 窗格中,以滑鼠右鍵按一下 [Customer_Order ] 節點,然後按一下 [ 匯出]。
將檔案儲存為 Customer_Order.xml。
後續步驟
您現在必須建立 SharePoint 應用程式,才能從 SAP 系統擷取資料。 如需相關指示,請參閱 步驟 3:建立 SharePoint 應用程式以從 SAP 擷取資料 。