开心

sap 抽数据

using System;
using System.Data;
using System.Windows.Forms;
using SAP.Middleware.Connector;


namespace Thinkape
{
    public partial class HXSAP : Form
    {
        public HXSAP()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            NewMethod1();

        }

        /// <summary>
        /// 获取sap的数据
        /// </summary>
        private void NewMethod1()
        {
            RfcDestination dest;
            RfcRepository rfcrep;
            NewMethod(out dest, out rfcrep);

            IRfcFunction myfun = null;
            //获取sap的数据
            myfun = rfcrep.CreateFunction("ZFK_WERKS_TRAN");//凭证函数

            myfun.Invoke(dest);
            //ITAB    sap系统表名
            IRfcTable retb = myfun.GetTable("ITAB");
            string INBILLNO = "";
            string INBILLNO2 = "";
           




            prog.Maximum = retb.RowCount * 2;
            prog.Value = 0;
            textBox1.Text = "";
            if (retb.RowCount == 0)
            {
                textBox1.Text = "暂时没有数据!无需导入...";
            }
            else
            {
                for (int i = 0; i < retb.RowCount; i++)
                {
                    retb.CurrentIndex = i;
                  
                    //失败的二次发送
                      string zbudn=  retb.CurrentRow.GetValue("ZBUDN").ToString ();
                      string ZITEM_NO = retb.CurrentRow.GetValue("ZITEM_NO").ToString();
                      //根据ZITEM_NO,ZBUDN 判断,ZITEM_NO(项目)+ZBUDN(门店预算号),这个组合才是唯一的

                      string str_con = " select m.BillNo  from sap_detail d left join sap_main m on d.billid=m.billid  where d.ZBUDN='" + zbudn + "' and d.ZITEM_NO='" + ZITEM_NO + "'  and   Isdiscard is   null ";
                      DataSet resultSecond = SapVoucher.SAPinsert.GetDataSet(str_con);
                      if (resultSecond.Tables[0].Rows.Count > 0)
                      {
                        string   BillNO = resultSecond.Tables[0].Rows[0][0].ToString();
                          INBILLNO += "'" + BillNO + "',";
                      }
                      else
                      {
                          string BillNO = GetBillNO();
                          INBILLNO += "'" + BillNO + "',";
                          INBILLNO2 += "" + BillNO + ",";
                          string sql = string.Format(@"INSERT  INTO sapmain( BillID,billno,billdate,MANDT,ZBUDN,ZITEM_NO,WERKS,ZDATE,ZDEPT,ZFKACC,ZNETPR,
                      ZJG,ZQTY,ZSTS_TR,ZERNAM,ZERDAT,ZERTIM,ZERPRG,ZUPNAM,ZUPDAT,ZUPTIM,ZUPPRG,CurrentProgramID,Create_Date,HsCompanyID)
                      VALUES((SELECT CAST(ISNULL( MAX(BillID),0) AS INT)+1 FROM sapmain),'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}',132102,'" + DateTime.Now + "',(SELECT HsCompanyID FROM  sys_dept WHERE cDepCode='{21}'))",
                         BillNO, retb.CurrentRow.GetValue("ZBUDAT"), retb.CurrentRow.GetValue("MANDT"), retb.CurrentRow.GetValue("ZBUDN"), retb.CurrentRow.GetValue("ZITEM_NO"),
                         retb.CurrentRow.GetValue("WERKS"), retb.CurrentRow.GetValue("ZBUDAT"), retb.CurrentRow.GetValue("ZDEPT"),
                         retb.CurrentRow.GetValue("ZFKACC"), retb.CurrentRow.GetValue("ZSTAJG"),
                         retb.CurrentRow.GetValue("ZJG"), retb.CurrentRow.GetValue("ZQTY"), retb.CurrentRow.GetValue("ZSTS_TR"),
                         retb.CurrentRow.GetValue("ZERNAM"), retb.CurrentRow.GetValue("ZERDAT"), retb.CurrentRow.GetValue("ZERTIM"),
                         retb.CurrentRow.GetValue("ZERPRG"), retb.CurrentRow.GetValue("ZUPNAM"), retb.CurrentRow.GetValue("ZUPDAT"),
                         retb.CurrentRow.GetValue("ZUPTIM"), retb.CurrentRow.GetValue("ZUPPRG"), retb.CurrentRow.GetValue("ZDEPT"));
                          //新增字表数据
                          string sqlZB = string.Format("INSERT INTO sapdetail(BillID,BillMoney,DeptID,CostTypeID,ZJG,ZBUDN,ZITEM_NO,ZERDAT,FyType,ZDEPT,ZFKACC,WERKS) VALUES((SELECT CAST(ISNULL( MAX(BillID),0) AS INT)+1 FROM sapmain),'{0}',(SELECT iDepID FROM dbo.Sys_Dept  WHERE cDepCode='{1}'),(select CostID from EB_CostType where CostCode ='{2}'),{3},'{4}','{5}','{6}','公司承担','{7}','{8}','{9}');", retb.CurrentRow.GetValue("ZJG"), retb.CurrentRow.GetValue("ZDEPT"), retb.CurrentRow.GetValue("ZFKACC"), retb.CurrentRow.GetValue("ZSTAJG"), retb.CurrentRow.GetValue("ZBUDN"), retb.CurrentRow.GetValue("ZITEM_NO"), retb.CurrentRow.GetValue("ZERDAT"), retb.CurrentRow.GetValue("ZDEPT"), retb.CurrentRow.GetValue("ZFKACC"), retb.CurrentRow.GetValue("WERKS"));

                          SapVoucher.SAPinsert.InsertSAP(sqlZB);
                          string msg = SapVoucher.SAPinsert.InsertSAP(sql);
                      
                      
                      }


                    
                
                 
                }


                //合并单据
                //string hbsql = string.Format("EXEC HX_SAPHB @billNO='{0}'", INBILLNO2);
                //DataSet s = SapVoucher.SAPinsert.GetDataSet(hbsql);
               // string sqlll = s.Tables[0].Rows[0][0].ToString();
                //DataSet sss = SapVoucher.SAPinsert.GetDataSet(sqlll);


                //提交单据
                INBILLNO = INBILLNO.Substring(0, INBILLNO.Length - 1);
                string INBILLNOsql = string.Format("SELECT BillID,* FROM sap_main WHERE BillNo IN({0})", INBILLNO);
                DataSet datads = SapVoucher.SAPinsert.GetDataSet(INBILLNOsql);
                double  f = 0;

                foreach (DataRow  a in datads.Tables[0].Rows )
                {
                    string tempsql = string.Format(" select billmoney from sap_detail where billid='{0}'", a[0]);
                    DataSet tempdatads = SapVoucher.SAPinsert.GetDataSet(tempsql);
                    foreach (DataRow b in tempdatads.Tables[0].Rows)
                    {
                        f += Convert.ToDouble(b[0]);
                        
                    
                    }
                    string updatesql = string.Format(" update  sap_main set ZJG='{1}' where billid='{0}'", a[0],f);
                    SapVoucher.SAPinsert.GetCount(updatesql);
                    f = 0;


                }



                foreach (DataRow dr in datads.Tables[0].Rows)
                {
                     
                    ///未审核单据才提交扣减
                    string str_status = "select flowstatus from sap_Main where billNO= '" + dr["billNO"]+"'";
                    DataSet ds_status = SapVoucher.SAPinsert.GetDataSet(str_status);
                    if (ds_status.Tables[0].Rows[0][0].ToString() == "0" || ds_status.Tables[0].Rows[0][0].ToString() == "")
                   {
                        #region 提交单据
                        //提交单据
                        string procsql = string.Format(@"declare @result varchar(8000);
                                         exec Sys_WFSubmit @ProgramID = 132102,@PrimaryKey ={0},
                                         @BillNo = '{1}',@Uid = 7,@AppOpinion = '',
                                         @AppTerminal = 'PC',@FlowCode = 'submit',@SimSubmit = 0,@result = @result output; select @result as result; ", dr["BillID"].ToString(), dr["BillNo"].ToString());
                        DataSet result = SapVoucher.SAPinsert.GetDataSet(procsql);
                        //预算是否充足
                        string str_param = "select m.BillNo,d.zdept,d.zfkacc,year(d.zerdat) as zerdat,c.CostName,de.cDepName from " + " sap_detail d left join sap_main m on  d.billid=m.billid  " +
" left join Sys_Dept de on de.cDepCode=d.zdept  left join  EB_CostType c on c.CostCode=d.zfkacc " +
                            "  where  m.BillNo='" + dr["BillNo"].ToString() + "'";
                        DataSet ds_param = SapVoucher.SAPinsert.GetDataSet(str_param);

                        //预算扣减
                        string year = ds_param.Tables[0].Rows[0][3].ToString();
                        string cdepcode = ds_param.Tables[0].Rows[0][1].ToString(), costcode = ds_param.Tables[0].Rows[0][2].ToString();
                        string CostName = ds_param.Tables[0].Rows[0][4].ToString(), cDepName = ds_param.Tables[0].Rows[0][5].ToString();
                        if (result.Tables[0].Rows[0][0].ToString() == "ok")
                        {

                            textBox1.Text += dr["BillNo"].ToString() + "扣减预算成功!";
                            textBox1.Text += "\r\n\r\n";



                            string con_AdequacyOfBudget = "select sum(ISNULL(budmoney,0)-ISNULL(usedmoney,0)) as " + "money  from (select b.*,(SELECT  CostCode FROM  dbo.EB_CostType WHERE EB_CostType.CostID=b.CostID) AS  " + " CostCode  from BudPlan b left join Sys_dept s on b.deptid=s.idepId where s.cDepCode='" + cdepcode + "') total " + " where total. CostCode='" + costcode + "'  and year(begindate) ='" + year + "' group by year(begindate)";
                            DataSet ds_AdequacyOfBudget = SapVoucher.SAPinsert.GetDataSet(con_AdequacyOfBudget);
                            try
                            {

                                if (Convert.ToDouble(ds_AdequacyOfBudget.Tables[0].Rows[0][0].ToString().Trim()) > 0)
                                {
                                    //修改单据状态
                                    string SQL2 = string.Format("UPDATE sap_main SET ZRETN='{0}',ZSTS_BU='Y',FlowStatus='3' WHERE billno='{1}'", dr["BillNo"].ToString(), dr["BillNo"].ToString());
                                    SapVoucher.SAPinsert.GetCount(SQL2);
                                }
                                else
                                {

                                    string SQL2 = string.Format("UPDATE sap_main SET ZRETN='{0}',ZSTS_BU='N',FlowStatus='3' WHERE billno='{1}'", dr["BillNo"].ToString(), dr["BillNo"].ToString());
                                    SapVoucher.SAPinsert.GetCount(SQL2);


                                }
                            }
                            catch
                            {
                                string SQL2 = string.Format("UPDATE sap_main SET ZRETN='{0}',ZSTS_BU='N',FlowStatus='3' WHERE billno='{1}'", dr["BillNo"].ToString(), dr["BillNo"].ToString());
                                SapVoucher.SAPinsert.GetCount(SQL2);

                            }


                        }
                        else
                        {
                            textBox1.Text += dr["BillNo"].ToString() + "扣减预算失败!";
                            textBox1.Text += "\r\n\r\n";

                            //修改当前数据的状态result.Tables[0].Rows[0][0].ToString()
                            string str_dept = "select cDepName,* from Sys_Dept where cDepCode='" + cdepcode + "'";
                            string str_class = "";
                          //  string SQL2 = string.Format("UPDATE sap_main SET ZREASON='{0}',ZRETN='{2}' WHERE billno='{1}'", "" + cDepName + "(部门)" + CostName + "(科目)为预算受控项,请先导入预算 ", dr["BillNo"].ToString(), dr["BillNo"].ToString());
                            //result
                            string reson = result.Tables[0].Rows[0][0].ToString();
                            reson = ReplaceHtmlTag(reson);
                           // string temp = reson.Substring(reson.IndexOf('<')+1, reson.IndexOf('<') - reson.IndexOf('<'));
                          //  reson += "为预算受控项,请先导入预算";
                            string SQL2 = string.Format("UPDATE sap_main SET ZREASON='{0}',ZRETN='{2}',FlowStatus='3' WHERE billno='{1}'", "", dr["BillNo"].ToString(), dr["BillNo"].ToString());
                            SapVoucher.SAPinsert.GetCount(SQL2);

                            prog.Value = prog.Value + 1;
                        }
                        #endregion
                    }
                       

                }

               





                if (INBILLNO.Length > 0)
                {
                    //查询费控单据

                    string INBILLNOsql1 = string.Format("SELECT * FROM sap_main WHERE BillNo IN({0})", INBILLNO);
                    DataSet datads1 = SapVoucher.SAPinsert.GetDataSet(INBILLNOsql1);
                    IRfcFunction myfu = null;
                    myfu = rfcrep.CreateFunction("ZFK_WERKS_CAL");//凭证函数
                    IRfcTable Itb_Money = myfu.GetTable("ITAB");
                    int ii = 0;
                    foreach (DataRow dr in datads1.Tables[0].Rows)
                    {
                        
                        string sql11 = "SELECT * FROM  sap_detail WHERE  BillID=" + dr["BillID"].ToString();
                        DataSet ds = SapVoucher.SAPinsert.GetDataSet(sql11);
                        

                        foreach (DataRow ds1 in ds.Tables[0].Rows)
                        {

                            string str_Dimentions = "select count(*) from BudSolutionMap b left join  Sys_dept s on b.deptid =s.iDepID left join  EB_CostType e on e.CostID=b.CostID where s.cDepCode='" + ds1["ZDEPT"].ToString() + "' and e.CostCode='" + ds1["ZFKACC"].ToString() + "'";
                            DataSet ds_Dimentions = SapVoucher.SAPinsert.GetDataSet(str_Dimentions);

                            string con_AdequacyOfBudget = "select sum(ISNULL(budmoney,0)-ISNULL(usedmoney,0)) as " + "money  from (select b.*,(SELECT  CostCode FROM  dbo.EB_CostType WHERE EB_CostType.CostID=b.CostID) AS  " + " CostCode  from BudPlan b left join Sys_dept s on b.deptid=s.idepId where s.cDepCode='" + ds1["ZDEPT"].ToString() + "') total " + " where total. CostCode='" + ds1["ZFKACC"].ToString() + "'  and year(begindate) ='" + Convert.ToDateTime(ds1["ZERDAT"].ToString()).Year + "' group by year(begindate)";
                            DataSet ds_AdequacyOfBudget = SapVoucher.SAPinsert.GetDataSet(con_AdequacyOfBudget);
                            double Budget = -9.9;
                            double tag=0;
                            double tag1 = 0;
                            try
                            {
                            Budget=Convert.ToDouble(ds_AdequacyOfBudget.Tables[0].Rows[0][0].ToString().Trim()) ;
                            }catch
                            {
                                    tag=1;
                            }


                            
                            if (Convert.ToInt32(ds_Dimentions.Tables[0].Rows[0][0].ToString()) > 0)
                            {

                                if (tag == 1)
                                {
                                    string SQL2 = string.Format("UPDATE sap_detail SET ZSTS_BU='N' WHERE BillDetailID='{0}'", ds1["BillDetailID"]);
                                    SapVoucher.SAPinsert.GetCount(SQL2);
                                    tag1 = 1;

                                }

                                else
                                {

                                    if (Budget > 0)
                                    {
                                        string SQL2 = string.Format("UPDATE sap_detail SET ZSTS_BU='Y' WHERE BillDetailID='{0}'", ds1["BillDetailID"]);
                                        SapVoucher.SAPinsert.GetCount(SQL2);
                                        tag1 = 3;
                                    
                                    
                                    
                                    }
                                    else {

                                        string SQL2 = string.Format("UPDATE sap_detail SET ZSTS_BU='N' WHERE BillDetailID='{0}'", ds1["BillDetailID"]);
                                        SapVoucher.SAPinsert.GetCount(SQL2);
                                        tag1 = 3;
                                    
                                    }
                                   
                                
                                }


                            }
                            else {


                                if (tag == 1)
                                {
                                    string SQL2 = string.Format("UPDATE sap_detail SET  ZSTS_BU='', ZREASON='预算维度和预算数据 不存在' WHERE BillDetailID='{0}'", ds1["BillDetailID"]);
                                    SapVoucher.SAPinsert.GetCount(SQL2);
                                    tag1 = 2;



                                }
                                else
                                {

                                    if (Budget > 0)
                                    {
                                        string SQL2 = string.Format("UPDATE sap_detail SET ZSTS_BU='Y' WHERE BillDetailID='{0}'", ds1["BillDetailID"]);
                                        SapVoucher.SAPinsert.GetCount(SQL2);
                                        tag1 = 3;



                                    }
                                    else
                                    {

                                        string SQL2 = string.Format("UPDATE sap_detail SET ZSTS_BU='N' WHERE BillDetailID='{0}'", ds1["BillDetailID"]);
                                        SapVoucher.SAPinsert.GetCount(SQL2);
                                        tag1 = 3;

                                    }
                                
                                }

                            
                            
                            }
                            string sql11temp = "SELECT * FROM  sap_detail WHERE  BillDetailID=" + ds1["BillDetailID"];
                            DataSet dstemp = SapVoucher.SAPinsert.GetDataSet(sql11temp);
                            ii++;
                            Itb_Money.Insert();
                            if (Convert.ToInt32(ds.Tables[0].Rows.Count) > 1)
                            {

                                Itb_Money.CurrentRow.SetValue("ZDEPT", ds1["ZDEPT"].ToString());
                                Itb_Money.CurrentRow.SetValue("ZFKACC", ds1["ZFKACC"].ToString());
                                Itb_Money.CurrentRow.SetValue("ZBUDN", ds1["ZBUDN"].ToString());
                                Itb_Money.CurrentRow.SetValue("ZITEM_NO", ds1["ZITEM_NO"].ToString());
                            }
                            else
                            {
                                Itb_Money.CurrentRow.SetValue("ZDEPT", dr["ZDEPT"].ToString());
                                Itb_Money.CurrentRow.SetValue("ZFKACC", dr["ZFKACC"].ToString());
                                Itb_Money.CurrentRow.SetValue("ZBUDN", dr["ZBUDN"].ToString());
                                Itb_Money.CurrentRow.SetValue("ZITEM_NO", dr["ZITEM_NO"].ToString());
                            }

                            Itb_Money.CurrentRow.SetValue("WERKS", ds1["WERKS"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZBUDAT", dr["ZDATE"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZSTAJG", dr["ZNETPR"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZJG", dr["ZJG"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZQTY", dr["ZQTY"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZSTS_TR", dr["ZSTS_TR"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZRETN", dr["ZRETN"].ToString());
                             if (tag1 == 2)
                            {

                                string SQLdept = string.Format("  select * from Sys_dept where cDepCode=  (select zdept from sap_detail  WHERE BillDetailID='{0}')", ds1["BillDetailID"]);
                                int dept_count = SapVoucher.SAPinsert.GetDataSet(SQLdept).Tables [0].Rows .Count ;
                                if (dept_count > 0)
                                {
                                    Itb_Money.CurrentRow.SetValue("ZSTS_BU", "");
                                    Itb_Money.CurrentRow.SetValue("ZREASON", "预算维度和预算数据 不存在");

                                }
                                else
                                {
                                    Itb_Money.CurrentRow.SetValue("ZSTS_BU", "");
                                    Itb_Money.CurrentRow.SetValue("ZREASON", "找不到此部门");

                                    Itb_Money.CurrentRow.SetValue("ZRETN", "");

                                    string SQLdiscard = string.Format(" update sap_main set isdiscard='1' where billid=(  select BillID from sap_detail    WHERE BillDetailID='{0}')", ds1["BillDetailID"]);
                                    int discard_count = SapVoucher.SAPinsert.GetCount (SQLdiscard);


                                }
                                string SQLcost = string.Format(" select * from EB_CostType where CostCode=  (select zfkacc from sap_detail  WHERE BillDetailID='{0}')", ds1["BillDetailID"]);
                                int cost_count = SapVoucher.SAPinsert.GetCount(SQLcost);
                                if (cost_count > 0)
                                {
                                    Itb_Money.CurrentRow.SetValue("ZSTS_BU", "");
                                    Itb_Money.CurrentRow.SetValue("ZREASON", "预算维度和预算数据 不存在");

                                }
                                else
                                {
                                    Itb_Money.CurrentRow.SetValue("ZSTS_BU", "");
                                    Itb_Money.CurrentRow.SetValue("ZREASON", "找不到此科目");
                                    Itb_Money.CurrentRow.SetValue("ZRETN", "");
                                    string SQLdiscard = string.Format(" update sap_main set isdiscard='1' where billid=(  select BillID from sap_detail    WHERE BillDetailID='{0}')", ds1["BillDetailID"]);
                                    int discard_count = SapVoucher.SAPinsert.GetCount(SQLdiscard);

                                }
                              
                            }
                            else
                            {
                               



                                   string SQLdept = string.Format("  select * from Sys_dept where cDepCode=  (select zdept from sap_detail  WHERE BillDetailID='{0}')", ds1["BillDetailID"]);
                                   int dept_count = SapVoucher.SAPinsert.GetDataSet(SQLdept).Tables[0].Rows.Count; ;
                                 if(dept_count>0)
                                 {
                                       Itb_Money.CurrentRow.SetValue("ZSTS_BU", dstemp.Tables [0].Rows[0]["ZSTS_BU"].ToString());
                                Itb_Money.CurrentRow.SetValue("ZREASON", dstemp.Tables [0].Rows [0]["ZREASON"].ToString());
                                 
                                 }
                                 else
                                 {
                                       Itb_Money.CurrentRow.SetValue("ZSTS_BU", "");
                                Itb_Money.CurrentRow.SetValue("ZREASON", "找不到此部门");
                                Itb_Money.CurrentRow.SetValue("ZRETN", "");

                                string SQLdiscard = string.Format(" update sap_main set isdiscard='1' where billid=(  select BillID from sap_detail    WHERE BillDetailID='{0}')", ds1["BillDetailID"]);
                                 int discard_count = SapVoucher.SAPinsert.GetCount(SQLdiscard);
                                
                              
                                 }
                                 string SQLcost = string.Format(" select * from EB_CostType where CostCode=  (select zfkacc from sap_detail  WHERE BillDetailID='{0}')", ds1["BillDetailID"]);
                                 int cost_count = SapVoucher.SAPinsert.GetDataSet(SQLcost).Tables[0].Rows.Count; ;
                                 if (cost_count > 0)
                                 {
                                       Itb_Money.CurrentRow.SetValue("ZSTS_BU", dstemp.Tables [0].Rows[0]["ZSTS_BU"].ToString());
                                Itb_Money.CurrentRow.SetValue("ZREASON", dstemp.Tables [0].Rows [0]["ZREASON"].ToString());
                                 
                                 }
                                 else
                                 {
                                       Itb_Money.CurrentRow.SetValue("ZSTS_BU", "");
                                Itb_Money.CurrentRow.SetValue("ZREASON", "找不到此科目");
                                Itb_Money.CurrentRow.SetValue("ZRETN", "");
                                string SQLdiscard = string.Format(" update sap_main set isdiscard='1' where billid=(  select BillID from sap_detail    WHERE BillDetailID='{0}')", ds1["BillDetailID"]);
                                int discard_count = SapVoucher.SAPinsert.GetCount(SQLdiscard);
                              
                                 }

                            }
                          
                            Itb_Money.CurrentRow.SetValue("ZERNAM", dr["ZERNAM"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZERDAT", dr["ZERDAT"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZERTIM", dr["ZERTIM"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZERPRG", dr["ZERPRG"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZUPNAM", dr["ZUPNAM"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZUPDAT", dr["ZUPDAT"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZUPTIM", dr["ZUPTIM"].ToString());
                            Itb_Money.CurrentRow.SetValue("ZUPPRG", dr["ZUPPRG"].ToString());

                            textBox1.Text += dr["ZRETN"].ToString() + "操作成功!";
                            textBox1.Text += "\r\n\r\n";
                        }

                    }

                   myfu.Invoke(dest);//提交
                    prog.Value = prog.Maximum;
                    MessageBox.Show("一共返回" + ii + "条数据!");
                   SapVoucher.SAPinsert.GetCount("  exec Bud_RefreshAct ");
                  
                   NewMethod2();

                }

            }
        }


        public static string ReplaceHtmlTag(string html, int length = 0)
        {
            string strText = System.Text.RegularExpressions.Regex.Replace(html, "<[^>]+>", "");
            strText = System.Text.RegularExpressions.Regex.Replace(strText, "&[^;]+;", "");

            if (length > 0 && strText.Length > length)
                return strText.Substring(0, length);

            return strText;
        }
        /// <summary>
        /// 链接SAP的配置
        /// </summary>
        /// <param name="dest"></param>
        /// <param name="rfcrep"></param>
        private static void NewMethod(out RfcDestination dest, out RfcRepository rfcrep)
        {
            RfcConfigParameters rfcPar = new RfcConfigParameters();
            rfcPar.Add(RfcConfigParameters.Name, "Conn");
            rfcPar.Add(RfcConfigParameters.AppServerHost, "192.168.2.195");
            rfcPar.Add(RfcConfigParameters.Client, "800");
            rfcPar.Add(RfcConfigParameters.User, "THINKAPEUSER");
            rfcPar.Add(RfcConfigParameters.Password, "Th123456");
            rfcPar.Add(RfcConfigParameters.SystemNumber, "00");
            rfcPar.Add(RfcConfigParameters.Language, "zh");


            dest = RfcDestinationManager.GetDestination(rfcPar);
            rfcrep = dest.Repository;
        }

        /// <summary>
        /// 生成流水号
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public static string GetBillNO()
        {
            string result = string.Empty;
            string prefix = "WFL";

            string date = DateTime.Now.ToString("yyyyMMdd");
            string sql = string.Format("SELECT TOP 1 BillNo FROM  dbo.sapMain WHERE BillNo LIKE '%{0}%' and ISNULL(IsDiscard,0)!=1 ORDER BY BillID DESC", date);
            DataSet datads = SapVoucher.SAPinsert.GetDataSet(sql);
            if (datads.Tables[0].Rows.Count > 0)
            {
                string billno = datads.Tables[0].Rows[0][0].ToString();
                billno = billno.Substring(3, billno.Length - 3);
                result = prefix + (Convert.ToInt64(billno) + 1).ToString();

            }
            else
            {
                result = prefix + date + "0001";
            }
            return result;


        }

        private void button2_Click(object sender, EventArgs e)
        {
            RfcDestination dest;
            RfcRepository rfcrep;
            NewMethod(out dest, out rfcrep);

            IRfcFunction myfun = null;
            myfun = rfcrep.CreateFunction("ZFK_WERKS_TRAN");//凭证函数
            myfun.Invoke(dest);
            IRfcTable retb = myfun.GetTable("ITAB");    
            prog.Maximum = retb.RowCount;
            prog.Value = 0;
            textBox1.Text = "";
            if (retb.RowCount == 0)
            {
                textBox1.Text = "暂时没有数据!";
            }

            for (int i = 0; i < retb.RowCount; i++)
            {

                retb.CurrentIndex = i;
                prog.Value = Convert.ToInt32(prog.Value) + 1;
                textBox1.Text += retb.CurrentRow.GetValue("ZITEM_NO");
                textBox1.Text += retb.CurrentRow[1];
                textBox1.Text += retb.CurrentRow[2];
                textBox1.Text += retb.CurrentRow[3];
                textBox1.Text += retb.CurrentRow[4];
                textBox1.Text += retb.CurrentRow[5];
                textBox1.Text += retb.CurrentRow[6];
                textBox1.Text += retb.CurrentRow[7];
                textBox1.Text += retb.CurrentRow[8];
                textBox1.Text += retb.CurrentRow[9];
                textBox1.Text += retb.CurrentRow[10];
                textBox1.Text += retb.CurrentRow[11];
                textBox1.Text += retb.CurrentRow[12];
                textBox1.Text += retb.CurrentRow[13];
                textBox1.Text += retb.CurrentRow[14];
                textBox1.Text += retb.CurrentRow[15];
                textBox1.Text += retb.CurrentRow[16];
                textBox1.Text += retb.CurrentRow[17];
                textBox1.Text += retb.CurrentRow[18];
                textBox1.Text += retb.CurrentRow[19];
                textBox1.Text += retb.CurrentRow[20];
                textBox1.Text += retb.CurrentRow[21];
                textBox1.Text += retb.CurrentRow[22];
                textBox1.Text += retb.CurrentRow[23];
                textBox1.Text += retb.CurrentRow[24];
                textBox1.Text += "\r\n\r\n";
            }
            MessageBox.Show("一共" + retb.RowCount + "条数据!");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            this.timer1.Start();
           // NewMethod2();
        }


        /// <summary>
        /// 返回待sap查询的数据!
        /// </summary>
        private void NewMethod2()
        {

            textBox1.Text += "\r\n\r\n";
            textBox1.Text += "单据生成成功,预算扣减完成,正在导入预算数据";
            RfcDestination dest;
            RfcRepository rfcrep;
            NewMethod(out dest, out rfcrep);
            IRfcFunction QUERY = null;
            QUERY = rfcrep.CreateFunction("ZFK_WERKS_QUERY");//凭证函数
            QUERY.Invoke(dest);
            IRfcTable YSQUERY = QUERY.GetTable("ITAB");
            string ZDEPT = "and DeptID in(";//部门
            string ZFKACC = "and CostID in(";//科目

            //string ZDEPT = string.Empty;//部门
            //string ZFKACC = string.Empty;//科目
            string MONTH = string.Empty;
            string YEAR = string.Empty;
            string SQLQUERY = @"SELECT * FROM HX_SAP_Ys WHERE   1=1 and";
            for (int i = 0; i < YSQUERY.RowCount; i++)
            {
                YSQUERY.CurrentIndex = i;
                MONTH += YSQUERY.CurrentRow[18].GetValue() + ",";
                YEAR += YSQUERY.CurrentRow[15].GetValue() + ",";
                ZDEPT += "(SELECT  iDepID FROM dbo.Sys_Dept WHERE cDepCode='" + YSQUERY.CurrentRow.GetValue("ZDEPT") + "'),";
                ZFKACC += "(SELECT  CostID FROM  dbo.EB_CostType WHERE CostCode='" + YSQUERY.CurrentRow.GetValue("ZFKACC") + "'),";

            }
            MONTH = MONTH.Substring(0, MONTH.Length - 1);
            YEAR = YEAR.Substring(0, YEAR.Length - 1);

            ZDEPT = ZDEPT.Substring(0, ZDEPT.Length - 1) + ")";
            ZFKACC = ZFKACC.Substring(0, ZFKACC.Length - 1) + ")";
            //查询预算金额
            SQLQUERY += " MONTH in(" + MONTH + ")" + "and YEAR in(" + YEAR + ") " + ZDEPT + ZFKACC;
            DataSet BudPlands = SapVoucher.SAPinsert.GetDataSet(SQLQUERY);
            IRfcFunction myBudPlan = null;
            myBudPlan = rfcrep.CreateFunction("ZFK_WERKS_FINAL");//凭证函数
            IRfcTable Itb_BudPlan = myBudPlan.GetTable("ITAB");
            prog.Maximum = BudPlands.Tables[0].Rows.Count;
            if (BudPlands.Tables[0].Rows.Count > 0)
            {
                prog.Value = 0;
                foreach (DataRow dr in BudPlands.Tables[0].Rows)
                {
                    string con_AdequacyOfBudget = "select sum(ISNULL(budmoney,0)-ISNULL(usedmoney,0)) as " + "money ,sum(ISNULL(budmoney,0)) as budmoney  from (select b.*,(SELECT  CostCode FROM  dbo.EB_CostType WHERE EB_CostType.CostID=b.CostID) AS  " + " CostCode  from BudPlan b left join Sys_dept s on b.deptid=s.idepId where s.cDepCode='" + dr["cDepCode"].ToString() + "') total " + " where  iLevel='1' and total. CostCode='" + dr["CostCode"].ToString() + "'  and year(begindate) ='" + dr["YEAR"].ToString() + "' group by year(begindate)";
                    DataSet ds_AdequacyOfBudget = SapVoucher.SAPinsert.GetDataSet(con_AdequacyOfBudget);
                    string con_AdequacyOfBudgetM = "select * from (select sum(ISNULL(budmoney,0)-ISNULL(usedmoney,0)) as " + "money ,sum(ISNULL(budmoney,0)) as budmoney , month(begindate) as months from (select b.*,(SELECT  CostCode FROM  dbo.EB_CostType WHERE EB_CostType.CostID=b.CostID) AS  " + " CostCode  from BudPlan b left join Sys_dept s on b.deptid=s.idepId where s.cDepCode='" + dr["cDepCode"].ToString() + "') total " + " where total. CostCode='" + dr["CostCode"].ToString() + "'  and year(begindate) ='" + dr["YEAR"].ToString() + "' group by year(begindate), month(begindate)  ) t where t.months='" + dr["MONTH"].ToString() + "'";
                    DataSet ds_AdequacyOfBudgetM = SapVoucher.SAPinsert.GetDataSet(con_AdequacyOfBudgetM);
                    textBox1.Text += "成功导入" + prog.Value + 1 + "";
                    textBox1.Text += "\r\n\r\n";
                    prog.Value = prog.Value + 1;
                    Itb_BudPlan.Insert();
                    Itb_BudPlan.CurrentRow.SetValue("ZDEPT", dr["cDepCode"].ToString());
                    Itb_BudPlan.CurrentRow.SetValue("ZFKACC", dr["CostCode"].ToString());
                    Itb_BudPlan.CurrentRow.SetValue("ZPRD_Y", dr["YEAR"].ToString());
                    Itb_BudPlan.CurrentRow.SetValue("ZBUJG_Y", ds_AdequacyOfBudget.Tables[0].Rows[0]["budmoney"].ToString());
                    Itb_BudPlan.CurrentRow.SetValue("ZREMJG_Y", ds_AdequacyOfBudget.Tables[0].Rows[0]["money"].ToString());
                    Itb_BudPlan.CurrentRow.SetValue("ZPRD_M", dr["MONTH"].ToString());
                    Itb_BudPlan.CurrentRow.SetValue("ZBUJG_M", dr["BudMoney"].ToString());
                    Itb_BudPlan.CurrentRow.SetValue("ZREMJG_M", ds_AdequacyOfBudgetM.Tables [0].Rows[0]["money"].ToString());
                }

                myBudPlan.Invoke(dest);//提交
            }
            else
            {
                textBox1.Text += "\r\n\r\n";
                textBox1.Text += "无有效预算数据!";
            }
        }



        private void timer1_Tick(object sender, EventArgs e)
        {
            //每晚一点执行
            int h = DateTime.Now.Hour;
            if (h == 1)
            {
                this.timer1.Enabled = false;
            
                  NewMethod1();  NewMethod2();
                this.timer1.Enabled = true;
            }
        }

        private void HXSAP_Load(object sender, EventArgs e)
        {
           
        }
    }
}

 

posted @ 2017-04-15 23:06  大喜  阅读(521)  评论(0编辑  收藏  举报
坦然 会增进信任 - 信任 感情才会升华