在 SAP 中使用 EXEC 命令叫用 RFC 和 BAPI
.NET Framework Data Provider for mySAP Business Suite 會將 SAP 系統公開為 ADO.NET 資料來源。 藉由使用適用于 mySAP Business Suite 的.NET Framework資料提供者,您可以透過 EXEC 命令叫用 SAP 系統上的 RFC 和 BAPIs。
如何在 SAP 系統上叫用 RFC 和 BAPIs
若要使用適用于 SAP 的資料提供者叫用 RFC 或 BAPI,請執行下列步驟:
叫用 RFC 或 BAPI
將參考 (和 using 語句包含在程式碼中,) 至 Microsoft.Data.SAPClient。
使用 Data Provider for 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。
Data Provider for SAP 也會公開 SAPClientFactory 類別,您可以用來建立 SAPConnection、 SAPCommand 和 SAPConnection 物件。 如需資料提供者 for 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());
}
}
}
}
}
}