C# 使用 SAP NCO3.0 調用SAP RFC函數接口


最近使用C#調用SAP RFC函數,SAP提供了NCO3.0組件。

下載組件安裝,之后引用“sapnco.dll”和“sapnco_utils.dll”兩個文件。

在程序中 using SAP.Middleware.Connector;

具體看下面代碼

使用app.config文件配置注冊客戶端連接

<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="SAP.Middleware.Connector">
      <sectionGroup name="ClientSettings">
        <section name="DestinationConfiguration" type="SAP.Middleware.Connector.RfcDestinationConfiguration,sapnco"/>
      </sectionGroup>
    </sectionGroup>
  </configSections>
  <SAP.Middleware.Connector>
    <ClientSettings>
      <DestinationConfiguration>
        <destinations>
          <add NAME="Conn" USER="KY_PG01" PASSWD="ky@123" CLIENT="002" SYSNR="10" ASHOST="192.168.0.22" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="5"></add>
        </destinations>
      </DestinationConfiguration>
    </ClientSettings>
  </SAP.Middleware.Connector>
</configuration>
private RfcDestination _rfcDestination = null;
public DataTable dtr = new DataTable();

public void RegisterDestination()  //注冊客戶端
        {
            try
            {
                if (_rfcDestination == null)
                {
                    _rfcDestination = RfcDestinationManager.GetDestination("Conn");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

 public string InvokeRFCFunctionGetCompanyID(string dateBegin, string dateEnd)
        {
            IRfcFunction function = null;
            string str = string.Empty;
            try
            {
                function = _rfcDestination.Repository.CreateFunction("ZKY_FM_ZM005B");//調用服務器函數
                function.SetValue("SO_FKDAT_B", dateBegin);//傳入參數
                function.SetValue("SO_FKDAT_E", dateEnd);//傳入參數
                function.SetParameterActive(0, true);
                function.Invoke(_rfcDestination);//執行服務器調用的函數
                IRfcTable myrfcTable = function.GetTable("IT_ZM005B");//rfc server function 返回值table結構名稱
               
                int liElement = 0;
                for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++)
                {
                    RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
                    dtr.Columns.Add(metadata.Name);//循環創建列
                }
                foreach (IRfcStructure dr in myrfcTable)//循環table結構表
                {
                    DataRow row = dtr.NewRow();//創建新行
                    for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++)
                    {
                        RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
                        row[metadata.Name] = dr.GetString(metadata.Name).Trim();
                    }
                    dtr.Rows.Add(row);
                }
                this.dataGridView1.DataSource = dtr;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            return str;
        }

//在事件或方法中調用

 this.RegisterDestination();
 this.InvokeRFCFunctionGetCompanyID("20120401", "20120901");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM