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()
来做任何事情。
无论如何,问题解决了:)
我正在尝试创建一个 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()
来做任何事情。
无论如何,问题解决了:)