SAP B1:尝试创建 AP 贷项凭证时出错 - 540020003 - 缺少文档类型

SAP B1: Getting an error when trying to create an AP Credit Memo - 540020003 - Missing document type

我正在尝试创建一个 A/P 贷记凭证作为 A/P 发票的副本。我手动执行此操作,但复制值,而不是将信用凭证指向基础文档。

相关位都在这个方法中:

private int CreateTarget(IDocuments sourceDoc, IDocuments targetDoc, int docEntry)
{
    targetDoc.DocDueDate = DateTime.Today;
    targetDoc.DocDate = DateTime.Today;
    targetDoc.DocType = sourceDoc.DocType;
    targetDoc.CardCode = sourceDoc.CardCode;
    targetDoc.ContactPersonCode = sourceDoc.ContactPersonCode;
    targetDoc.NumAtCard = sourceDoc.NumAtCard;
    targetDoc.SalesPersonCode = sourceDoc.SalesPersonCode;
    targetDoc.Comments = sourceDoc.Comments;
    targetDoc.ShipToCode = sourceDoc.ShipToCode;
    targetDoc.PayToCode = sourceDoc.PayToCode;
    targetDoc.Address = sourceDoc.Address;
    targetDoc.Address2 = sourceDoc.Address2;

    using (var sLines = sourceDoc.Lines.WithComCleanup())
    {
        using (var tLines = targetDoc.Lines.WithComCleanup())
        {
            var sourceLines = sLines.Resource;
            var targetLines = tLines.Resource;

            for (var idx = 0; idx < sourceLines.Count; idx++)
            {
                if (idx != 0)
                {
                    targetLines.Add();
                }

                targetLines.ItemCode = sourceLines.ItemCode;
                targetLines.Quantity = sourceLines.Quantity;
                targetLines.UnitPrice = sourceLines.UnitPrice;
                targetLines.DiscountPercent = sourceLines.DiscountPercent;
            }
        }
    }

    using (var docRefCom = targetDoc.DocumentReferences.WithComCleanup())
    {
        var docRef = docRefCom.Resource;
        docRef.Add();
        docRef.ReferencedObjectType = GetReferencedObjectType(false);
        docRef.ReferencedDocEntry = docEntry;
    }

    if (targetDoc.Add() != 0)
    {
        var (code, message) = _sboWrapper.GetLastError();
        throw new SapB1Exception(code, message);
    }

    return _sboWrapper.GetNewObjectKey();
}

当我到达 targetDoc.Add() 调用时,我从 DI API 收到以下错误: 代码:-10 消息:540020003 - 缺少文档类型

我不明白这是什么意思。我试过添加各种属性,但运气不佳。

我的源文档是这样声明的: (SAPbobsCOM.Documents)Company.GetBusinessObject(BoObjectTypes.oPurchaseInvoices).GetByKey(docEntry);

我的目标文件是这样的: (SAPbobsCOM.Documents)Company.GetBusinessObject(BoObjectTypes.oPurchaseCreditNotes);

也尝试在行级别设置基本类型:

 targetLines.BaseType = 18;

原来是 docRef.Add() 才是罪魁祸首。回想起来它很有意义,但是 Documents_DocumentReferences 对象没有 Count 属性,而且几乎没有文档,所以我觉得它在 DI Api.

因为它没有像 Documents_Lines 这样的集合对象的常见特征,所以我说服自己我需要调用 Add() 来做任何事情。

无论如何,问题解决了:)