【发布时间】:2016-02-02 20:20:54
【问题描述】:
我试图找出状态代码将在哪里更改。因为如果我尝试预订订单。出了点问题。然后会有一个回滚。但是在今天,状态码将被更改,不必更改。因为你不能在之后预订整个订单。状态码必须不变。
谢谢
是的,我调试了代码
并且在代码单元中:这一行的 7301:
END ELSE
IF FromBinContent."Quantity (Base)" + "Qty. (Base)" < 0 THEN
FromBinContent.FIELDERROR(
"Quantity (Base)",STRSUBSTNO(Text000,FromBinContent."Quantity (Base)"));
END;
我会得到错误
谢谢
好的,我找到了要更改状态码的那段代码。
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 - 它是怎样的?而不是代码转到“vrijgegeven”?
谢谢
好的。我在代码单元中找到: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");
那么状态码不会改变。但我不知道这是否正确,因为也许其他地方出了问题。
谢谢
【问题讨论】:
-
我不确定您是要完全删除状态更改,还是仅处理更新的情况,即使事务由于错误而回滚。代码单元 1107570 表示这应该是 ISV 解决方案Numbering Conventions;与代码的原始作者讨论您尝试完成的工作,您将获得最佳结果。如果您仍然希望这样做,则需要查看 lFncNextStatus2 中的代码,然后对更改的系统进行一些测试。