表达式和函数

使用表达式,您可以在“值/表达式”字段中执行以下操作:

  • 执行简单的数学等式。

  • 使用 CURVAL 参数指定逻辑帐户运算的值。CURVAL 参数可以像在逻辑函数中使用那样在表达式中使用,不过在表达式中,必须将 CURVAL 放入两个竖线中。例如,CURVAL 表达式包括使用 |Account| 表示法的帐户规范和使用实体、类别、期间和帐户的 POV 详细信息的值规范。

使用函数,可以通过 Jython 语法使用简单的 if/else 逻辑。Jython 命令可以用于函数并且可以比表达式更复杂。

表达式

可使用表达式运算符执行在“值/表达式”字段中定义的自定义逻辑表达式。逻辑表达式无法使用变量或 If 语句,比逻辑函数简单一些。除了 |CURVAL| 之外,表达式不具有内置参数。对于表达式,不需要为 RESULT 赋值。

表达式比逻辑函数执行得快。可以在表达式中使用数据管理 查找函数,与在逻辑函数中使用它一样。要编辑自定义表达式,可双击“值/表达式”字段打开表达式编辑器。

|CURVAL| + |810| + |238|

上述函数使用数据管理查找函数将两个源帐户添加到逻辑帐户的值中。注意,CURVAL 参数可以像在逻辑函数中使用那样在表达式中使用,不过在表达式中,必须将 CURVAL 放在两条竖线之间。

(|CURVAL| + |000,10,09/30/01,810|) * 100

上面的函数使用数据管理查找函数将一个源帐户 (810) 和一个来自指定中心的源帐户、数据管理类别以及数据管理期间加到逻辑帐户的值,然后将得到的和乘以 100。

函数

使用函数运算符执行“值/表达式”字段中定义的自定义逻辑函数。

要编写函数,请从“逻辑项”行的“运算符”下拉列表中选择“函数”,然后单击编辑图标以打开编辑窗口。逻辑函数通常用于条件映射和其他涉及多个源帐户的复杂运算。逻辑函数允许使用 Jython 命令,包括变量、if/elif/else 语句、数字函数和其他 Jython 构造。

逻辑函数允许使用预定义的函数参数,而且还要求您为 RESULT 变量赋值,以便可以针对新创建的逻辑帐户更新值。以下函数参数可以用于逻辑函数中,并且它们不要求使用 "|" 表示法:

表 4-22 函数运算符和说明

函数运算符 说明
CURVAL 逻辑帐户运算的源值
StrLocation 活动位置名称
StrCenter 逻辑帐户实体
StrCatKey 活动类别键,而非名称。您需要在数据库中查找类别键以使用此参数。
StrPerKey 活动期间
Entity、Category、Period、Account 查找表示法可以用于逻辑函数。这是逻辑表达式中提供的相同表示法。
Skip 如果将 "Skip" 分配给关键字 RESULT,则不创建逻辑帐户。

您可以用大写、小写或混合大小写字母定义函数参数。但是,关键字 RESULT 必须完全采用大写字母。

分配函数返回值

必须将逻辑函数的结果分配给关键字 RESULT。如果没有将返回值分配给 RESULT 关键字,则逻辑引擎自动将 RESULT 的值设置为零。这样会导致跳过计算,不创建逻辑帐户。

下面的函数在逻辑帐户计算(使用 CURVAL 参数)返回大于零的值时将逻辑帐户计算的结果分配给逻辑帐户 (RESULT)。如果不满足第一个条件,则因关键字 "Skip" 而不会创建逻辑帐户。

if CURVAL > 0:
   RESULT = CURVAL
else:
    RESULT = "Skip"

注:

必须为逻辑函数使用 Jython 表示法和缩进。

仅当 "10" 为活动数据管理类别键时,以下函数才会将逻辑帐户计算的结果分配给逻辑帐户。

if StrCatKey == "10":
    RESULT = CURVAL
else:
    RESULT="Skip"

仅当“条件帐户实体”为 "000" 时,此函数才会将逻辑帐户计算的结果分配给逻辑帐户。

if StrCenter == "000":
    RESULT = CURVAL * 100
else:
    RESULT="Skip"

如果当前数据管理期间为 "Dec 2013",则此函数将使用数据管理查找函数将一个源帐户 (810) 加到逻辑帐户的值。

if StrPerKey == "12/31/2013":
    RESULT = CURVAL + |810|
else:
    RESULT="Skip"

当活动位置为 "Texas" 时,此函数将使用数据管理查找函数将来自一个不同实体的另一个源帐户、数据管理类别以及数据管理期间加到逻辑帐户的值。

If StrLocation == "Texas":
    RESULT = CURVAL + |000,10,09/30/13,810|
else:
    RESULT="Skip"