65.9K
CodeProject 正在变化。 阅读更多。
Home

如何使用 Business Connectivity Services 和 LINQ to SAP 将 SAP 业务数据集成到 SharePoint 2010 中

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.95/5 (13投票s)

2012年4月2日

CPOL

8分钟阅读

viewsIcon

184011

downloadIcon

1364

本文介绍如何使用 Business Connectivity Services (BCS) 和 LINQ to SAP 将 SAP 业务数据(如客户数据)集成到 SharePoint 2010 中。

引言

SharePoint 2010 的 Business Connectivity Services (BCS) 的核心概念之一是外部内容类型。它们是对连接信息和行为(有特定角色的操作)的可重用元数据描述,这些信息和行为应用于外部数据。SharePoint 为开发人员提供了多种创建外部内容类型并将其集成到平台中的方法。例如,SharePoint Designer 2010 允许您创建和管理存储在受支持的外部系统中的外部内容类型。 such an external system could be SQL Server, WCF Data Service, or a .NET Assembly Connector.

本文介绍如何基于给定的 SAP 客户数据为 SharePoint 创建一个名为 Customer 的外部内容类型。内容类型的定义将以 .NET 程序集的形式提供,数据将在 SharePoint 中的外部列表中显示。

SAP 客户数据从函数模块 SD_RFC_CUSTOMER_GET 中检索。通常,SAP R/3 系统中的函数模块类似于 C# 类中的 public static 方法,可以通过 RFC(远程函数调用)从 SAP 外部访问。幸运的是,我们无需手动编程 RFC 调用。我们将使用 Theobald Software 非常实用的 ERPConnect 库。该库包含一个 LINQ to SAP 提供程序和设计器,让我们的工作更加轻松。

.NET 程序集连接器 for SAP

提供自定义 SAP 连接器的第一步是使用 Visual Studio 2010 的 SharePoint 2010 开发工具创建一个 SharePoint 项目。这些工具是 Visual Studio 2010 的一部分。我们将使用 Business Data Connectivity Model 项目模板来创建我们的项目。

定义 Visual Studio 解决方案名称并单击“确定”按钮后,项目向导将询问您要创建哪种 SharePoint 2010 解决方案。该解决方案必须部署为场解决方案,而不是沙盒解决方案。Visual Studio 现在将创建一个新的 SharePoint 项目,其中包含默认的 BDC 模型(BdcModel1 )。您也可以创建一个空的 SharePoint 项目,然后手动添加 Business Data Connectivity Model 项目项。这也会在 Visual Studio 解决方案资源管理器中生成一个新节点,名为 BdcModel1 。该节点包含几个项目文件:BDC 模型文件(文件扩展名为 bdcm )以及 Entity1.cs EntityService.cs 类文件。

接下来,我们添加一个 LINQ to SAP 文件来处理 SAP 数据访问逻辑,方法是在 Visual Studio 的“添加新项”对话框中选择 LINQ to ERP 项。这将在我们的项目中添加一个名为 LINQtoERP1.erp 的文件。LINQ to SAP 提供程序在内部称为 LINQ to ERP。双击 LINQtoERP1.erp 以打开设计器。现在,将 Function 对象从设计器工具箱拖到设计图面上。由于尚未定义任何连接数据,这将打开 SAP 连接对话框。

输入 SAP 连接数据和您的凭据。单击“测试连接”按钮以测试连接。如果您成功连接到 SAP 系统,请单击“确定”按钮以打开函数模块搜索对话框。现在搜索 SD_RFC_CUSTOMER_GET ,然后选择找到的项目,并单击“确定”以打开 RFC Function Module /BAPI 对话框。

SP2010SAPToBCS/BCS12.png

该对话框提供了定义要在 SAP 上下文类中使用的 **方法名称** 和 **参数** 的选项。上下文类由 LINQ to SAP 设计器自动生成,包括所有定义的 SAP 对象。这些对象要么是 C#(或 VB.NET)类方法,要么是方法使用的其他对象类。

对于我们的项目,我们需要通过单击“Pass”列中的复选框来选择导出参数 KUNNR NAME1 。这两个参数将成为我们生成的名为 SD_RFC_CUSTOMER_GET 的上下文类方法中的输入参数。我们还需要返回给定输入选择的客户列表。因此,我们在“Tables”选项卡上选择表参数 CUSTOMER_T ,并将结构名称更改为 Customer 。然后,单击对话框上的“确定”按钮,新的对象将被添加到设计器图面上。

重要提示:在 LINQ 设计器的属性编辑器中,必须将“Create Objects Outside Of Context Class”标志设置为 TRUE ,否则 LINQ to SAP 会将 Customer 类生成为 SAP 上下文类的嵌套类。此功能和标志仅在 LINQ to SAP for Visual Studio 2010 中可用。

