在 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
在) Microsoft.Data.SAPClient 的代码中包含引用 (和 using 语句。
使用适用于 SAP 连接字符串的数据提供程序创建 SAPConnection 对象。 有关连接字符串的详细信息,请参阅读取 SAP 连接字符串的数据提供程序类型。
通过在 SAPConnection 上调用 Open 来打开与 SAP 系统的连接。
从 SAPConnection 创建 SAPCommand 对象。
在 SAPCommand 的 CommandText 属性中指定 BAPI 或 RFC 调用。 如有必要,可以使用 SAPParameter 对象指定参数。 有关如何使用 EXEC 语句指定 BAPI 或 RFC 调用的详细信息,请参阅 SAP 中的 EXEC 语句的语法。 有关如何指定 BAPI 或 RFC 的示例,请参阅 EXEC 语句的示例。
执行 命令以调用 RFC 或 BAPI 并在 SAPDataReader 中获取结果。
从 SAPDataReader 读取结果。
使用完它们后,请关闭 (或释放) SAPConnection 和 SAPDataReader。
适用于 SAP 的数据提供程序还公开 了 SAPClientFactory 类,可用于创建 SAPConnection、 SAPCommand 和 SAPConnection 对象。 有关 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());
}
}
}
}
}
}