我正在试图找出状态代码将被更改的位置。因为如果我尝试预订订单。然后出现问题。然后会有回滚。但是在今天,状态代码将被更改,而不是必须的。因为你不能预订整个订单。状态代码必须保持不变。
谢谢
是的,我调试了代码
并在代码单元中:7301在这一行:
END ELSE
IF FromBinContent."Quantity (Base)" + "Qty. (Base)" < 0 THEN
FromBinContent.FIELDERROR(
"Quantity (Base)",STRSUBSTNO(Text000,FromBinContent."Quantity (Base)"));
END;
我会收到错误
谢谢
Oke,我找到了一段代码,其中的状态代码将被更改。
lRecStatus.FILTERGROUP(4);
lRecStatus.SETRANGE("Change Status",lRecStatus."Change Status"::Released);
lRecStatus.FILTERGROUP(0);
IF NOT lFncNextStatus2(vRecSalesHeader,lRecStatus,FALSE,FALSE) THEN
ERROR(lCtx000,vRecSalesHeader."Document Type",vRecSalesHeader."No.",vRecSalesHeader."Status Code");
lRecStatus.SETRANGE("Change Status",lRecStatus."Change Status"::01-NEW);
vRecSalesHeader.FIND('=');
所以我补充说:
lRecStatus.SETRANGE("Change Status",lRecStatus."Change Status"::01-NEW);
但是如何设置值New - 它是怎么回事?而不是代码进入&#34; vrijgegeven&#34;?
谢谢
欧客。我发现在codeunit:1107570这个:
lRecStatus.FILTERGROUP(4);
lRecStatus.SETRANGE("Change Status",lRecStatus."Change Status"::Released);
lRecStatus.FILTERGROUP(0);
IF NOT lFncNextStatus2(vRecSalesHeader,lRecStatus,FALSE,FALSE) THEN
ERROR(lCtx000,vRecSalesHeader."Document Type",vRecSalesHeader."No.",vRecSalesHeader."Status Code");
vRecSalesHeader.FIND('=');
如果我发表评论:
IF NOT lFncNextStatus2(vRecSalesHeader,lRecStatus,FALSE,FALSE) THEN
ERROR(lCtx000,vRecSalesHeader."Document Type",vRecSalesHeader."No.",vRecSalesHeader."Status Code");
然后状态代码不会被更改。但我不知道这是否正确,因为可能是其他地方出错了。
谢谢
答案 0 :(得分:0)
如果状态代码在错误消息后仍然保持更新,则最可能的原因是在调用发布路由之后但在错误消息之前已发出Maxims answer。
销售订单上的OMS选项卡似乎是以太网ISV加载项或数据库特定自定义的结果,因此很难确定可疑代码的位置,有多种方法可以找到它。
找到代码的最直接的方法是使用调试器(工具 - &gt;调试器 - >触发器上的Active / Breakpoint),同时重复进程并逐步执行事务直到遇到COMMIT言。
如果您更熟悉C / AL代码(并且具有足够的许可/权限),您可以打开表单进行修改并手动跟踪用于发布文档的代码。
重构代码以删除COMMIT可能非常棘手,如果在发布路由中进行更改,可能需要您的Dynamics合作伙伴或ISV根据开发许可结构的工作方式进行修改。