asp.Net 调用 SAP RFC, 取得SAP数据

读取SAP数据, 从两方面来做

1) 做一个C# app 在服务器上"任务计划"每天读取. 必须在服务器上执行, 否则可能从SAP读的汉字是乱码. (设置Connection的codepage = "8400"可以解决乱码问题.)

2) 对于要实时读取的, 做成页面或web Service放OA上.

 

下面是页面实现的部分代码.

 

 

 

 

using System.Data.SqlClient;  //连接SQL SERVER
using System.Data.OleDb;     //把页面GridView的数据导出EXCEL中用到

using SAPFunctionsOCX;    //以下三项安装SAP客户端后引用
using SAPLogonCtrl;
using SAPTableFactoryCtrl;

 

 

//页面上调用事件

 

    protected void Button2_Click(object sender, EventArgs e) 
    {
        stdate = System.DateTime.Now;
        DataTable dt = this.GetGridData();
        foreach (DataRow row in dt.Rows)
        {
            tOrder = row["生产订单"].ToString();
            if (string.IsNullOrEmpty(tOrder) == true)
            {               
                break;
            }
            else
            {
                ExecSQL("INSERT INTO 重读订单(生产订单) VALUES ('" + tOrder + "')");
            }
        }
        dt.Dispose();

        GridView2.DataSource = GetDataSet("select * from 重读订单 where 状态 is null", "重读订单");
        GridView2.DataBind();
        int dgv = GridView2.Rows.Count;

        if (dgv >= 1)
        {

            System.Threading.Thread s = new System.Threading.Thread(new System.Threading.ThreadStart(GETTBL));
            s.SetApartmentState(System.Threading.ApartmentState.STA);
            s.Start();
            s.Join();

            GridView1.DataSource = GetDataSet("select * from 重读订单", "重读订单");
            GridView1.DataBind();
          
            endate = System.DateTime.Now;

            int st_hours = stdate.Hour;
            int st_minute = stdate.Minute;
            int st_second = stdate.Second;

            int en_hours = endate.Hour;
            int en_minute = endate.Minute;
            int en_second = endate.Second;


            string timeConsume = Convert.ToString(en_hours - st_hours) + "时 " + Convert.ToString(en_minute - st_minute) + "分 " + Convert.ToString(en_second - st_second) + "秒";

            ExecSQL("Delete from 重读订单 where 状态 is not null");
            
            insertEvent(stdate.ToString(), endate.ToString(), timeConsume, "重读订单", recAufk);
        }
        else
        {
            Response.Write(MessageBox("请输入生产订单!"));
        }

    }


    protected void Button4_Click(object sender, EventArgs e)
    {
        DataTable dt = this.GetGridData();
        DataRow newRow = dt.NewRow();
        newRow[0] = "";
        newRow[1] = null;       
        dt.Rows.Add(newRow);
        GridView1.DataSource = dt;
        GridView1.DataBind();
        dt.Dispose();
    }

    protected DataTable GetGridData()
    {
        DataTable dt1 = new DataTable("Table1");
        dt1.Columns.Add("生产订单");
        dt1.Columns.Add("状态");
       
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            GridViewRow gRow = GridView1.Rows[i];
            DataRow newRow = dt1.NewRow();

            newRow[0] = ((TextBox)gRow.FindControl("TextBox1")).Text;
            newRow[1] = ((TextBox)gRow.FindControl("TextBox2")).Text;           
            dt1.Rows.Add(newRow);
        }
        dt1.AcceptChanges();
        return dt1;
    }

 

 

 

