ODBC-2028 Ошибка SAP B1 - PullRequest
       9

ODBC-2028 Ошибка SAP B1

0 голосов
/ 29 мая 2018

Я пытаюсь добавить заказ на покупку по DI API для SAP B1.Мой код работает на моем клиенте, но я попробовал его как дополнение к другой компании, имеющей другие данные.И выдает ошибку: «Не найдено подходящих записей (ODBC-2028)».Вот часть моего кода:

public void createPOrderFor(int id,
                                string itemCode,
                                string itemName,
                                int qty,
                                int satisSip,
                                string cardCode,
                                string cardName,
                                string releaseDate)
    {
        SAPbobsCOM.Documents BO_item;
        BO_item = (SAPbobsCOM.Documents)getCompany().GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPurchaseOrders);
        base.doConnectionInfo();
        server = base.server;
        database = base.database;
        user = base.user;
        pass = base.pass;

        string year = releaseDate.Substring(0, 4);
        string month = releaseDate.Substring(4, 2);
        string day = releaseDate.Substring(6, 2);
        releaseDate = year + "-" + month + "-" + day;

        BO_item.Lines.ItemCode = itemCode;            
        BO_item.Lines.ItemDescription = itemName;         
        BO_item.Lines.Quantity = qty;          
        BO_item.Lines.ShipDate = DateTime.Parse(releaseDate);           
        BO_item.Lines.UserFields.Fields.Item("U_SatisSip").Value = satisSip;           
        BO_item.Lines.Add();
        BO_item.Comments = satisSip + " numaralı satış siparişine istinaden";
        BO_item.CardCode = cardCode;
        BO_item.CardName = cardName;           
        BO_item.NumAtCard = "";
        BO_item.Series = 13;//birincil
        //BO_item.Segment -- it is read only.
        BO_item.TaxDate = DateTime.Now;
        BO_item.DocDate = DateTime.Now;
        BO_item.DocDueDate = DateTime.Parse(releaseDate);
        BO_item.SalesPersonCode = 4;//default Hakan Yılmaz
        BO_item.DocumentsOwner = 4;
        BO_item.DiscountPercent = 0.0;
        BO_item.Address2 = "TURKEY";
        BO_item.Address = "";
        BO_item.TransportationCode = 1;
        BO_item.AgentCode = null;
        BO_item.JournalMemo = "Satınalma siparişleri - " + cardCode;
        BO_item.GroupNumber = 1;//net30 
        BO_item.PaymentMethod = null;
        BO_item.Project = null;
        BO_item.UserFields.Fields.Item("U_SatSip").Value = satisSip;
        var retVal = BO_item.Add();
        int errorCode = 0;
        string errMsg = "";
        if (retVal != 0)
        {
            getCompany().GetLastError(out errorCode, out errMsg);
            SAPbouiCOM.Framework.Application.SBO_Application.StatusBar.SetText("Error: " + errMsg , SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
        }

1 Ответ

0 голосов
/ 31 мая 2018

Прежде всего удалите все пустые поля.Если есть поля DI Object, для которых вы не можете предоставить значение, вы не должны устанавливать их равными нулю.

    BO_item.AgentCode = null;
    BO_item.PaymentMethod = null;
    BO_item.Project = null;

Просто удалите их полностью.Также вместо Date.Time.Now попробуйте установить дату в следующем формате: 20180531 для всех полей даты в качестве теста.

BO_item.DocDate = "20180531"

Если возвращается такая же ошибка, попробуйте проверить ее в демонстрационной базе данных SAP Business One (можно получить из sap partneredge).

Также,Убедитесь, что пользовательские поля, которые вы пытаетесь установить для значений, существуют в базе данных вашего нового клиента

, дайте мне знать, как это работает для вас, чтобы мы могли продолжить.

...