步骤 2:为 SAP 项目创建应用程序定义文件

第 2 步(共 4 个)

完成时间: 15 分钟

目的: Microsoft SharePoint Server 中的业务数据目录功能公开业务线应用程序中的数据并将其合并到门户中。 若要将此数据合并到门户网站中,必须生成Microsoft Office SharePoint Server 可以使用的应用程序定义文件。

业务数据目录定义编辑器工具可用于Microsoft Office SharePoint Server 2007 SDK,使你能够创建业务数据目录的应用程序定义文件。 此工具自动生成定义文件的 XML 文件,因此无需在 XML 编辑器中手动创建该文件。

要创建的 Microsoft Office SharePoint Server 应用程序的目的是:

  • 根据客户名称在 SAP 系统中搜索客户。

  • 从提取的客户列表中选择一个客户,并检索客户的详细信息。

  • 从提取的客户列表中选择一个客户,并检索客户的销售订单。

    对于上述每个要求,必须在业务数据目录定义编辑器工具中完成一组任务。 本主题提供有关如何执行这些任务的说明。

先决条件

创建应用程序定义文件

本主题提供为 WCF 服务创建应用程序定义文件的分步说明。

连接到 WCF LOB 服务并创建实体

必须连接到 WCF 服务才能为服务提取 Web 服务说明语言(WSDL)。 从 WSDL 中,业务数据目录定义编辑器提取方法。 这些方法可用于创建实体。 在此示例中,将创建两个实体,每个实体用于客户和销售订单。

连接到 WCF 服务并创建实体
  1. 启动业务数据目录定义编辑器。 在“ 开始 ”菜单上,单击 Microsoft业务数据目录定义编辑器

  2. 在工具栏上,单击“ 添加 LOB 系统”。

  3. 在“添加 LOB 系统”窗口中,单击“ 连接到 Webservice”。

  4. URL 框中,键入 WCF 服务的 URL。 URL 必须采用以下格式:

    https://<computer_name>/Customer_Order/Rfc.svc?wsdl
    

    其中 Rfc.svc 是为 Rfc 协定创建的文件。

    测试 WCF 服务是否成功发布时,URL 可用,如主题 步骤 1:将 SAP 项目发布为 WCF 服务中所述。

  5. 单击连接

  6. 若要查看在 WCF 适配器服务开发向导中选择的作,请单击“ 添加 Web 方法 ”选项卡。你将看到以下方法:

    • SD_RFC_CUSTOMER_GET

    • BAPI_SALESORDER_GETLIST

      将 Web 方法添加到 BDC 应用程序

      将方法拖到设计界面。 请确保将这两个操作拖动到不同的实体。

      为 Web 方法创建实体

  7. 单击 “确定”

  8. “输入 LOB 系统名称”对话框中,在 “LOB 系统名称”框中键入名称。 对于此示例,请将其调用 Customer_Order,然后单击“ 确定”。

  9. 在业务数据目录定义编辑器中,这两个实体列为 Entity0Entity1。 为这些实体提供友好名称。 将SD_RFC_CUSTOMER_GET实体重命名为 Customer,并将BAPI_SALESORDER_GETLIST的实体重命名为 SalesOrder。 执行以下步骤来重命名实体:

    1. 展开 Customer_Order 节点,然后展开 “实体” 节点。

    2. 选择 Entity0 节点。

    3. 在“属性”窗格中,在“名称”框中键入 Customer

      重命名实体

    4. 选择 Entity1 节点。

    5. 在“属性”窗格中,在“名称”框中键入 SalesOrder

指定用户名和密码标头用于这些方法

在 SAP 系统中为所选 RFC 创建 WCF 服务时,指定用户名和密码标头作为终结点行为配置的一部分。 请参阅 步骤 1:将 SAP 项目发布为 WCF 服务。 必须为方法属性指定相同的值。