//连接SAP, 调用RFC 

 

    protected void GETTBL()
    {
        SAPLogonCtrl.SAPLogonControlClass sapLogin = new SAPLogonCtrl.SAPLogonControlClass();
        sapLogin.ApplicationServer = "ip address";
        sapLogin.Client = "300";
        sapLogin.Language = "ZH";
        sapLogin.User = "myName";
        sapLogin.Password = "myPw";
        sapLogin.SystemNumber = 00;

        SAPLogonCtrl.Connection sapConn = (SAPLogonCtrl.Connection)sapLogin.NewConnection();

        if (sapConn.Logon(0, true))  //login successful
        {
            SAPFunctionsOCX.SAPFunctionsClass func = new SAPFunctionsOCX.SAPFunctionsClass();
            func.Connection = sapConn;
            SAPFunctionsOCX.IFunction ifunc = (SAPFunctionsOCX.IFunction)func.Add("ZRFC_AUFK");


            GridView2.DataSource = GetDataSet("select * from 重读订单 where 状态 is null", "重读订单");
            GridView2.DataBind();
            int dgv = GridView2.Rows.Count;
            recAufk = dgv;
            string T_aufnr;
            string o_aufnr;


            if (dgv >= 1)
            {
                for (int i = 0; i < dgv; i++)
                {
                    T_aufnr = GridView2.Rows[i].Cells[0].Text.ToString();
                    o_aufnr = T_aufnr;

                    if (T_aufnr.Length < 12) //补零
                    {
                        string str_zero = "0";

                        for (int j = 2; j <= 12 - T_aufnr.Length; j++)
                        {
                            str_zero = str_zero + j.ToString();
                            str_zero = str_zero.Replace(j.ToString(), "0");
                        }
                        T_aufnr = str_zero + T_aufnr;
                    }

                    SAPFunctionsOCX.IParameter zaufnr = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("ZAUFNR");
                    zaufnr.Value = T_aufnr;

                    SAPFunctionsOCX.IParameter zstyle = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("ZSTYLE");
                    zstyle.Value = "2";

                    ifunc.Call();
                    //  SAPFunctionsOCX.IParameter NUMBER =(SAPFunctionsOCX.IParameter)ifunc.get_Imports("SUBRC");
                    SAPTableFactoryCtrl.Tables ORDERs = (SAPTableFactoryCtrl.Tables)ifunc.Tables;             //get all the tables
                    SAPTableFactoryCtrl.Table tbAufk = (SAPTableFactoryCtrl.Table)ORDERs.get_Item("ORDER_LIST");
                    SAPTableFactoryCtrl.Table tbAFVC = (SAPTableFactoryCtrl.Table)ORDERs.get_Item("AFVC_LIST");
                    SAPTableFactoryCtrl.Table tbVBAK = (SAPTableFactoryCtrl.Table)ORDERs.get_Item("VBAK_LIST");
                    SAPTableFactoryCtrl.Table tbVBAP = (SAPTableFactoryCtrl.Table)ORDERs.get_Item("VBAP_LIST");
                    SAPTableFactoryCtrl.Table tbAFFL = (SAPTableFactoryCtrl.Table)ORDERs.get_Item("AFFL_LIST");
                   

                    if (tbAufk.RowCount >= 1)
                    {
                        for (int i1 = 1; i1 <= tbAufk.RowCount; i1++)
                        {
                            insertAUFK(
                                tbAufk.get_Cell(i1, "AUFNR").ToString(),
                                tbAufk.get_Cell(i1, "AUART").ToString(),
                                Convert.ToInt32(tbAufk.get_Cell(i1, "AUTYP")),
                                Convert.ToDateTime(tbAufk.get_Cell(i1, "ERDAT")),
                                tbAufk.get_Cell(i1, "BUKRS").ToString(),
                                tbAufk.get_Cell(i1, "WERKS").ToString(),
                                tbAufk.get_Cell(i1, "OBJNR").ToString(),
                                tbAufk.get_Cell(i1, "LOEKZ").ToString(),
                                Convert.ToDateTime(tbAufk.get_Cell(i1, "GLTRP")),
                                Convert.ToDateTime(tbAufk.get_Cell(i1, "GSTRP")),
                                Convert.ToInt32(tbAufk.get_Cell(i1, "RSNUM")),
                                tbAufk.get_Cell(i1, "DISPO").ToString(),
                                Convert.ToInt32(tbAufk.get_Cell(i1, "AUFPL")),
                                tbAufk.get_Cell(i1, "FEVOR").ToString(),
                                tbAufk.get_Cell(i1, "APRIO").ToString(),
                                tbAufk.get_Cell(i1, "CY_SEQNR").ToString(),
                                Convert.ToDecimal(tbAufk.get_Cell(i1, "IGMNG")),
                                tbAufk.get_Cell(i1, "POSNR").ToString(),
                                tbAufk.get_Cell(i1, "KDAUF").ToString(),
                                Convert.ToInt32(tbAufk.get_Cell(i1, "KDPOS")),
                                Convert.ToDecimal(tbAufk.get_Cell(i1, "PSMNG")),
                                Convert.ToDecimal(tbAufk.get_Cell(i1, "WEMNG")),
                                tbAufk.get_Cell(i1, "MEINS").ToString(),
                                tbAufk.get_Cell(i1, "MATNR").ToString(),
                                tbAufk.get_Cell(i1, "LTRMI").ToString(),
                                tbAufk.get_Cell(i1, "ELIKZ").ToString(),
                                tbAufk.get_Cell(i1, "DFREI").ToString(),
                                tbAufk.get_Cell(i1, "DNREL").ToString(),
                                tbAufk.get_Cell(i1, "BEZEI").ToString(),
                                tbAufk.get_Cell(i1, "TXT").ToString());
                        }


                        if (tbAFVC.RowCount >= 1)
                        {
                            for (int k = 1; k <= tbAFVC.RowCount; k++)
                            {
                                insertAFVC(
                                     Convert.ToInt32(tbAFVC.get_Cell(k, "AUFPL")),
                                     Convert.ToInt32(tbAFVC.get_Cell(k, "APLZL")),
                                     tbAFVC.get_Cell(k, "OBJNR").ToString(),
                                     tbAFVC.get_Cell(k, "PLNFL").ToString(),
                                     Convert.ToInt32(tbAFVC.get_Cell(k, "PLNKN")),
                                     tbAFVC.get_Cell(k, "PLNNR").ToString(),
                                     Convert.ToInt32(tbAFVC.get_Cell(k, "ZAEHL")),
                                     tbAFVC.get_Cell(k, "VORNR").ToString(),
                                     tbAFVC.get_Cell(k, "STEUS").ToString(),
                                     Convert.ToInt32(tbAFVC.get_Cell(k, "ARBID")),
                                     tbAFVC.get_Cell(k, "WERKS").ToString(),
                                     tbAFVC.get_Cell(k, "KTSCH").ToString(),
                                     tbAFVC.get_Cell(k, "LTXA1").ToString(),
                                     tbAFVC.get_Cell(k, "VGWTS").ToString(),
                                     Convert.ToInt32(tbAFVC.get_Cell(k, "SUMNR")),
                                     tbAFVC.get_Cell(k, "VGE01").ToString(),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "VGW01")),
                                     tbAFVC.get_Cell(k, "VGE02").ToString(),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "VGW02")),
                                     tbAFVC.get_Cell(k, "VGE03").ToString(),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "VGW03")),
                                     tbAFVC.get_Cell(k, "VGE04").ToString(),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "VGW04")),
                                     tbAFVC.get_Cell(k, "VGE05").ToString(),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "VGW05")),
                                     tbAFVC.get_Cell(k, "VGE06").ToString(),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "VGW06")),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "MGVRG")),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "LMNGA")),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "ISM01")),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "ISM02")),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "ISM03")),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "ISM04")),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "ISM05")),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "ISM06")),
                                     Convert.ToDecimal(tbAFVC.get_Cell(k, "RMNGA")));
                            }
                        }

                        if (tbVBAK.RowCount >= 1)
                        {
                            for (int L = 1; L <= tbVBAK.RowCount; L++)
                            {

                                insertVBAK(
                                     tbVBAK.get_Cell(L, "VBELN").ToString(),
                                     Convert.ToDateTime(tbVBAK.get_Cell(L, "ERDAT")),
                                     tbVBAK.get_Cell(L, "VBTYP").ToString(),
                                     tbVBAK.get_Cell(L, "VKORG").ToString(),
                                     tbVBAK.get_Cell(L, "BSTNK").ToString(),
                                     tbVBAK.get_Cell(L, "KUNNR").ToString(),
                                     Convert.ToInt32(tbVBAK.get_Cell(L, "PERNR")),
                                     tbVBAK.get_Cell(L, "SNAME").ToString(),
                                     tbVBAK.get_Cell(L, "UNCONF").ToString());
                            }
                        }

                        if (tbVBAP.RowCount >= 1)
                        {
                            for (int M = 1; M <= tbVBAP.RowCount; M++)
                            {
                                insertVBAP(
                                     tbVBAP.get_Cell(M, "VBELN").ToString(),
                                     Convert.ToInt32(tbVBAP.get_Cell(M, "POSNR")),
                                     tbVBAP.get_Cell(M, "KDMAT").ToString(),
                                     Convert.ToDateTime(tbVBAP.get_Cell(M, "EDATU")),
                                     tbVBAP.get_Cell(M, "UNCONF").ToString());
                            }
                        }

                        /*
                        if (tbAFFL.RowCount >= 1)
                        {
                            for (int P = 1; P <= tbAFFL.RowCount; P++)
                            {
                                if (IAUFPL == Convert.ToInt32(tbAFFL.get_Cell(P, "AUFPL")))
                                { IAL = 0; }
                                else { IAL = 1; }

                                insertAFFL(
                                        Convert.ToInt32(tbAFFL.get_Cell(P, "AUFPL")),
                                        Convert.ToInt32(tbAFFL.get_Cell(P, "APLZL")),
                                        tbAFFL.get_Cell(P, "PLNFL").ToString(),
                                        Convert.ToInt32(tbAFFL.get_Cell(P, "ZAEHL")),
                                        tbAFFL.get_Cell(P, "AENNR").ToString(),
                                        tbAFFL.get_Cell(P, "FLGAT").ToString(),
                                        tbAFFL.get_Cell(P, "BEZFL").ToString(),
                                        Convert.ToInt32(tbAFFL.get_Cell(P, "BKNT1")),
                                        Convert.ToInt32(tbAFFL.get_Cell(P, "BKNT2")),
                                        tbAFFL.get_Cell(P, "LTXA1").ToString(),
                                        tbAFFL.get_Cell(P, "BSCHL1").ToString(),
                                        tbAFFL.get_Cell(P, "BSCHL2").ToString(),
                                        tbAFFL.get_Cell(P, "OBJNR").ToString(),
                                        tbAFFL.get_Cell(P, "OBJTYPE").ToString(),
                                        IAL);
                                IAUFPL = Convert.ToInt32(tbAFFL.get_Cell(P, "AUFPL"));
                            }
                        }*/

                        ExecSQL("UPDATE 重读订单 SET 状态 = '已更新' where 生产订单 ='" + o_aufnr + "'");
                    }
                    else
                    {
                        ExecSQL("UPDATE 重读订单 SET 状态 = '订单号码错误' where 生产订单 ='" + o_aufnr + "'");
                        ExecSQL("Delete from 出货计划进度表 WHERE 生产订单 ='" + o_aufnr + "'");
                        ExecSQL("Delete from 出货计划表_明细 WHERE 生产订单 ='" + o_aufnr + "'");
                        //ExecSQL("Delete from AUFK WHERE AUFNR ='" + o_aufnr + "'");
                    }
                }
            }
            else
            {

                ifunc.Call();
                //  SAPFunctionsOCX.IParameter NUMBER =(SAPFunctionsOCX.IParameter)ifunc.get_Imports("SUBRC");
                SAPTableFactoryCtrl.Tables ORDERa = (SAPTableFactoryCtrl.Tables)ifunc.Tables;             //get all the tables
                SAPTableFactoryCtrl.Table tbAufk = (SAPTableFactoryCtrl.Table)ORDERa.get_Item("ORDER_LIST");
                SAPTableFactoryCtrl.Table tbAFVC = (SAPTableFactoryCtrl.Table)ORDERa.get_Item("AFVC_LIST");
                SAPTableFactoryCtrl.Table tbVBAK = (SAPTableFactoryCtrl.Table)ORDERa.get_Item("VBAK_LIST");
                SAPTableFactoryCtrl.Table tbVBAP = (SAPTableFactoryCtrl.Table)ORDERa.get_Item("VBAP_LIST");
                SAPTableFactoryCtrl.Table tbAFFL = (SAPTableFactoryCtrl.Table)ORDERa.get_Item("AFFL_LIST");


                if (tbAufk.RowCount >= 1)
                {
                    for (int i = 1; i <= tbAufk.RowCount; i++)
                    {

                        insertAUFK(tbAufk.get_Cell(i, "AUFNR").ToString(),
                        tbAufk.get_Cell(i, "AUART").ToString(),
                        Convert.ToInt32(tbAufk.get_Cell(i, "AUTYP")),
                        Convert.ToDateTime(tbAufk.get_Cell(i, "ERDAT")),
                        tbAufk.get_Cell(i, "BUKRS").ToString(),
                        tbAufk.get_Cell(i, "WERKS").ToString(),
                        tbAufk.get_Cell(i, "OBJNR").ToString(),
                        tbAufk.get_Cell(i, "LOEKZ").ToString(),
                        Convert.ToDateTime(tbAufk.get_Cell(i, "GLTRP")),
                        Convert.ToDateTime(tbAufk.get_Cell(i, "GSTRP")),
                        Convert.ToInt32(tbAufk.get_Cell(i, "RSNUM")),
                        tbAufk.get_Cell(i, "DISPO").ToString(),
                        Convert.ToInt32(tbAufk.get_Cell(i, "AUFPL")),
                        tbAufk.get_Cell(i, "FEVOR").ToString(),
                        tbAufk.get_Cell(i, "APRIO").ToString(),
                        tbAufk.get_Cell(i, "CY_SEQNR").ToString(),
                        Convert.ToDecimal(tbAufk.get_Cell(i, "IGMNG")),
                        tbAufk.get_Cell(i, "POSNR").ToString(),
                        tbAufk.get_Cell(i, "KDAUF").ToString(),
                        Convert.ToInt32(tbAufk.get_Cell(i, "KDPOS")),
                        Convert.ToDecimal(tbAufk.get_Cell(i, "PSMNG")),
                        Convert.ToDecimal(tbAufk.get_Cell(i, "WEMNG")),
                        tbAufk.get_Cell(i, "MEINS").ToString(),
                        tbAufk.get_Cell(i, "MATNR").ToString(),
                        tbAufk.get_Cell(i, "LTRMI").ToString(),
                        tbAufk.get_Cell(i, "ELIKZ").ToString(),
                        tbAufk.get_Cell(i, "DFREI").ToString(),
                        tbAufk.get_Cell(i, "DNREL").ToString(),
                        tbAufk.get_Cell(i, "BEZEI").ToString(),
                        tbAufk.get_Cell(i, "TXT").ToString());
                    }


                    if (tbAFVC.RowCount >= 1)
                    {
                        for (int i = 1; i <= tbAFVC.RowCount; i++)
                        {
                            insertAFVC(
                                    Convert.ToInt32(tbAFVC.get_Cell(i, "AUFPL")),
                                    Convert.ToInt32(tbAFVC.get_Cell(i, "APLZL")),
                                    tbAFVC.get_Cell(i, "OBJNR").ToString(),
                                    tbAFVC.get_Cell(i, "PLNFL").ToString(),
                                    Convert.ToInt32(tbAFVC.get_Cell(i, "PLNKN")),
                                    tbAFVC.get_Cell(i, "PLNNR").ToString(),
                                    Convert.ToInt32(tbAFVC.get_Cell(i, "ZAEHL")),
                                    tbAFVC.get_Cell(i, "VORNR").ToString(),
                                    tbAFVC.get_Cell(i, "STEUS").ToString(),
                                    Convert.ToInt32(tbAFVC.get_Cell(i, "ARBID")),
                                    tbAFVC.get_Cell(i, "WERKS").ToString(),
                                    tbAFVC.get_Cell(i, "KTSCH").ToString(),
                                    tbAFVC.get_Cell(i, "LTXA1").ToString(),
                                    tbAFVC.get_Cell(i, "VGWTS").ToString(),
                                    Convert.ToInt32(tbAFVC.get_Cell(i, "SUMNR")),
                                    tbAFVC.get_Cell(i, "VGE01").ToString(),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "VGW01")),
                                    tbAFVC.get_Cell(i, "VGE02").ToString(),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "VGW02")),
                                    tbAFVC.get_Cell(i, "VGE03").ToString(),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "VGW03")),
                                    tbAFVC.get_Cell(i, "VGE04").ToString(),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "VGW04")),
                                    tbAFVC.get_Cell(i, "VGE05").ToString(),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "VGW05")),
                                    tbAFVC.get_Cell(i, "VGE06").ToString(),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "VGW06")),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "MGVRG")),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "LMNGA")),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "ISM01")),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "ISM02")),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "ISM03")),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "ISM04")),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "ISM05")),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "ISM06")),
                                    Convert.ToDecimal(tbAFVC.get_Cell(i, "RMNGA")));
                        }
                    }

                    if (tbVBAK.RowCount >= 1)
                    {
                        for (int i = 1; i <= tbVBAK.RowCount; i++)
                        {
                            insertVBAK(
                                    tbVBAK.get_Cell(i, "VBELN").ToString(),
                                    Convert.ToDateTime(tbVBAK.get_Cell(i, "ERDAT")),
                                    tbVBAK.get_Cell(i, "VBTYP").ToString(),
                                    tbVBAK.get_Cell(i, "VKORG").ToString(),
                                    tbVBAK.get_Cell(i, "BSTNK").ToString(),
                                    tbVBAK.get_Cell(i, "KUNNR").ToString(),
                                    Convert.ToInt32(tbVBAK.get_Cell(i, "PERNR")),
                                    tbVBAK.get_Cell(i, "SNAME").ToString(),
                                    tbVBAK.get_Cell(i, "UNCONF").ToString());
                        }
                    }

                    if (tbVBAP.RowCount >= 1)
                    {
                        for (int i = 1; i <= tbVBAP.RowCount; i++)
                        {
                            insertVBAP(
                                    tbVBAP.get_Cell(i, "VBELN").ToString(),
                                    Convert.ToInt32(tbVBAP.get_Cell(i, "POSNR")),
                                    tbVBAP.get_Cell(i, "KDMAT").ToString(),
                                    Convert.ToDateTime(tbVBAP.get_Cell(i, "EDATU")),
                                    tbVBAP.get_Cell(i, "UNCONF").ToString());
                        }
                    }

                    /* Modified by Lin on 2009-10-28
                    if (tbAFFL.RowCount >= 1)
                    {
                        for (int P = 1; P <= tbAFFL.RowCount; P++)
                        {

                            if (IAUFPL == Convert.ToInt32(tbAFFL.get_Cell(P, "AUFPL")))
                            { IAL = 0; }
                            else { IAL = 1; }

                            insertAFFL(
                                    Convert.ToInt32(tbAFFL.get_Cell(P, "AUFPL")),
                                    Convert.ToInt32(tbAFFL.get_Cell(P, "APLZL")),
                                    tbAFFL.get_Cell(P, "PLNFL").ToString(),
                                    Convert.ToInt32(tbAFFL.get_Cell(P, "ZAEHL")),
                                    tbAFFL.get_Cell(P, "AENNR").ToString(),
                                    tbAFFL.get_Cell(P, "FLGAT").ToString(),
                                    tbAFFL.get_Cell(P, "BEZFL").ToString(),
                                    Convert.ToInt32(tbAFFL.get_Cell(P, "BKNT1")),
                                    Convert.ToInt32(tbAFFL.get_Cell(P, "BKNT2")),
                                    tbAFFL.get_Cell(P, "LTXA1").ToString(),
                                    tbAFFL.get_Cell(P, "BSCHL1").ToString(),
                                    tbAFFL.get_Cell(P, "BSCHL2").ToString(),
                                    tbAFFL.get_Cell(P, "OBJNR").ToString(),
                                    tbAFFL.get_Cell(P, "OBJTYPE").ToString(),
                                    IAL);
                            IAUFPL = Convert.ToInt32(tbAFFL.get_Cell(P, "AUFPL"));

                        }
                    } */

                }


                SAPFunctionsOCX.SAPFunctionsClass func1 = new SAPFunctionsOCX.SAPFunctionsClass();
                func1.Connection = sapConn;
                SAPFunctionsOCX.IFunction ifunc1 = (SAPFunctionsOCX.IFunction)func.Add("ZRFC_OTHER");

                ifunc1.Call();
                SAPTableFactoryCtrl.Tables otENQs = (SAPTableFactoryCtrl.Tables)ifunc1.Tables;
                SAPTableFactoryCtrl.Table tbAUFK1 = (SAPTableFactoryCtrl.Table)otENQs.get_Item("ORDER_LIST");
                SAPTableFactoryCtrl.Table tbVBAK1 = (SAPTableFactoryCtrl.Table)otENQs.get_Item("VBAK_LIST");
                SAPTableFactoryCtrl.Table tbVBAP1 = (SAPTableFactoryCtrl.Table)otENQs.get_Item("VBAP_LIST");


                if (tbAUFK1.RowCount >= 1)
                {
                    for (int i7 = 1; i7 <= tbAUFK1.RowCount; i7++)
                    {
                        updAUFK(tbAUFK1.get_Cell(i7, "AUFNR").ToString(),
                                tbAUFK1.get_Cell(i7, "DNREL").ToString());
                    }

 

                    if (tbVBAK1.RowCount >= 1)
                    {
                        for (int i8 = 1; i8 <= tbVBAK1.RowCount; i8++)
                        {
                            updVBAK(
                                    tbVBAK1.get_Cell(i8, "VBELN").ToString(),
                                    tbVBAK1.get_Cell(i8, "UNCONF").ToString());
                        }
                    }


                    if (tbVBAP1.RowCount >= 1)
                    {
                        for (int i9 = 1; i9 <= tbVBAP1.RowCount; i9++)
                        {
                            updVBAP(
                                    tbVBAP1.get_Cell(i9, "VBELN").ToString(),
                                    Convert.ToInt32(tbVBAP1.get_Cell(i9, "POSNR")),
                                    tbVBAP1.get_Cell(i9, "UNCONF").ToString());
                        }
                    }
                }
            }
            runProcMain();
        }
        else
        {
           // NOTconn = "FAILTOCONNECTSAP";
        }
    }

 

