.NET调用SAP(RFC)


public void nco()
        {
           
            //MyBackendConfig config = new MyBackendConfig();
            IDestinationConfiguration ID = new MyBackendConfig();
            RfcDestinationManager.RegisterDestinationConfiguration(ID);

            RfcDestination prd = RfcDestinationManager.GetDestination("PRD_000");
            RfcDestinationManager.UnregisterDestinationConfiguration(ID);
            nco(prd);
        }

        public void nco(RfcDestination prd)
        {
            RfcRepository repo = prd.Repository;
            IRfcFunction companyBapi = repo.CreateFunction("Z_RFC_MB51N");   //调用函数名
            DateTime dt = DateTime.Today;
            companyBapi.SetValue("DATE",dt);   //设置Import的参数
            companyBapi.Invoke(prd);   //执行函数
            IRfcTable table = companyBapi.GetTable("IT_MB51");  //获取相应的品号内表
            //DataTable mb51 = new DataTable();  //新建表格

            try
            {
                SqlConnection conn = new SqlConnection("server=192.168.127.11;uid=sa;pwd=*****;database=MOLD;");
                string matnr;
                string lgort;
                string bwart;
                string mblnr;
                string ebeln;
                string lifnr;
                string aufnr;
                string sobkz;
                string kdauf;
                float menge;
                float dmbtr;
                for (int i = 0; i < table.RowCount; i++)
                {
                    table.CurrentIndex = i;
                    matnr = table.CurrentRow.GetString("MATNR");
                    lgort = table.CurrentRow.GetString("LGORT");
                    bwart = table.CurrentRow.GetString("BWART");
                    mblnr = table.CurrentRow.GetString("MBLNR");
                    ebeln = table.CurrentRow.GetString("EBELN");
                    lifnr = table.CurrentRow.GetString("LIFNR");
                    aufnr = table.CurrentRow.GetString("AUFNR");
                    sobkz = table.CurrentRow.GetString("SOBKZ");
                    kdauf = table.CurrentRow.GetString("KDAUF");
                    menge=float.Parse( table.GetString("MENGE"));
                    dmbtr=float.Parse( table.GetString("DMBTR"));
                    
                    conn.Open();
                    SqlCommand comm;
                    string select = "select * from dbo.rfc where Matnr='"+ matnr +"'";
                    comm = new SqlCommand(select, conn);
                    int j =Convert.ToInt32(comm.ExecuteScalar());
                    if (j != 0)
                    {
                        string s = "update dbo.rfc set [Count]=[Count] + '" + menge + "',LocalCurrency=LocalCurrency + '" + dmbtr + "' where Matnr='" + dmbtr + "'";
                        comm = new SqlCommand(s, conn);
                        comm.ExecuteNonQuery();
                    }
                    else
                    {
                        string s = "insert into dbo.rfc  values ('" + matnr + "','" + lgort + "','" + bwart + "','" + mblnr + "','" + ebeln + "','" + lifnr + "','" + aufnr + "','" + sobkz + "','" + kdauf + "','" + menge + "','" + dmbtr + "')";
                        comm = new SqlCommand(s, conn);
                        comm.ExecuteNonQuery();
                    }
                    conn.Close();
                }
               
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
               
            }
            prd = null;
            repo = null;
         
        }
        public class MyBackendConfig : IDestinationConfiguration
        {
            public RfcConfigParameters GetParameters(String destinationName)
            {
                if ("PRD_000".Equals(destinationName))
                {
                    RfcConfigParameters parms = new RfcConfigParameters();
                    parms.Add(RfcConfigParameters.AppServerHost, "192.168.5.55");   //SAP主机IP
                    parms.Add(RfcConfigParameters.SystemNumber, "PRD");  //SAP实例
                    parms.Add(RfcConfigParameters.User, "RFCUSER");  //用户名
                    parms.Add(RfcConfigParameters.Password, "1234");  //密码
                    parms.Add(RfcConfigParameters.Client, "888");  // Client
                    parms.Add(RfcConfigParameters.Language, "ZF");  //登陆语言
                    parms.Add(RfcConfigParameters.PoolSize, "5");
                    parms.Add(RfcConfigParameters.MaxPoolSize, "10");
                    parms.Add(RfcConfigParameters.IdleTimeout, "60");
                    return parms;
                }
                else
                    return null;
            }
            public bool ChangeEventsSupported()
            {
                return false;
            }
            public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;
        }
        #endregion

        public void Form1_Load(object sender, EventArgs e)
        {
            nco();
            //System.Threading.Thread.Sleep(2000);
          
            Application.Exit();
        }