指定用户名和密码标头
  1. 为 SD_RFC_CUSTOMER_GET 方法添加用户名和密码标头。

    1. 在“元数据对象”窗格中,展开 “客户 ”节点,然后展开 “方法” 节点。

    2. 单击SD_RFC_CUSTOMER_GET节点,在属性窗格中,单击属性框旁的省略号(...)按钮。

    3. 在 PropertyView 集合编辑器窗口中,单击“添加”,然后在“属性”窗格中,键入“名称”框的 HttpHeaderUserName。 同样,在 PropertyValue 框中键入 MyUserHeader。 选择System.String“类型”框中的值。

      添加属性

    4. 在 PropertyView 集合编辑器窗口中,单击“添加”,然后在“属性”窗格中,键入“名称”框的 HttpHeaderPassword。 同样,在PropertyValue框中键入MyPassHeader。 选择System.String“类型”框中的值。

    5. 单击 “确定”

  2. 为 BAPI_SALESORDER_GETLIST 方法添加用户名和密码标头。

    1. 在“元数据对象”窗格中,展开 SalesOrder 节点,然后展开 “方法” 节点。

    2. 单击 BAPI_SALESORDER_GETLIST 节点,在“属性”窗格中,单击“属性”字段旁的省略号(...)按钮。

    3. 在 PropertyView 集合编辑器窗口中,单击“添加”,然后在“属性”窗格中,键入“名称”框的 HttpHeaderUserName。 同样,在 PropertyValue 框中输入 MyUserHeader。 选择System.String“类型”框中的值。

    4. 在 PropertyView 集合编辑器窗口中,单击“添加”,然后在“属性”窗格中,键入“名称”框的 HttpHeaderPassword。 同样,在 PropertyValue 框中键入 MyPassHeader。 选择System.String“类型”框中的值。

    5. 单击 “确定”

设置单个 Sign-On 以连接到 SAP 系统

完成本主题中的所有过程后,将创建一个可导入 SharePoint 应用程序的应用程序定义文件。 在应用程序中,调用 SAP 方法从 SAP 系统检索相关数据。 若要启用此功能,必须在 SAP 系统中的用户与 SharePoint 应用程序中的用户之间创建映射。 导入应用程序定义文件后,将在 SharePoint 管理中心控制台中创建此映射。

但是,若要创建映射,必须在业务数据目录定义编辑器中设置属性 SecondarySsoApplicationId

设置 SecondarySsoApplicationId 属性
  1. 在“元数据对象”窗格中,展开 Customer_Order 节点,然后展开 “实例” 节点。

  2. 单击Customer_Order_Instance,然后在“属性”窗格中,单击属性框旁的省略号(...)按钮。

  3. 在 PropertyView 集合编辑器窗口中,单击“添加”,然后在“属性”窗格中,键入 Name 框的 SecondarySsoApplicationId。 同样,键入 SAPSSOPropertyValue 框中。 选择System.String“类型”框中的值。

    添加 SSO 属性

  4. 单击 “确定”

要求 1:根据客户名称搜索客户

若要创建可用于基于客户名称搜索客户的应用程序定义文件,必须执行以下一组任务。

  • 在 SD_RFC_CUSTOMER_GET 方法中,创建筛选器并将其映射到存储客户名称的参数。

  • 为 SD_RFC_CUSTOMER_GET 方法创建 Finder 方法实例。 Finder 方法基于筛选器检索记录列表。

创建筛选器并将其映射到客户名称参数
  1. 创建筛选器。

    1. 在“元数据对象”窗格中,展开 “客户 ”节点,然后展开 “方法” 节点。

    2. 展开SD_RFC_CUSTOMER_GET方法,右键单击 “筛选器”,然后单击“ 添加筛选器”。

      将筛选器添加到方法

    3. 在“属性”窗格中,在“名称”框中键入 CustomerName

      为筛选器 指定名称

    4. 对于 FilterType 属性,请选择 通配符过滤器

  2. 将筛选器映射到 SD_RFC_CUSTOMER_GET 方法中的 NAME1 参数。

    1. 在“元数据对象”窗格中,展开 “客户 ”节点,然后展开 “方法” 节点。

    2. 展开SD_RFC_CUSTOMER_GET方法,然后展开 “参数” 节点。

    3. 展开 NAME1 节点,然后单击第二个 NAME1 节点。 NAME1 参数包含客户的名称。

    4. 在“属性”窗格中,从 FilterDescriptor 列表中选择 CustomerName

      将筛选器映射到方法参数

