Hello experts,
I'm trying to add a delivery document, but I'm getting the Internal Error (-10).
Here is my code:
private string CreateDelivery()
{
SAPbobsCOM.Company oCompany = (SAPbobsCOM.Company)Application["oCompany"];
SAPbobsCOM.Recordset rs = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
SAPbobsCOM.PickLists oPicklist = (SAPbobsCOM.PickLists)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPickLists);
SAPbobsCOM.Documents oDelivery = (SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDeliveryNotes);
SAPbobsCOM.Documents oOrder = (SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders);
SAPbobsCOM.Items oItem = (SAPbobsCOM.Items)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);
if (!oPicklist.GetByKey(Convert.ToInt32(TxNrPicking.Text)))
{
return "Picking não cadastrado";
}
oCompany.StartTransaction();
string sSql = @"select TOP 1 T0.CardCode from
ORDR T0 WITH (NOLOCK) INNER JOIN RDR1 T1 WITH (NOLOCK) ON T1.DocEntry = T0.DocEntry
inner join PKL1 T2 WITH (NOLOCK) on T2.OrderEntry = T1.DocEntry and t2.OrderLine = T1.LineNum
WHERE T2.AbsEntry = {0} and T2.PickEntry = 0";
rs.DoQuery(string.Format(sSql, oPicklist.AbsoluteEntry));
string cardCode = rs.Fields.Item(0).Value;
SAPbobsCOM.BusinessPartners oBP = (SAPbobsCOM.BusinessPartners)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners);
oBP.GetByKey(cardCode);
oDelivery.CardCode = cardCode;
oDelivery.DocDate = DateTime.Now;
oDelivery.DocDueDate = DateTime.Now;
oDelivery.SequenceCode = 35;
for (int i = 0; i < oPicklist.Lines.Count; i++)
{
oPicklist.Lines.SetCurrentLine(i);
if (oOrder.GetByKey(oPicklist.Lines.OrderEntry))
oDelivery.DocCurrency = oOrder.DocCurrency;
sSql = @"SELECT T0.ItemCode, T0.CFOPCode, T0.TaxCode FROM RDR1 T0 WITH (NOLOCK) WHERE T0.DocEntry = {0} and T0.LineNum = {1}";
sSql = String.Format(sSql, oPicklist.Lines.OrderEntry, oPicklist.Lines.OrderRowID);
rs.DoQuery(sSql);
string itemCode = rs.Fields.Item(0).Value.ToString();
string CFOPCode = rs.Fields.Item(1).Value.ToString();
string taxCode = rs.Fields.Item(2).Value.ToString();
oItem.GetByKey(itemCode);
if (oDelivery.Lines.Count > 1) oDelivery.Lines.Add();
oDelivery.Lines.SetCurrentLine(oDelivery.Lines.Count - 1);
//Response.Write("Item: " + itemCode + "<BR>");
//Response.Write("Pedido: " + oPicklist.Lines.OrderEntry + "<BR>");
//Response.Write("Linha: " + oPicklist.Lines.OrderRowID + "<BR>");
oDelivery.Lines.ItemCode = itemCode;
oDelivery.Lines.CFOPCode = CFOPCode;
//oDelivery.Lines.TaxCode = taxCode;
oDelivery.Lines.Quantity = oPicklist.Lines.PickedQuantity;
oDelivery.Lines.BaseEntry = oPicklist.Lines.OrderEntry;
oDelivery.Lines.BaseLine = oPicklist.Lines.OrderRowID;
oDelivery.Lines.BaseType = (int)SAPbobsCOM.BoObjectTypes.oOrders;
if (oItem.ManageBatchNumbers == BoYesNoEnum.tYES)
{
sSql = @"select U_Lote, SUM(U_Qtde) from [@SZ_ETIQUETA] WITH (NOLOCK) where U_NrPicking = {0} and U_ItemCode = '{1}' group by U_Lote";
sSql = String.Format(sSql, TxNrPicking.Text, itemCode);
rs.DoQuery(sSql);
int j = 0;
while (!rs.EoF)
{
if (!String.IsNullOrEmpty(oDelivery.Lines.BatchNumbers.BatchNumber))
{
oDelivery.Lines.BatchNumbers.Add();
}
oDelivery.Lines.BatchNumbers.BatchNumber = rs.Fields.Item(0).Value.ToString();
oDelivery.Lines.BatchNumbers.Quantity = Convert.ToDouble(rs.Fields.Item(1).Value);
rs.MoveNext();
j++;
}
}
else
if (oItem.ManageSerialNumbers == BoYesNoEnum.tYES)
{
sSql = @"select U_NrSerie from [@SZ_ETIQUETA] WITH (NOLOCK) where U_NrPicking = {0} and U_ItemCode = '{1}'";
sSql = String.Format(sSql, TxNrPicking.Text, itemCode);
rs.DoQuery(sSql);
while (!rs.EoF)
{
if (!String.IsNullOrEmpty(oDelivery.Lines.SerialNumbers.InternalSerialNumber))
{
oDelivery.Lines.SerialNumbers.Add();
}
oDelivery.Lines.SerialNumbers.InternalSerialNumber = rs.Fields.Item(0).Value.ToString();
rs.MoveNext();
}
}
}
if (oDelivery.Add() != 0)
{
if (oCompany.InTransaction)
oCompany.EndTransaction(BoWfTransOpt.wf_RollBack);
return "Erro ao criar entrega: " + oCompany.GetLastErrorDescription();
}
string docNum = "";
oCompany.GetNewObjectCode(out docNum);
if (oCompany.InTransaction)
oCompany.EndTransaction(BoWfTransOpt.wf_Commit);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oDelivery);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(rs);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oItem);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oBP);
string sMsg = string.Format("Documento(s) de Entrega {0} gerado com sucesso", docNum);
return sMsg;
}
Any help will be appreciated.
Thanks,
Felipe Hosomi
Request clarification before answering.
I've found the error... actually it was on SerialNumbers. I've changed line #124 to:
oDelivery.Lines.SerialNumbers.SystemSerialNumber = (int)rs.Fields.Item("SysSerial").Value;
oDelivery.Lines.SerialNumbers.ManufacturerSerialNumber = rs.Fields.Item("SuppSerial").Value.ToString();
oDelivery.Lines.SerialNumbers.InternalSerialNumber = rs.Fields.Item("IntrSerial").Value.ToString();
Appreciate your help.
Thanks.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Remove transaction option and try. you change the order of posting with transaction if ok.
With regards,
Venki .A
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 22 | |
| 16 | |
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.