SAP .NET Connector与.NET Core框架不兼容。
在使用.NET Core时,是否有其他方法可以从SAP检索数据?
我已经在NuGet包管理器中搜索了替代方案,但没有找到。是否有任何可行的解决办法可以使用?
我非常希望能够享受.NET Core的性能优势,但同时也需要能够连接到SAP。
我已经在NuGet包管理器中搜索了替代方案,但没有找到。是否有任何可行的解决办法可以使用?
我非常希望能够享受.NET Core的性能优势,但同时也需要能够连接到SAP。
对于从.NET Core或.NET Framework应用程序发起呼叫,我已经开源了一个跨平台库SapNwRfc。
在NuGet上获取它:
dotnet add package SapNwRfc
或者
PM> Install-Package SapNwRfc
优点:
该库已经进行了充分的单元测试,可以用于生产环境。
string connectionString = "AppServerHost=MY_SERVER_HOST; SystemNumber=00; User=MY_SAP_USER; Password=SECRET; Client=100; Language=EN; PoolSize=5; Trace=8";
using var connection = new SapConnection(connectionString);
connection.Connect();
class SomeFunctionParameters
{
[SapName("SOME_FIELD")]
public string SomeField { get; set; }
}
using var someFunction = connection.CreateFunction("BAPI_SOME_FUNCTION_NAME");
someFunction.Invoke(new SomeFunctionParameters
{
SomeField = "Some value",
});
更多细节请查看README。
我已经创建了一个库,可以轻松地从.NET CORE中进行SAP RFC调用。该库支持Windows、Linux和macOS。请检查它是否满足您的需求。https://github.com/nunomaia/NwRfcNet/
我了解您在SAP端有一个基于SOAP的服务,并且您尝试通过.NetCore连接此SAP服务。如果这种情况是真实的,不幸的是,您无法通过“添加服务引用”来连接SOAP服务与.NetCore。但是您可以搜索“.NetCore Wcf Client Service”。
另一种解决方案是使用Rest服务并模拟SOAP协议。
这里有一个相关问题和解决方案的示例。
除了huysentruitw的出色工作外,我还想提到我们的库:
dbosoft YaNco(Yet another .NET connecto):https://github.com/dbosoft/YaNco
亮点:
许可证:MIT
.NET版本:.NET 4.7.1及以上,.NET Core 2.0及以上,NET 5.0
支持的平台:Windows,Linux和MacOS
Nuget:Dbosoft.YaNco
YaNco不使用从/到POCOs的映射,而是使用函数来映射SAP RFC RFMs的输入/输出。这为您提供了许多灵活性,可以自由地映射数据。
示例:
await context.CallFunction("BAPI_COMPANYCODE_GETLIST",
Output: f => f
.MapTable("COMPANYCODE_LIST", s =>
from code in s.GetField<string>("COMP_CODE")
from name in s.GetField<string>("COMP_NAME")
select (code, name)))
.Match(
r =>
{
foreach (var (code, name) in r)
{
Console.WriteLine($"{code}\t{name}");
}
},
l => Console.WriteLine($"Error: {l.Message}"));