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

本文介绍了一种从SAP系统中读取数据的方法,包括通过C#应用程序定时读取以及网页或webService实时读取的方式。同时提供了具体的代码示例,如使用存储过程进行数据插入。

读取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
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值