需要帮助从SAP获取数据到C#

需要帮助从SAP获取数据到C#,c#,.net,sap,sap-dotnet-connector,saprfc,C#,.net,Sap,Sap Dotnet Connector,Saprfc,我想在VisualStudio中从SAP服务器向我的C#程序获取一些数据。SAP和程序之间的连接已经在工作,但我真的不知道如何将数据从服务器获取到程序中 namespace ConsoleApp1 { class Program //: IDestinationConfiguration { static void Main(string[] args) { fn f = new fn(); Rfc

我想在VisualStudio中从SAP服务器向我的C#程序获取一些数据。SAP和程序之间的连接已经在工作,但我真的不知道如何将数据从服务器获取到程序中

namespace ConsoleApp1
{
    class Program //: IDestinationConfiguration
    {
        static void Main(string[] args)
        {
            fn f = new fn();

            RfcDestination destination = f.GetRfcDestination("vhcalnplci", "brachi", "Abap2017", "001", "EN", "vhcalnplci", "00", "20", "10");
            RfcSessionManager.BeginContext(destination);
            destination.Ping();

            IRfcFunction function = destination.Repository.CreateFunction("/BODS/RFC_READ_TABLE");

            IRfcTable addresses = function["ADDRESSES"].GetTable();
            Console.WriteLine("STREET");
            for (int index = 0;
            index < addresses.RowCount;
            ++index)
            {
                Console.WriteLine(addresses[index]["STREET"].GetString());
            }
        }
    }
}

我知道错误是因为RFC_READ_TABLE模块中不存在该元素,但正如我所说的,我不知道如何获取数据,也不知道该部分程序真正需要什么代码。我已经阅读了SAP的编程指南,但可能会有人帮助我:

从我的角度来看,您的问题太广泛,无法在这里简单回答。 您似乎缺乏有关SAP系统及其功能和数据模型的基本知识。 使用SAP系统的推荐方法是使用适合您需要的特定功能模块(BAPI),如果这种功能模块无法现成提供,请在ABAP中开发您自己的功能模块。 如果选择任何RFC_READ_TABLE功能模块,则表明您希望像访问数据库一样访问SAP系统,而事实并非如此。它是一个数据库(使用数据库)。对于所有RFC_READ_表变体,您甚至需要了解SAP的内部数据库表设计及其表依赖关系,并且必须在函数调用中指定适当的SQL语句。这种方法容易出错,不是从SAP系统访问数据的推荐方法。 举个例子,如果您想读取存储的客户数据(包括其地址),请使用远程功能模块BAPI_customer_GETLIST。 最后是您的源代码:

  • 您通过调用
    RfcSessionManager.BeginContext(destination)
    创建了连接资源泄漏,但没有再次结束上下文。只有在执行有状态调用序列时确实需要它时才调用它。你在这里不需要它
  • 您没有为调用函数模块设置或填充任何导入参数
  • 您没有在SAP系统中执行/调用功能模块。这需要调用
    函数。调用(目标)
  • 您试图访问choosen function module/BODS/RFC_READ_表中不可用的参数“ADDRESSES”。查看SAP系统,并使用事务SE37检查功能模块接口公开的参数和表

  • 这回答了你的问题吗?
    IRfcTable addresses = function["ADDRESSES"].GetTable();