共用方式為


在 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

  1. 將參考 (和 using 語句包含在程式碼中,) 至 Microsoft.Data.SAPClient

  2. 使用 Data Provider for 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

    Data Provider for SAP 也會公開 SAPClientFactory 類別,您可以用來建立 SAPConnectionSAPCommandSAPConnection 物件。 如需資料提供者 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());  
  
                    }  
                }  
            }  
  
        }  
    }  
}  

另請參閱

使用 .NET Framework Data Provider for mySAP Business Suite
範例