private string LoadOneObject(String obj) { try { this.SapSysName = cboxSystemList1.Text; if (String.IsNullOrEmpty(SapSysName)) { MessageBox.Show("请选择系统"); return(string.Empty); } else { this.AbapCode = new SAPINT.Utils.ABAPCode(SapSysName); var codes = AbapCode.GetSourceCode(obj); var sb = new StringBuilder(); codes.ForEach(x => sb.AppendLine(x)); var s = sb.ToString(); // this.syntaxBoxControl1.Document.Text = s; return(s); } } catch (Exception ex) { MessageBox.Show(ex.Message); } return(string.Empty); }
private bool LoadObjectFromSap(BackgroundWorker bw, bool Saved = true) { List <Code> list = new List <Code>(); Dictionary <int, Code> pos = new Dictionary <int, Code>(); this.AbapCode = new SAPINT.Utils.ABAPCode(SapSysName); var itemCount = 0; var processed = 0; var m_isCacelling = false; foreach (DataRow item in dt.Rows) { if (this.backgroundWorker1.CancellationPending) { m_isCacelling = true; } if (String.IsNullOrWhiteSpace(item["Select"].ToString())) { continue; } var isSelect = (bool)item["Select"]; if (isSelect) { var obj = item["NAME"].ToString(); if (String.IsNullOrEmpty(obj)) { continue; } var codes = AbapCode.GetSourceCode(obj); var sb = new StringBuilder(); codes.ForEach(x => sb.AppendLine(x)); item["Lines"] = codes.Count; var abapCode = sb.ToString(); item["Length"] = Util.FileUtil.FormatFileSize(abapCode.Length); item["Header"] = abapCode; if (String.IsNullOrEmpty(abapCode)) { continue; } var comments = new StringBuilder(); foreach (var comment in codes) { if (comment.StartsWith("*")) { comments.AppendLine(comment); } if (comments.ToString().ToList().Count > 10) { break; } } Code code = new Code(); code.Content = abapCode; code.Desc = comments.ToString(); code.Title = obj; if (!String.IsNullOrEmpty(this.TreeId)) { code.TreeId = TreeId; } list.Add(code); var index = int.Parse(item["Index"].ToString()); pos.Add(index, code); var pTime = new System.TimeSpan(pauseTime); Thread.Sleep(pTime);//必须暂停,因为在SAP系统中读取程序不会那么快。 //每100行保存一次 itemCount++; if (itemCount == 100 && dt.Rows.Count >= 100 && m_isCacelling == false) { if (true == Saved) { this.cbxDbSources.Enabled = false; db.SaveCodeList(list); this.cbxDbSources.Enabled = true; } foreach (var positem in pos) { dt.Rows[positem.Key]["CodeId"] = positem.Value.Id; dt.Rows[positem.Key]["Select"] = false; } pos.Clear(); list.Clear(); itemCount = 0; } else { if (true == Saved) { this.cbxDbSources.Enabled = false; db.SaveCodeList(list); this.cbxDbSources.Enabled = true; } foreach (var positem in pos) { dt.Rows[positem.Key]["CodeId"] = positem.Value.Id; dt.Rows[positem.Key]["Select"] = false; } pos.Clear(); list.Clear(); itemCount = 0; } processed++; ImportMessage m = new ImportMessage() { current = processed, total = selectedItems, progName = obj }; bw.ReportProgress(processed, m); //如果要取消,保存后退出. if (m_isCacelling == true) { break; } } } return(true); //if (db.SaveCodeList(list)) //{ // foreach (var item in pos) // { // dt.Rows[item.Key]["CodeId"] = item.Value.Id; // } // return true; //} //else //{ // return false; //} }