我将很快为一个公司项目工作,该项目将开发一个与 SAP ERP 系统集成的自定义 .net 应用程序。
我对SAP几乎一无所知,所以我在网上做了一些研究,发现它支持多种类型的数据库。
我想知道的是:
我可以通过 ado.net 直接读取 SAP 表吗?
还是 Web 服务背后的数据库?
还是因为取决于SAP系统的实现方式而不确定?
(知道 SAP 不限于任何特定类型的数据库后,我想到了第三个问题)
由于 SAP 数据库表存在于普通 DBMS 中:是的,您可以使用 ADO.NET 读取它们。然而,我的经验是 SAP 人员不太喜欢这种方式。
您还可以通过ERPConnect和其他可能支持的 RFC 读取表格。这很可能是要走的路。
第三种方法是返回您需要的数据的专用 RFC 组件。
您通常不直接与 SAP 系统的数据库进行交互,这是一种不好的做法(甚至可能会使您的支持合同无效 - 请小心)。调用 SAP 函数的方法有很多种,具体取决于它的实现方式/部署了哪些特性。
SAP ERP 通常与 ABAP 堆栈和 J2EE 堆栈一起部署。
对于 ABAP 部分,RFC 是 IMO 最“原生”的连接形式。SAP 为 C、C++ 和 Java 提供了一个 RFC 库,可能还有其他语言。我很确定你会找到适合你最喜欢的 .Net 语言的东西。
对于 Java 方面,有很多可用的选项,就像现在几乎所有基于 J2EE 的东西(Web 服务、soap ......)一样。
如果您不想让系统崩溃,您不能直接阅读 SAP ERP 表,也不能在课外写. 由于可能存在安全漏洞,因此在企业环境中不允许此操作。公司安全部门将禁止此类活动。SAP 系统是根据严格定义的安全规则构建的。通常 SAP 用户通过报表或程序与 DB 数据交互,每个报表/程序依次具有用于授权检查的子程序。报告经常(总是)通过交易进行,这些交易也有安全检查。因此,如果您没有足够的权限,您甚至无法查看受数据保护的数据,那就太好了。因此,除了官方的 SAP .NET 连接器之外,您实际上没有办法实现 SAP/.NET 互操作性。6 月发布了第 3 版,与以前的版本相比,它对开发人员的使用更加舒适。祝你好运!
PS:很可能您必须在 SAP 端编写特殊的 FM(功能模块)以简化互操作性
我没有使用 .net,但我的 Python Web 应用程序使用 ODBC 连接直接从 SAP 的表中读取数据。所以是的,这是可能的。
更新:我们的 SAP 将其数据存储在 SQL Server 数据库中......我现在意识到并非所有安装都以这种方式设置。一个参考。