如何使用 sapnwrfc 库连接到 SAP?

Posted

技术标签:

【中文标题】如何使用 sapnwrfc 库连接到 SAP?【英文标题】:How can I connect to SAP using sapnwrfc library? 【发布时间】:2011-01-21 11:44:20 【问题描述】:

我们的软件是用 C# 编写的,需要连接到 SAP。由于我们的一些客户使用旧版本的 SAP,而其他客户没有 SAP PI,因此我们无法通过 Web 服务进行连接。

我尝试通过 SAP NetWeaver 远程函数调用库 (sapnwrfc.dll) 连接到 SAP,如下所示:

从 NWRFC_6-20004550.SAR 添加 sapnwrfc.dll 和其他 dll (即icudt34.dll、icuin34.dll、icuuc34.dll、libicudecnumber.dll和libsapucum.dll) 到 C:\WINDOWS\system32,以确保可以找到它们。 在我的 C# 代码中,在类定义中添加以下内容: [DllImport("sapnwrfc.dll", CharSet = CharSet.Auto)] 公共静态外部无效 RfcInit(); 以及应该完成工作的方法中的以下内容: rfcInit();

运行此代码会产生 DllNotFoundException: 无法加载 DLL 'sapnwrfc.dll':此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。 (HRESULT 异常:0x800736B1)

运行标准的 connect-to-C++-from-C# 示例 [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0); 工作正常。

任何建议如何使这项工作正常(这样我们就不需要通过使用 JCo 编写 Java 代理来解决这个问题)?

【问题讨论】:

好问题 - 不知道,抱歉。另外将其标记为 RFC。如果您需要有关 java 后备的帮助,请随时询问:-) 【参考方案1】:

如果您缺少某些 DLL,您是否使用 Dependency Viewer 检查?我曾经为 rfc 库(至少是其中的一部分)编写了一个托管包装器,我记得我下载的一些 rfc 库有问题。一个版本根本不起作用,我不知道出了什么问题。另一个版本(旧的)工作得很好。

然而,我确实遇到了 unicode 库的问题(一些随机出现的内存访问问题),所以我不得不切换到非 unicode 版本...

如果我不得不再次这样做,我会非常认真地考虑购买连接器: http://www.theobald-software.com/en/products/erpconnect.htm

我不能说这是否有好处,但它们似乎已经存在了一段时间。

【讨论】:

【参考方案2】:

您为什么不简单地使用 SAP 的“.NET 连接器”(NCo3)? 有关下载页面和文档的链接,请参阅 SAP 说明 856863。

【讨论】:

可能是因为 SAP 在 2010 年 2 月还没有发布 NCo3? ;) 嗯,这可能是一个正当的理由...... ;) 但我最好现在就为今天阅读本文的人留下我的评论。 好的,这很有说服力。我为你的幽默感投了一票(当然还有一个正确的答案)。 :)【参考方案3】:

请尝试将icudt34.dll、icuin34.dll、icuuc34.dll、libicudecnumber.dll、libsapucum.dll复制到项目的bin目录下。我试过了,效果很好。

【讨论】:

以上是关于如何使用 sapnwrfc 库连接到 SAP?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Qt 库连接到标准 C++ 项目?

使用 socket.io-client.java 库连接到 socket.io 命名空间

无法将 Github 组织存储库连接到 AWS Amplify 应用程序

使用 Dask 库连接到 Impala DB

无法使用 pyodbc 库连接到 Azure 数据库

使用开源 xmpp 库连接到 nimbuzz 聊天