RFC C#

   SAP所提供的外部接口包括程序通信接口(communication interface)、文件I/O接口(file I/O interface)以及數據接口(data interface)。數據接口用於在系統內部對程序運行時數據和數據庫數據進行傳遞,其實現技術包括批輸入(batch input)、SAP SQL等。程序通信接口和文件I/O接口則是與其他系統進行數據交換的通路。文件I/O實現文件中數據和運行時數據間的交換(即將數據從文件上載到程序中。或將運行時數據下載至文件)。RFC位於程序通信接口中,以實現外部程序對SAP系統內部數據的訪問。

 以下是.C# 調用MD_STOCK_REQUIREMENTS_LIST_API的例子(可以到我的資源下載)。

測試環境: VS2008,XP

 //設置登錄連接的類
            DataSet dset = new DataSet();
            SAPLogonCtrl.SAPLogonControlClass logon = new SAPLogonCtrl.SAPLogonControlClass();
            //連接參數設置
            logon.ApplicationServer = "139.169.6.180";
            logon.Client = "800";
            logon.Language = "ZH";
            logon.User = "yincm";
            logon.Password = "8262879";
            logon.SystemNumber = 0;

            //實例化連接對象
            SAPLogonCtrl.Connection Conn;

            Conn = (SAPLogonCtrl.Connection)logon.NewConnection();
            //Conn.CodePage = "8400";
            //調用登錄方法
            if (Conn.Logon(0, true))
            {
                label1.Text = "登錄成功!";
            }
            else
            {
                label1.Text = "登錄失敗!";
            }

            if (label1.Text == "登錄成功!")
            {
                //實例SAPFunction對象

                SAPFunctionsOCX.SAPFunctionsClass func = new SAPFunctionsClass();

                //設置連接
                func.Connection = Conn;
                SAPFunctionsOCX.IFunction ifunc = (SAPFunctionsOCX.IFunction)func.Add("MD_STOCK_REQUIREMENTS_LIST_API");
                //設置輸入參數
                SAPFunctionsOCX.IParameter PLSCN = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("PLSCN");
                PLSCN.Value = "000";
                SAPFunctionsOCX.IParameter MATNR = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("MATNR");
                MATNR.Value = textBox2.Text.Trim();
                SAPFunctionsOCX.IParameter WERKS = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("WERKS");
                 WERKS.Value = "2110";

                //調用RFC方法
                ifunc.Call();
                SAPTableFactoryCtrl.Tables ENQs = (SAPTableFactoryCtrl.Tables)ifunc.Tables;
                //SAPTableFactoryCtrl.Table ENQ = (SAPTableFactoryCtrl.Table)ENQs.get_Item("IT_MARA");
                SAPTableFactoryCtrl.Table ENQ = (SAPTableFactoryCtrl.Table)ENQs.get_Item("MDEZX");
                //int j = ENQ.RowCount;
                DataTable dt = new DataTable();
                for (int i = 1; i <= ENQ.RowCount; i++)
                {
                    DataRow dr = dt.NewRow();
                    if (i == 1)
                    {
                         dt.Columns.Add("INDEX");
                         dt.Columns.Add("MNG02");
                         dt.Columns.Add("DAT00");
                    }

                    dr["INDEX"] = i.ToString();
                    dr["MNG02"] = ENQ.get_Cell(i, "MNG02").ToString();
                    dr["DAT00"] = ENQ.get_Cell(i, "DAT00").ToString();
                    dt.Rows.Add(dr);
                }
                dataGridView1.DataSource = dt.DefaultView;
                Conn.Logoff();
            }

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章