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

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

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

若要使用适用于 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 数据提供程序
示例