[KB功能解说] 如何设置有筛选条件的变量?
[b]适用产品版本[/b]Sage X3 V7
[b]模块[/b]
管理
[b]问题概要[/b]
Classe TCAWRKHISSUI:避免使用硬编码的工作流程名称[F:AWS]CODEVT='POCSIG'
[b]详细信息
解决方法[/b]
如何设置有筛选条件的变量?
这个例子解释了如何在使用变量的查询上创建筛选条件。
示例如下:
让我们设想一下,我们想要创建一个显示工作流事件历史的表示法,我们想要根据工作流事件代码筛选它们,而工作流事件代码又是在对象POC的事件类型对象上触发的。
所以筛选条件不能是类似如下的内容:
[F:AWS]CODEVT="POCSIG"
如果对应的事件始终是“POCSIG”,那么就可以用这个条件。但由于顾问可以重命名这样的事件,所以几乎不可能做到这一点。
也不可能将可以返回代码的某个功能的结果用作筛选条件,例如:
[F:AWS]CODEVT=func PURWRK.CODE("POC")
或者甚至
[F:AWS]CODEVT=GACTX.APARAM.AGETVALCHAR([V]CST_ALEVFOLD,"","POCSIG")
事实上,在使用筛选条件时是禁止使用公式的。唯一可行的解决方案就是使用上下文变量。
所以我们需要在上下文中的某个地方使用对应的代码。让我们设想一下,我们在上下文中创建了一个变量POHSIG,这个变量不仅包含了工作流事件的实际代码,而且是在PUR组中的(一个要在其他表No.96中创建的代码)。
那么,筛选条件就会变成:
[F:AWS]CODEVT=GACTX.PUR.POCSIG
这样就是可行的。
所以你需要在我们的上下文字典,在PUR组(其他表No.96)中创建一个变量POHSIG。这个变量可以有一个初始化公式,例如我们想要使用的第一个公式:
[F:AWS]CODEVT=func PURWRK.CODE("POC")
当然,我们需要将CODE功能写入PURWRK脚本。可能是这样的:
Funprog CODE(EVENT)
Value Char EVENT()
Local Integer IF_FOUND
Local File AWRKPAR [AWA]
# Only the first active workflow on object EVENT will be returned
Filter [AWA] Where ENAFLG=2 and TYPEVT=2 and CODEVT=EVENT
For [AWA]
IF_FOUND=1 : Break
Next
# Return empty string if not found
If IF_FOUND=0 : End "" : Endif
End [AWA]CODE
页:
[1]