调用DI 从SaleOrder 生成Invoices, 部分物料报No matching records found (ODBC -2028 )的错误
如果从SBO GUI 上,手动生成的话,没有错误;
调DI 就会有错误,但也不是所有订单行都有错误, 未发现规律
部分关键调用代码是:
SAPbobsCOM.Documents document = (SAPbobsCOM.Documents)DICompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices); document.CardCode = ((SAPbouiCOM.EditText)m_SboForm.Items.Item("ECardCode").Specific).Value; document.DocDate = DateTime.Now; document.TaxDate = DateTime.Now; document.DocDueDate = DateTime.ParseExact(((SAPbouiCOM.EditText)m_SboForm.Items.Item("EDocDueD").Specific).Value, "yyyyMMdd", null); SAPbobsCOM.Documents saleorder = (SAPbobsCOM.Documents)DICompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders); saleorder.GetByKey(int.Parse(DocEntry)); bool IsFirstSelect = true; for (int i = 0; i <= OrdrTable.Rows.Count - 1; i++) { saleorder.Lines.SetCurrentLine(i); if (!IsFirstSelect) document.Lines.Add(); document.Lines.ItemCode = OrdrTable.GetValue("ItemCode", i).ToString().Trim(); document.Lines.Quantity = double.Parse(OrdrTable.GetValue("Qty", i).ToString().Trim()); document.Lines.Price = Math.Round(saleorder.Lines.Price, 2, MidpointRounding.AwayFromZero); document.Lines.DiscountPercent = saleorder.Lines.DiscountPercent; document.Lines.PriceAfterVAT = Math.Round(saleorder.Lines.PriceAfterVAT,2, MidpointRounding.AwayFromZero); document.Lines.VatGroup = saleorder.Lines.VatGroup; document.Lines.WarehouseCode = OrdrTable.GetValue("WhsCode", i).ToString().Trim(); document.Lines.BaseType = 17; document.Lines.BaseEntry = saleorder.DocEntry; document.Lines.BaseLine = saleorder.Lines.LineNum; document.Lines.Currency = saleorder.Lines.Currency; doctotal = doctotal + double.Parse(OrdrTable.GetValue("LineTotal", i).ToString().Trim()); IsFirstSelect = false; } document.DocTotal = Math.Round(doctotal, 2, MidpointRounding.AwayFromZero); ; document.SalesPersonCode = saleorder.SalesPersonCode; int lRetCode = document.Add(); if (lRetCode != 0) { int temp_int = 0; string temp_string = ""; DICompany.GetLastError(out temp_int, out temp_string); SetStatusBarMessageFrame("u751Fu6210u5E94u6536u53D1u7968u5931u8D25uFF1A" + temp_string, SAPbouiCOM.BoMessageTime.bmt_Short, true); BubbleEvent = false; return; } else { SetStatusBarMessageFrame("u751Fu6210u5E94u6536u53D1u7968u6210u529FuFF1A", SAPbouiCOM.BoMessageTime.bmt_Short, false); }