abas-ERP:条件抛出意外错误

abas-ERP: condition throwing unexpected error

我有一个 FO 程序在接近此行时抛出错误:

.continue ERR1 ? F|defined(M|yhnum) & M|yhnum > 10

错误是

M|yhnum: not found

为什么会这样?我以为如果我在访问它之前检查变量是否被定义就不会发生,但它似乎并没有起作用

这里的问题是,FO 不使用短路评估。这意味着它将始终检查 M|yhnum 是否大于 10,即使未定义也是如此。显然,如果未定义,这将失败。

来自文档:

This means that a Boolean expression will be completely evaluated even if the final result can already be seen from the intermediate result. This is significant in connection with defined().

使用F|condexpr手动实现短路评估

.continue ERR1 ? F|condexpr(F|defined(M|yhnum), M|yhnum > 10, G|false)