Невозможно добавить строку без полного выбора партий / серийных номеров

ОШИБКА: (-4014) Невозможно добавить строку без полного выбора номеров партий / серийных номеров.

Функция по умолчанию DI API SaveDraftToDocument() отлично работает с базой данных MS SQL, но не с SAP HANA.

Я отправляю документ о доставке с серийными номерами.

SAPbobsCOM.Documents oDrafts;
oDrafts = (SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDrafts);
oDrafts.GetByKey(Convert.ToInt32(EditText27.Value));
var count = oDrafts.Lines.Count;
var linenum = oDrafts.Lines.LineNum;
//Validation
#region
var RsRecordCount = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
var sQryRecordCount = String.Format("Select * from \"SANTEXDBADDON\".\"@TEMPITEMDETAILS\" where \"U_DraftNo\" = '{0}'", EditText27.Value);
RsRecordCount.DoQuery(sQryRecordCount);
#endregion

if (count == RsRecordCount.RecordCount)
{
    //LINES
    string ItemCode = "", WhsCode = ""; double Quantity = 0; int index = 0;
    for (int i = 0; i < oDrafts.Lines.Count; i++)
    {
        oDrafts.Lines.SetCurrentLine(index);
        ItemCode = oDrafts.Lines.ItemCode;
        //SERIAL NUMBERS
        var RsSerial = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
        string table = "\"@TEMPSERIALS\"";
        var sQrySerial = String.Format(
            "Select \"U_ItemCode\" , \"U_DistNumber\" from \"SANTEXDBADDON\".\"@TEMPSERIALS\" where " +
            "\"U_DraftNo\" = '{0}' and \"U_ItemCode\" = '{1}'", EditText27.Value, ItemCode);
            RsSerial.DoQuery(sQrySerial);
        int serialindex = 1, lineindex = 0;
        #region
        if (RsSerial.RecordCount > 0)
        {
            while (!RsSerial.EoF)
            {
                //OSRN SERIALS
                var RsSerialOSRN = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
                var sQrySerialOSRN = String.Format(
                    "Select * from OSRN where \"DistNumber\" = '{0}' and \"ItemCode\" = '{1}'"
                    , RsSerial.Fields.Item("U_DistNumber").Value.ToString(), ItemCode);
                RsSerialOSRN.DoQuery(sQrySerialOSRN);

                oDrafts.Lines.SerialNumbers.SetCurrentLine(0);

                oDrafts.Lines.SerialNumbers.BaseLineNumber = oDrafts.Lines.LineNum;

                oDrafts.Lines.SerialNumbers.SystemSerialNumber =
                    Convert.ToInt32(RsSerialOSRN.Fields.Item("SysNumber").Value.ToString());

                oDrafts.Lines.SerialNumbers.ManufacturerSerialNumber =
                    RsSerialOSRN.Fields.Item("DistNumber").Value.ToString();

                oDrafts.Lines.SerialNumbers.InternalSerialNumber =
                    RsSerialOSRN.Fields.Item("DistNumber").Value.ToString();

                oDrafts.Lines.SerialNumbers.Quantity = 1;
                
                if (RsSerial.RecordCount != serialindex)
                {
                    Application.SBO_Application.StatusBar.SetText("INTERNAL NO  " + oDrafts.Lines.SerialNumbers.InternalSerialNumber, SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                    oDrafts.Lines.SerialNumbers.Add();
                    serialindex++;
                    lineindex++;
                }
                RsSerial.MoveNext();
            }
        }
        #endregion
        index++;
    }
    var status = oDrafts.SaveDraftToDocument();

    if (status == 0)
    {
        oDrafts.Remove();
        Application.SBO_Application.StatusBar.SetText("Delivery Posted Successfully !", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
    }
    else
    {
        int code = 0; string message = "";
        oCompany.GetLastError(out code, out message);
        Application.SBO_Application.SetStatusBarMessage(message, SAPbouiCOM.BoMessageTime.bmt_Medium, true);
    }
}`

1 ответ

Решение

Опубликованная вами ошибка объясняет проблему. Вы пытаетесь доставить продукты, но не указали все серийные номера / номера партий.

Я не думаю, что информации достаточно, чтобы быть уверенным в том, где возникает эта проблема, но вот несколько советов:

Вы читаете серийные номера из специальной таблицы. Верны ли значения, которые вы читаете? Например, мог ли другой пользователь добавить их в другом порядке? Могут ли значения быть для другого продукта?

Вы указываете правильное количество серийных номеров? Возможно ли, что количество товара в строке больше, чем количество добавляемых серийных номеров?

Верьте сообщению об ошибке, пока не докажете, что оно неверно. Не похоже, что это проблема HANA (мы широко используем HANA), это логическая проблема с данными, которые вы предоставляете.

Вы можете захотеть собрать больше отладочной информации, чтобы помочь вам, если вы не можете легко определить, в чем проблема.

Другие вопросы по тегам