linux 你可以将Visual Studio 2017与SAP .NET Connector 3.0配合使用吗?

byqmnocz  于 2023-06-29  发布在  Linux
关注(0)|答案(3)|浏览(165)

我目前正在处理Visual Studio 2017和VirtualBox上托管在Linux(openSUSE)上的SAP服务器之间的RFC连接。我发现的关于这个问题的唯一帖子都很旧,没有帮助。我想在C#中创建一个RFC函数,以图表的形式返回数据库的数据,但我不知道如何从代码开始,以及如何设置Visual Studio和SAP服务器之间的连接。我希望有人能帮助我解决这些问题。

e4yzc0pl

e4yzc0pl1#

如果您不知道如何开始,那么为什么不先看看NCo文档呢?你可以从https://support.sap.com/nco下载。
由于您的环境似乎不仅限于Windows,我还想知道.NET环境是否是您项目的最佳选择?如果使用其他连接器,您将获得更好的操作系统可移植性选项。您可以在https://support.sap.com/connectors找到适用于其他环境和编程语言的SAP连接器。

u3r8eeie

u3r8eeie2#

你可以将Visual Studio 2017与SAP .NET Connector 3.0配合使用吗?
对标题中高层次问题的直接回答是“是的,你可以”。我自己目前正在使用Visual Studio 2017开发基于当前NCo 3的Web服务。
我目前正在处理Visual Studio 2017和VirtualBox上托管在Linux(openSUSE)上的SAP服务器之间的RFC连接。
这有点令人困惑--你真的打算将VS本身连接到SAP,还是你宁愿用VS编写一个应用程序,这个应用程序将连接到SAP?.NCo与SAP的托管环境无关。我已经用它连接到基于Linux的SAP,基于Windows的SAP,这没有区别。
我想用C#创建一个RFC函数,它以图表的形式返回数据库的数据
RFC是对SAP的FM功能模块的远程功能调用。SAP FM仅用ABAP语言编程。* 但是 * .NCo允许在.Net代码(如C#)之前实现RFC服务器接口,以便您可以从SAP调用RFC调用作为应用程序的RFC服务器中运行的C#代码。在.NCo公共文档中有一个这样的例子。
您要读取哪个数据库?你不应该直接从外部代码读取SAP数据库,而是应该使用运行在SAP系统上的ABAP编写的RFC来访问数据。虽然有一个读取原始表的RFC,但SAP不赞成使用它,因为它绕过了从安全到对象模型的所有内容。SAP管理员有时会禁止RFC在其系统上运行。相反,您应该使用ALE中的常规RFC、BAPI或IDOC来访问SAP数据。
更简单地说,.NCo允许从.Net代码调用SAP来执行RFC。这是您应该开始熟悉NCo库的基本场景。

jbose2ul

jbose2ul3#

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

<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

相关问题