*REC

*REC( ) 指令提示程序在符合指定条件后应该执行的操作。

每个 REC 指令生成一个要过账到数据库的新记录。每个源记录可生成要求数量的记录,即使指向相同的目标单元格。

REC( ) 函数的参数指定对原始记录所做的修改。任何维成员都可以使用下列语法进行修改:

{DimensionName}={member}

示例

*XDIM_MEMBERSET P_ACCT = CE0004010

*WHEN CATEGORY

*IS ACTUAL *REC(FACTOR = 1.1, CATEGORY="FORECAST")

*ENDWHEN

可以使用 WHEN 语句中的属性值。

示例

*XDIM_MEMBERSET CATEGORY = PLAN

*WHEN TIME.YEAR

*IS "2007"

*REC(FACTOR = 1.1, CATEGORY="FORECAST")

*ENDWHEN

上述脚本将 2007 计划数据复制到“预测”。还可以读取属性值,并将它们分配给各维。

示例

*XDIM_MEMBERSET P_ACCT = CE0004010,CE0652000

*WHEN P_ACCT

*IS "CE0004010"

*REC(EXPRESSION=([P_ACCT].[CE0004010],[P_ACTIVITY].[NONE])/([P_ACCT].[CE0652000],[P_ACTIVITY].[LABPRD]), RPTCURRENCY=[ENTITY].CURRENCY, P_ACCT=CE0661000)

*ENDWHEN

使用 REC 指令的限制条件

  • 不能在 FACTOREXPRESSION 指令中使用其他 MDX 关键字(例如 PARENTDESCENDANTS)。允许的运算符有加号(+)、减号(-)、乘号(*)、除号(/)、这些运算符的组合,以及表示运算的元组和优先级的圆括号。

  • 不能使用 GET() 函数来参考其他源值。MDX 元组格式作为 GET 函数使用。

  • 不能在 REC 中使用 NOADD 或 FLD 函数。

  • REC 语句中不支持动态属性,如 HLEVEL 和 PARENTHn。

  • REC 指令必须包含 WHEN / IS / ENDWHEN。单独的 REC 语句不会有任何作用。

  • 不能使用 WHEN 语句中的 SIGNEDDATA 或任何度量名称来写入度量值条件。

  • WHEN / IS / REC / ENDWHEN 不能用于 SELECTCASE / ENDSELECT。

使用多个 REC 语句

可以在一个 WHEN/ IS/ ENDWHEN 语句中写入多个 REC 语句。

语法

*WHEN {dim}

* IS {condition_value}

*REC({FACTOR or EXPRESSION instruction},dim=…)

*REC({FACTOR or EXPRESSION instruction},dim=…)

*REC({FACTOR or EXPRESSION instruction},dim=…)

*ENDWHEN

示例

*XDIM_MEMBERSET TIME = 2006.AUG,2006.SEP

*XDIM_MEMBERSET P_ACCT=CE0004010

*XDIM_MEMBERSET CATEGORY=ACTUAL

*WHEN P_ACCT

*IS "CE0004010"

*REC(EXPRESSION=%VALUE%/1.5098, RPTCURRENCY="EUR")

*REC(EXPRESSION=%VALUE%/1.0666, RPTCURRENCY="CAD")

*REC(EXPRESSION=%VALUE%/1.9183, RPTCURRENCY="GBP")

*ENDWHEN

上面显示的脚本在信息提供者中创建欧元、加元和英镑过账。

引用 FACTOR/EXPRESSION 指令中的其他源值

可以分配 FACTOREXPRESSION 指令的范围数据中的源值,以计算 *REC( ) 语句中的新值。要引用其他源值,必须使用完全限定的 MDX 格式,包括“科目”维。

注意
可在脚本逻辑的直接 MDX 语句中使用隐含“科目”成员。

语法

*WHEN {dim}

* IS {condition_value}

*REC({FACTOR or EXPRESSION instruction},dim=…)

*REC({FACTOR or EXPRESSION instruction},dim=…)

*REC({FACTOR or EXPRESSION instruction},dim=…)

*ENDWHEN

示例

EnvironmentEnvironmentShell_VEnvironmentShell 的副本)

应用程序:计划

*XDIM_MEMBERSET P_ACCT = CE0004010,CE0004020

*WHEN P_ACCT

*IS "CE0004010"

*REC(EXPRESSION=%VALUE%/[P_ACCT].[CE0004020], P_ACCT="CE0661000")

*ENDWHEN

您还可以使用元组。

示例

EnvironmentEnvironmentShell_V EnvironmentShell 的副本)

应用程序:计划

*XDIM_MEMBERSET P_ACCT = CE0004010,CE0652000

*WHEN P_ACCT

*IS "CE0004010"

*REC(EXPRESSION=%VALUE%/([P_ACCT].[CE0652000],[P_ACTIVITY].[LABPRD]), P_ACCT="CE0661000")

*ENDWHEN

“本文档中包括的任何软件编码和/或代码行/字符串(“代码”)仅为示例,不可用于生产系统环境中。”“代码仅为更好、更直观地解释特定编码的语法和语法规则。”SAP 不担保本文中代码的正确性和完整性,且 SAP 不对因使用代码而造成的错误或损害负责,除非这些损害是由 SAP 故意或因其重大疏忽所造成。