在 SAP 中使用 EXEC 命令调用 RFC 和 BAPIs

mySAP Business Suite 的 .NET Framework 数据提供程序将 SAP 系统公开为 ADO.NET 数据源。 通过使用 mySAP Business Suite 的 .NET Framework 数据提供程序,可以通过 EXEC 命令在 SAP 系统上调用 RFC 和 BAPIs。

如何在 SAP 系统上调用 RFC 和 BAPIs

若要使用 SAP 数据提供程序调用 RFC 或 BAPI,请执行以下步骤:

调用 RFC 或 BAPI

  1. 在代码中包含对 Microsoft.Data.SAPClient 的引用,并添加 using 语句。

  2. 使用用于 SAP 连接字符串的数据提供程序来创建 SAPConnection 对象。 有关连接字符串的详细信息,请参阅 有关 SAP 连接字符串的数据提供程序类型的信息

  3. 通过调用 SAPConnection 上的 Open 来打开到 SAP 系统的连接。

  4. SAPConnection 创建 SAPCommand 对象。

  5. SAPCommandCommandText 属性中指定 BAPI 或 RFC 调用。 如有必要,可以使用 SAPParameter 对象指定参数。 有关如何使用 EXEC 语句指定 BAPI 或 RFC 调用的详细信息,请参阅 SAP 中 EXEC 语句的语法。 有关如何指定 BAPI 或 RFC 的示例,请参阅 EXEC 语句的示例

  6. 执行命令以调用 RFC 或 BAPI 并在 SAPDataReader 中获取结果。

  7. SAPDataReader 读取结果。

  8. 使用完它们后,请关闭或释放 SAPConnectionSAPDataReader

    SAP 数据提供程序还公开了 一个 SAPClientFactory 类,可用于创建 SAPConnectionSAPCommandSAPConnection 对象。 有关由 SAP 数据提供程序扩展的 ADO.NET 类的详细信息,请参阅 使用 SAP 适配器扩展 ADO.NET 接口

示例:

以下示例调用SD_RFC_CUSTOMER_GET,检索其名称以“AB”开头的所有客户的客户信息。 然后,它将客户记录写入控制台。

using System;  
using System.Collections.Generic;  
using System.Text;  
  
using Microsoft.Data.SAPClient;  
  
namespace SapAdoExec  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            string connstr = "TYPE=A; ASHOST=YourSAPHost; SYSNR=00; CLIENT=800; LANG=EN; USER=YourUserName; PASSWD=YourPassword;";  
  
            using (SAPConnection conn = new SAPConnection(connstr))  
            {  
                conn.Open();  
  
                using (SAPCommand cmd = conn.CreateCommand())  
                {  
                    cmd.CommandText = "exec sd_rfc_customer_get @name1='AB*' ";  
                    using (SAPDataReader dr = cmd.ExecuteReader())  
                    {  
                        do  
                        {  
                            int rows = 0;  
                            while (dr.Read())  
                            {  
                                rows++;  
                                StringBuilder b = new StringBuilder();  
                                for (int i = 0; i < dr.FieldCount; i++)  
                                {  
                                    b.Append(dr[i].ToString() + " ");  
                                }  
                                Console.WriteLine("row {0}: {1} ", rows, b.ToString());  
                            }  
                            Console.WriteLine("Number of rows:{0}", rows);  
                        } while (dr.NextResult());  
  
                    }  
                }  
            }  
  
        }  
    }  
}  

另请参阅

使用 mySAP Business Suite 的 .NET Framework 数据提供程序
示例