//存储过程调用

 

    public void insertAUFK(string AUFNR, string AUART, Int32 AUTYP, DateTime ERDAT, string BUKRS, string WERKS,
                            string OBJNR, string LOEKZ, DateTime GLTRP, DateTime GSTRP, Int32 RSNUM, string DISPO, Int32 AUFPL, string FEVOR,
                            string APRIO, string CY_SEQNR, decimal IGMNG, string POSNR, string KDAUF, Int32 KDPOS, decimal PSMNG,
                            decimal WEMNG, string MEINS, string MATNR, string LTRMI, string ELIKZ, string DFREI, string DNREL, string BEZEI, string txt)
    {


        SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connectES"]);
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandTimeout = 600;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "sp_AUFK";
        cmd.Parameters.Add(new SqlParameter("@AUFNR", AUFNR));
        cmd.Parameters.Add(new SqlParameter("@AUART", AUART));
        cmd.Parameters.Add(new SqlParameter("@AUTYP", AUTYP));
        cmd.Parameters.Add(new SqlParameter("@ERDAT", ERDAT));
        cmd.Parameters.Add(new SqlParameter("@BUKRS", BUKRS));
        cmd.Parameters.Add(new SqlParameter("@WERKS", WERKS));
        cmd.Parameters.Add(new SqlParameter("@OBJNR", OBJNR));
        cmd.Parameters.Add(new SqlParameter("@LOEKZ", LOEKZ));
        cmd.Parameters.Add(new SqlParameter("@GLTRP", GLTRP));
        cmd.Parameters.Add(new SqlParameter("@GSTRP", GSTRP));
        cmd.Parameters.Add(new SqlParameter("@RSNUM", RSNUM));
        cmd.Parameters.Add(new SqlParameter("@DISPO", DISPO));
        cmd.Parameters.Add(new SqlParameter("@AUFPL", AUFPL));
        cmd.Parameters.Add(new SqlParameter("@FEVOR", FEVOR));
        cmd.Parameters.Add(new SqlParameter("@APRIO", APRIO));
        cmd.Parameters.Add(new SqlParameter("@CY_SEQNR", CY_SEQNR));
        cmd.Parameters.Add(new SqlParameter("@IGMNG", IGMNG));
        cmd.Parameters.Add(new SqlParameter("@POSNR", POSNR));
        cmd.Parameters.Add(new SqlParameter("@KDAUF", KDAUF));
        cmd.Parameters.Add(new SqlParameter("@KDPOS", KDPOS));
        cmd.Parameters.Add(new SqlParameter("@PSMNG", PSMNG));
        cmd.Parameters.Add(new SqlParameter("@WEMNG", WEMNG));
        cmd.Parameters.Add(new SqlParameter("@MEINS", MEINS));
        cmd.Parameters.Add(new SqlParameter("@MATNR", MATNR));
        cmd.Parameters.Add(new SqlParameter("@LTRMI", LTRMI));
        cmd.Parameters.Add(new SqlParameter("@ELIKZ", ELIKZ));
        cmd.Parameters.Add(new SqlParameter("@DFREI", DFREI));
        cmd.Parameters.Add(new SqlParameter("@DNREL", DNREL));
        cmd.Parameters.Add(new SqlParameter("@BEZEI", BEZEI));
        cmd.Parameters.Add(new SqlParameter("@TXT", txt));
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值