B1 DI API是否在交货时更改批号?

2020-09-26 16:36发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们遇到这样的情况,仓库中发生了...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们遇到这样的情况,仓库中发生了很大的混乱,为多个订单选择的批号实际上无法发货。 我正在尝试找到一种以编程方式修改现有"交付"文档的方法,因为取消和重新发行它们会在公司工作流程中的其他地方引起头痛。.到目前为止,我已经尝试了多种尝试,但都没有运气。 所有交货都是开放的,没有行运或发票。

尝试1,更改批号:

 Company oCompany = new SAPbobsCOM.Company();
///公司配置在这里...
 文档doc = oCompany.GetBusinessObject((int)BoObjectTypes.oDeliveryNotes);

 doc.GetByKey(docEntry);

 doc.Lines.BatchNumbers.BatchNumber = newBatchNumber;
 doc.Update();
 

Update()返回0,并且没有给出错误代码,但是批处理编号实际上没有更改。

尝试2,删除原始行,添加新行:

//使用与#1相同的oCOmpany和doc init
//从现有行获取值
 doc.Lines.SetCurrentLine(0);
 int BaseEntry = doc.Lines.BaseEntry;
 int BaseType = doc.Lines.BaseType;
 int BaseLine = doc.Lines.BaseLine;
 字符串ItemCode = doc.Lines.ItemCode;
 double数量= doc.Lines.Quantity;
 字符串FreeText = doc.Lines.FreeText;

 int UoMEntry = doc.Lines.UoMEntry;
 双倍价格= doc.Lines.Price;
 字符串WarehouseCode = doc.Lines.WarehouseCode;

//删除旧行
 doc.Lines.Delete();

//添加新行
 doc.Lines.Add();
//为删除的行分配相同的值
 doc.Lines.BaseEntry = BaseEntry;
 doc.Lines.BaseType = BaseType;
 doc.Lines.BaseLine = BaseLine;
 doc.Lines.ItemCode = ItemCode;
 doc.Lines.Quantity =数量;
 doc.Lines.FreeText = FreeText;
 doc.Lines.UoMEntry = UoMEntry;
 doc.Lines.Price =价格;
 doc.Lines.WarehouseCode = WarehouseCode;
 doc.Lines.BatchNumbers.BatchNumber = newLot;
 doc.Lines.BatchNumbers.Quantity =数量;
 doc.Update(); 

引发错误-5002:项目编号丢失; 指定商品编号{DLN1.ItemCode] [行:1]

尝试3,添加新行,然后删除原始行:

//与尝试2相同的复制值和添加行

//删除旧行
 doc.Lines.SetCurrentLine(0);
 doc.Lines.Delete();
 doc.Update(); 

引发错误-5002:10001221-指定"单位项目"大于零[INV1.NumPerMsr] [行:1]

尝试4,添加新行,原始行归零:

//与尝试2相同的复制值和添加行

//将旧行清零
 doc.Lines.SetCurrentLine(0);
 this.doc.Lines.BaseEntry = 0;
 doc.Lines.BaseType = 0;
 doc.Lines.BaseLine = 0;
 doc.Lines.Quantity = 0;
 doc.Lines.BatchNumbers.Quantity = 0;
 doc.Update(); 

引发错误-5002:项目编号丢失; 指定商品编号{DLN1.ItemCode] [行:1]

我不确定为什么它会在#2和#4中给出缺少项的错误,如果我在Update()之前打印doc.Lines.ItemCode,它会给出正确的值。 我将非常感谢您的帮助。

2条回答
hongfeng1314
2020-09-26 17:10

克里斯,你好,

我认为不存在任何更改交货或发票批次的方法。 无论是SDK还是客户端。

可能的解决方案,如下所示:

https://archive.sap.com/discussions/thread/3686536

希望有帮助。

亲切的问候,

迭戈兄弟

一周热门 更多>