为 SD_RFC_CUSTOMER_GET 方法创建 Finder 方法实例
  1. 在“元数据对象”窗格中,展开 “客户 ”节点,然后展开 “方法” 节点。

  2. 展开 SD_RFC_CUSTOMER_GET 节点,右键单击 “实例”,然后单击“ 添加方法实例 ”以打开“创建方法实例”窗口。

    添加方法实例

  3. 在“创建方法实例”窗口中,单击“方法实例类型的查找器”。 为 Return TypeDescriptor 选择CUSTOMER_T

    添加 Finder 方法实例

  4. 单击 “确定”

  5. 在“属性”窗格中,在“名称”框中键入GetCustomerByName_Instance

    “属性”窗格的屏幕截图,其中突出显示了“名称”字段,并指定了值GetCustomerByName_Instance。

要求 2:从客户列表中检索特定客户的详细信息

若要创建可用于基于客户名称搜索客户的应用程序定义文件,必须执行以下一组任务。

  • 在 SD_RFC_CUSTOMER_GET 方法中创建标识符,并将其映射到存储客户编号的参数。

  • 为 SD_RFC_CUSTOMER_GET 方法创建 特定的 Finder 方法实例。 特定查找器方法基于标识符查找特定记录。

创建标识符并将其映射到客户编号参数
  1. Customer 实体创建标识符。

    1. 在“元数据对象”窗格中,展开 “客户 ”节点。

    2. 右键单击 “标识符” 节点,然后选择“ 添加标识符”。

      将标识符添加到方法

    3. 在“属性”窗格中,在“名称”框中键入 CustomerID

    4. 选择System.String“类型”框中的值。

      为标识符指定名称

  2. 将标识符映射到 SD_RFC_CUSTOMER_GET 方法的键参数。

    1. 在“元数据对象”窗格中,展开 “客户 ”节点,然后展开 “方法” 节点。

    2. 展开SD_RFC_CUSTOMER_GET方法,然后展开 “参数” 节点。

    3. 展开 KUNNR 参数,然后单击第二个 KUNNR 节点。

    4. 在“属性”窗格中,从“标识符”列表中选择 CustomerID[Customer]。

      将标识符映射到参数

  3. 设置输入参数和返回参数之间的关联。

    1. 在“元数据对象”窗格中,展开 “客户 ”节点,然后展开 “方法” 节点。

    2. 展开SD_RFC_CUSTOMER_GET方法,然后展开 “参数” 节点。

    3. 展开 CUSTOMER_T 节点,然后展开第二个 CUSTOMER_T 节点,然后展开 项目 节点,然后单击 KUNNR 节点。

    4. 在“属性”窗格中,从“标识符”列表中选择 CustomerID[Customer]。

为 SD_RFC_CUSTOMER_GET 方法创建特定 Finder 方法实例
  1. 在“元数据对象”窗格中,展开 “客户 ”节点,然后展开 “方法” 节点。

  2. 展开 SD_RFC_CUSTOMER_GET 节点,右键单击 “实例”,然后选择“ 添加方法实例 ”以打开“创建方法实例”窗口。

    添加方法实例

  3. 在“创建方法实例”窗口中,为方法实例类型选择“特定查找器”。 同样,为 Return TypeDescriptor 选择CUSTOMER_T

    添加特定的 Finder 方法实例

  4. 单击 “确定”

  5. 在“属性”窗格中,为“名称”框键入GetCustomerByNumber_Instance

    “属性”窗格的屏幕截图,其中突出显示了“名称”字段,并指定了值GetCustomerByNumber_Instance。

要求 3:从客户列表中检索特定客户的销售订单详细信息

若要创建可用于检索特定客户的销售订单详细信息的应用程序定义文件,必须执行以下一组任务。

  • 设置 CustomerSalesOrder 实体之间的关联。

  • 为 BAPI_SALESORDER_GETLIST 方法创建 关联 方法。