LINQ 设计器还在 LINQtoERP1.Designer.cs 文件中自动生成了一个名为 Customer 的类。这个类将成为我们的 BDC 模型实体或外部内容类型。但首先,我们需要调整并重命名 Visual Studio 默认创建的 BDC 模型。目前,BDC 模型如下所示。

BdcModel1 节点和文件重命名为 CustomerModel 。由于我们已经有了一个实体类(Customer ),请删除 Entity1.cs 文件,并将 EntityService.cs 文件重命名为 CustomerService.cs 。接下来,打开 CustomerModel 文件并重命名设计器对象 Entity1 。然后,将实体标识符名称从 Identifier1 更改为 KUNNR 。您也可以使用 BDC Explorer 进行重命名。最终的调整结果应如下所示。

SP2010SAPToBCS/BCS4.png

我们在 Visual Studio 项目中需要做的最后一步是更改 CustomerService 类中的代码。必须使用自动生成的 LINQ to SAP 代码来实现 BDC 模型方法 ReadItem ReadList 。首先,我们来看一下代码。

SP2010SAPToBCS/BCS6.png

如您所见,我们基本上只有几行代码。所有的 SAP 数据访问逻辑都封装在 SAP 上下文类中(请参阅 LINQtoERP1.Designer.cs 文件)。CustomerService 类只是实现了一个静态构造函数来设置 ERPConnect 许可证密钥,并将静态变量 _sc 初始化为 SAP 凭据以及两个 BDC 模型方法。

ReadItem 方法,BCS 有特定角色的操作 SpecificFinder ,由 BCS 调用以获取由标识符 KUNNR 定义的特定项。在这种情况下,我们只需使用传递的标识符(变量 id )调用 SD_RFC_CUSTOMER_GET 上下文方法,并返回我们从 SAP 获取的第一个客户对象。

ReadList 方法,BCS 有特定角色的操作 Finder ,由 BCS 调用以返回所有实体。在这种情况下,我们只是返回 SD_RFC_CUSTOMER_GET 上下文方法返回的所有客户对象。返回的结果已经是 IEnumerable<Customer> 类型。

最后一步是部署 SharePoint 解决方案。在 Visual Studio 解决方案资源管理器中右键单击项目节点,然后选择“部署”。这将会在服务器上安装并部署 SharePoint 解决方案。您也可以通过在 CustomerService 类中设置断点并按 F5 执行项目来调试代码。

这就是我们要做的一切!

现在,启动 SharePoint Central Administration 面板,然后单击“Manage Service Applications”链接,或者直接导航到 URL http://<SERVERNAME>/_admin/ServiceApplications.aspx 。单击 Business Data Connectivity Service 以显示所有可用的外部内容类型。

在此页面上,我们找到了已部署的 BDC 模型,包括 Customer 实体。您可以单击名称以检索有关该实体的更多详细信息。目前,只有一个问题需要解决。我们需要设置权限!

勾选我们的实体复选框,然后在“Ribbon”菜单栏中单击“Set Object Permissions”。现在,为希望允许访问该实体的用户定义权限,然后单击“确定”按钮。在上面的屏幕截图中,管理员用户拥有所有可能的权限。

在下一步也是最后一步,我们将基于我们的实体创建一个外部列表。为此,我们打开 SharePoint Designer 2010 并连接到 SharePoint 网站。

单击“Site Objects”面板中的“External Content Types”以显示所有内容类型(见上图)。双击 Customer 实体以打开详细信息。SharePoint Designer 正在读取 BCS 提供的所有可用信息。

为了创建我们实体的外部列表,请在“Ribbon”菜单栏中单击“Create Lists & Form”(见下图),然后输入 CustomerList 作为外部列表的名称。

好的,我们完成了!

打开列表,您应该会看到以下结果。

外部列表显示了我们实体定义的所有字段,尽管由 LINQ to SAP 自动生成的 Customer 类具有比这四个字段更多的字段。这意味着您只能显示实体信息的子集。

另一种选择是在 LINQ to SAP 设计器中仅选择所需的字段。使用 LINQ 设计器,您不仅可以访问 SAP 函数模块。您还可以集成其他 SAP 对象,如表、BW cube、SAP Query 或 IDOC。ERPConnect 库的演示版本可以从 Theobald Software 主页下载。

如果您单击 KUNNR 列中的客户编号的关联链接(参见上图),SharePoint 将打开详细信息视图。

SP2010SAPToBCS/BCS10.png

摘要

本文展示了如何使用标准工具将 SAP 的业务数据集成到 SharePoint 平台中是多么容易和简单。结合功能强大的 Microsoft Visual Studio 2010 及其 SharePoint 开发工具,以及 Theobald Software 中非常实用的 LINQ to SAP 提供程序工具,您只需要编写几行代码即可将所有必要的逻辑整合在一起,从而在 SharePoint 2010 和 BCS 中创建一个外部列表。

© . All rights reserved.