您可以将 Visual Studio 2017 与 SAP .NET Connector 3.0 一起使用吗?

Can you use Visual Studio 2017 with the SAP .NET Connector 3.0?

我目前正在 Visual Studio 2017 和 VirtualBox 上 Linux(openSUSE) 上托管的 SAP 服务器之间建立 RFC 连接。我发现的有关此问题的唯一帖子非常陈旧且没有帮助。我想在 C# 中创建一个 returns 图表中数据库数据的 RFC 函数,但我不知道如何从代码开始以及如何设置我的 visual studio 和树液服务器。我希望有人能帮我解决这些问题。

如果您不知道如何开始,那为什么不先看看 NCo 文档呢? 您可以从 https://support.sap.com/nco.

下载

既然你的环境好像不只限于Windows,我也想一想.NET环境是不是你项目的最佳选择?如果使用其他连接器,您将获得更好的 OS 可移植性选项。 您可以在 https://support.sap.com/connectors.

找到适用于其他环境和编程语言的 SAP 连接器

在您中声明以下 SAP 详细信息 web.config / app.config

 <add key="DestinationName" value="*ANYNAME*" />
    <add key="AppServer" value="****" />
    <add key="SystemNumber" value="**" />
    <add key="SystemID" value="**" />
    <add key="UserName" value="***" />
    <add key="Password" value="***" />
    <add key="Client" value="***" />
    <add key="Language" value="EN" /> 

从 SAP 站点下载适当的连接器 dll(sapnco.dll 和 sapnco_utils)并在您的应用程序中引用它们。 其余内容请参考下面的示例代码

                RfcConfigParameters para = new RfcConfigParameters();
                para.Add(RfcConfigParameters.Name, destinationname);
                para.Add(RfcConfigParameters.AppServerHost, appServer); // If they are using SAP Router then please refer SAP documentation on Public and PrivateIP address details as you need both
                para.Add(RfcConfigParameters.SystemNumber, systemNumber);
                para.Add(RfcConfigParameters.SystemID, systemID);
                para.Add(RfcConfigParameters.User, user);// "RFCUSER"); 
                para.Add(RfcConfigParameters.Password, password);
                para.Add(RfcConfigParameters.Client, client);
                para.Add(RfcConfigParameters.Language, language);// "EN");
                RfcDestination dest = RfcDestinationManager.GetDestination(para);

                // Test connection
                dest.Ping();

                RfcSessionManager.BeginContext(dest);
                var rfcFunction = dest.Repository.CreateFunction("RFCFunctionName");
                rfcFunction.SetValue("INPUT PARAMETER NAME", "Value");
                // Call the function
                rfcFunction.Invoke(dest);

有关详细信息,请参阅以下文档:https://support.sap.com/content/dam/support/en_us/library/ssp/products/connectors/msnet/dotnet_connector_30_programming_guide.pdf

Can you use Visual Studio 2017 with the SAP .NET Connector 3.0?

标题中高级问题的直接答案是可以。我自己目前正在使用 Visual Studio 2017 开发基于当前 NCo 3 的 Web 服务。

I'm currently working on a RFC connection between Visual Studio 2017 and a SAP Server hosted on Linux(openSUSE) on a VirtualBox.

这有点令人困惑 - 您真的打算将 VS 本身连接到 SAP,还是您宁愿使用 VS 编写一个应用程序,该应用程序将连接到 SAP? .NCo 与 SAP 的托管环境无关。我用它连接到基于 Linux 的 SAP,基于 Windows 的 SAP,这没有区别。

I want to create a RFC Function in C# that returns the data of the database in a chart

RFC 是对 SAP 的 FM 功能模块的远程功能调用。 SAP FM 仅使用 ABAP 语言进行编程。 BUT .NCo 允许在 .Net 代码(例如 C#)之前实现一个 RFC 服务器接口,这样您就可以从 SAP 作为 RFC 调用 C# 代码 运行在作为您的应用程序的 RFC 服务器中。在 .NCo public 文档中有一个例子。

您要读取哪个数据库? SAP的?您不应该直接从外部代码读取 SAP 数据库,而是应该在 SAP 系统上使用 ABAP 编写的 RFC 运行 来访问数据。虽然有一个 RFC 可以读取原始 table,但 SAP 不赞成使用它,因为它 by-passes 从安全到 object 模型的所有内容。 SAP 管理员有时会在他们的系统上禁止来自 运行 的 RFC。相反,您应该使用 ALE 中的常规 RFC、BAPI 或 IDOC 来访问 SAP 数据。

更简单地说,.NCo 允许从 .Net 代码调用 SAP 以执行 RFC。这是熟悉 NCo 库的基本场景。