在 Customer 和 SalesOrder 实体之间创建关联
  1. 在“元数据对象”窗格中,展开 SalesOrder 节点,然后展开 “方法” 节点。

  2. 展开BAPI_SALESORDER_GETLIST方法,然后展开 “参数” 节点。

  3. 展开 CUSTOMER_NUMBER 节点,然后点击第二个 CUSTOMER_NUMBER 节点。

  4. 在“属性”窗格中,从“标识符”列表中选择 CustomerID[Customer]。

    在两个实体 之间创建关联

为 BAPI_SALESORDER_GETLIST 方法创建关联方法实例
  1. 在“元数据对象”窗格中,展开 SalesOrder 节点,然后展开 “方法” 节点。

  2. 展开 BAPI_SALESORDER_GETLIST 节点,右键单击 “实例”,然后选择“ 添加方法实例 ”以打开“创建方法实例”窗口。

    添加关联方法实例

  3. 在“创建方法实例”窗口中,为方法实例类型选择关联

  4. “源实体 ”列表中,选择“ 客户”。

  5. “Return TypeDescriptor” 列表中,选择 SALES_ORDERS

    创建关联方法实例

  6. 单击 “确定”

  7. 在“属性”窗格中,在“名称”框中键入SalesOrderForCustomer_Instance

    为 Association 方法指定一个名称

删除 System.Nullable 类型的参数

为 BAPI_SALESORDER_GETLIST 方法创建 Association 方法实例时,选择返回类型作为SALES_ORDERS。 如果展开SALES_ORDER参数,你会注意到某些参数属于 System.Nullable 类型。 可以通过在业务数据目录定义编辑器中选择参数并查看 TypeName 属性的值来查看参数类型。

对于此类参数,业务数据目录定义编辑器创建另一个具有相同名称但带有“指定”后缀的参数。 例如,查看 参数ITM_NUMBERITM_NUMBERSpecified。 Microsoft Office SharePoint Server 不支持 System.Nullable 参数。 因此,当你尝试包含 System.Nullable 参数类型的记录时,它会引发异常。 因此,必须从业务数据目录定义编辑器中删除两个参数(带有和不包含“指定”后缀且具有相同名称)

移除 System.Nullable 类型的参数
  1. 在“元数据对象”窗格中,展开 SalesOrder 节点,然后展开 “方法” 节点。

  2. 展开 BAPI_SALESORDER_GETLIST 节点,然后展开 “参数” 节点。

  3. 展开 SALES_ORDERS,展开 第二个SALES_ORDERS,然后展开

  4. 右键单击名称中包含“指定”后缀的参数,然后选择“ 删除”。

  5. 右键单击与删除的参数同名的参数,不带后缀,然后选择“ 删除”。 通常,此参数位于具有“Specified”后缀的参数之前。

设置默认参数

BAPI_SALESORDER_GETLIST采用两个参数。 其中一个参数TRANSACTION_GROUP是默认参数。 因此,必须设置此参数的默认值。

设置TRANSACTION_GROUP的默认值
  1. 在“元数据对象”窗格中,展开 SalesOrder 节点,然后展开 “方法” 节点。

  2. 展开 BAPI_SALESORDER_GETLIST 节点,然后展开 “实例” 节点。

  3. 选择 SalesOrderForCustomer_Instance 方法实例,然后在“属性”窗格中,针对 DefaultValues 框单击省略号按钮(...)。

  4. 在“编辑”窗口中,展开 TRANSACTION_GROUP 节点,对于 TRANSACTION_GROUP 框,请指定默认值 0。

    为方法实例 指定默认值

  5. 单击 “关闭”

将应用程序定义导出到文件

现已创建包含 SAP 系统实例元数据的应用程序定义。 必须将此定义导出到 XML 文件,该文件可以导入到 office SharePoint Server Microsoft。

将应用程序定义导出到文件
  1. 在“元数据对象”窗格中,右键单击 Customer_Order 节点,然后单击“ 导出”。

  2. 将文件另存为 Customer_Order.xml。

后续步骤

现在必须创建一个 SharePoint 应用程序,以便从 SAP 系统检索数据。 有关说明 ,请参阅步骤 3:创建 SharePoint 应用程序以从 SAP 检索数据

另请参阅

教程 1:呈现 SharePoint 网站上的 SAP 系统中的数据