我们正在尝试使用返回多个段的计算表在 JD Edwards EnterpriseOne 9.1 中实施程序集包含规则。当表中有输入段的有效条目时,它似乎工作正常,但当给出无效输入时,返回段似乎为空白,而不是正常的错误字符。
在大多数情况下这没问题,但如果我想在跨段编辑规则中使用此返回值来检测错误,它不会响应将其与 *BLANK 进行比较。
例子:
- 我有一张表,使用 3 个输入和 2 个输出。
- 其中一个输出是颜色,并被放入计算段中。
- 如果输入有效,则会在表中找到它们,并且我们可以使用计算出的颜色段来创建智能部分。
- 如果输入无效,我想向用户显示一条错误消息。以前,我们会在跨段编辑规则中使用返回值 1(错误)。现在它是空白的,我该如何测试它?
答案1
返回值实际上是空白,或者更好的是,“不要改变原来的东西”。
这类似于部件或路由表,其中返回多个部件或路由步骤。如果输入段中没有匹配项,则不会返回任何内容。
对于计算表,这可能是一个问题,因为没有办法检测错误。除非……您先自己设置错误标志。
回到问题中的例子,假设三个输入段为 S1、S2 和 S3,假设输出段为 S101 和 S102。计算表的名称为 C.0001。
最简单的方法是将配置项设为一次性项。此方法可立即生效,但这是一个弃用的功能,因此我们将尝试使用静态计算。
我们希望在某个输入段发生变化时触发规则,并在调用计算表之前将输出段设置为“错误”。我们通过将输入段与它们永远不会获得的值进行比较来测试输入段,甚至是 *BLANK(似乎只要它们出现在测试中,这种方法就有效)。
因此,下面是我们用来实现这一切的 C 规则:
I ( S1 NE 'XYZ'
O S2 NE 'XYZ'
O S3 NE *BLANK )
* S101 EQ 1
* S102 EQ 2
* C.0001
在我们测试的所有情况下,这种方法似乎都有效。如果在哪些情况下这种方法无效,或者您知道更好的方法,请告诉我!