*RUNALLOCATION
分配使用指定的动因帮助把数据从源区域分配到目标区域。
语法
*RUNALLOCATION
*FACTOR=<driver>*DIM P_ACCT WHAT=<soure>; WHERE=<target>; USING=<distribution key>; [TOTAL=<distribution key>]
*DIM <other dimensions>*ENDALLOCATION
WHAT(源)
源值表示要通过分配函数分配的数据值范围。该值由模型中的一个或多个元组限定。
可能的 WHAT 选项有:
选项 |
描述 |
示例 |
|---|---|---|
成员 |
指定维的叶成员。 |
*DIM Region WHAT = US |
[property]=“属性值” |
用于根据指定的属性和该属性的给定值选择维成员的过滤器。 |
*DIM Product_Group = [Fruit] = "apples" |
BAS |
特定维的父成员的所有叶级别成员 |
*DIM Product_Group = BAS(TotalProduct) |
与 WHERE 相同 |
使用在指定维的 WHERE 参数中定义的相同成员 |
*DIM Account WHERE = Rent *DIM Account WHAT = Rent |
<> 成员 |
<> 操作数参考不等于定义成员的所有成员。 在 <> 成员模式中,成员应该是维中的叶成员。 如果使用 <>,那么该维中的所有其他叶成员应该包含在区域中。 |
*DIM Region USING <> Corp |
WHAT 的限制
在 WHAT 条件中无法使用空白或 [ALL]。
无法使用带有 <>. 的非叶成员。
USING 和 TOTAL(分配关键字)
分配基础是要分配的部分或完整源值的定义。定义该基础的方法是使用系数。系数可以是一个或多个值,可以乘或除这个或这些值以派生一个值(加或减的潜在未来支持)。
系数也可以根据称之为 using 的数据定义区域或基本区域派生值。
可能的 USING 和 TOTAL 选项有:
选项 |
描述 |
示例 |
|---|---|---|
成员 |
指定维的叶成员。 |
*DIM Region USING = US |
BAS |
特定维的父成员的所有叶级别成员 |
*DIM Product_Group = BAS(TotalProduct) |
与 WHERE 相同 |
使用在指定维的 WHERE 参数中定义的相同成员。相同维必须支持 WHERE 和 USING。 注意 WHERE 仅支持单个成员参考。 |
*DIM Account WHERE = Rent *DIM Account USING = PercentAcct |
<> 成员 |
<> 操作数参考不等于定义成员的所有成员。 在 <> 成员模式中,成员应该是维中的叶成员。 如果使用 <>,那么该维中的所有其他叶成员应该包含在区域中。 |
*DIM Region USING <> Corp |
[property]=“属性值” |
用于根据指定的属性和该属性的给定值选择维成员的过滤器。 |
*DIM Product_Group = [Fruit] = "apples" |
USING 的限制
不可以使用 >0。例如,不支持 USING = Amount >0。
USING 和 TOTAL 必须具有相同的定义。
无法使用带有 <>. 的非叶成员。
无法直接在 USING 中使用父成员。如上所述,仍然允许使用 BAS(parent)。
FACTOR(动因)
FACTOR 可用来定义任何用 {expression} 参数写入的算术表达式,包含操作数、圆括号、常量和一个或两个关键字(USING 和 TOTAL),分别表示来自 USING 区域的金额、动因的金额和来自 TOTAL 区域的金额、动因的总和。
如果省略了 FACTOR,那么 FACTOR 默认为 1。
如果省略了算术表达式,那么默认表达式为乘法。
可能的 FACTOR 选项有:
选项 |
描述 |
示例 |
|---|---|---|
.8 |
只把固定金额应用到分配的源值。 |
对于产品 A,WHAT 的元组值是 10 10*.8 = 8 |
USING |
定义的 USING 区域的值用作分配的基础。它提供更改值的功能,而且无需编辑分配定义。 |
对于产品 A,WHAT 的元组值是 10,WHAT 的元组值是 .8 10*.8 = 8 |
-1 * USING/100 或 1 * USING/100 |
计算时把定义的区域当作 USING,并反转值(负),然后用 100 除以该值。 |
对于产品 A,USING 区域的元组值是 70。 -70/100 = -.7 (-70%) (1-70)/100 = -.69 (-69%) 注意 这与动因科目而不是报告值一起使用。 |
USING/TOTAL |
计算时把定义的区域当作 USING,然后除以定义为 TOTAL 的区域的总计值。 |
对于产品 A,USING 区域的元组值是 70。TOTAL 区域(元组)的总和是 700,并假设 using 区域代表所有区域而不仅仅是美国。 70/700 = .1 (10%) |
包含 USING & TOTAL 的基本数学表达式 (例如,1 + USING、USING -1 和 1 - USING) |
计算时把定义的区域当作 USING,并用定义为 TOTAL 的区域的总计值执行必要的数学运算。 |
对于产品 A,USING 区域的元组值是 70。 1+70 = 71 70 -1 = 69 1-70 = -69 |
FACTOR 的限制
无法在 FACTOR 表达式中使用任何脚本逻辑关键字。
WHERE(目标)
目标识别值应该分配到的元组。它代表值应该分配到的维成员组合。目标识别对照源值为其修改成员值的维,而且只应该修改明确提到和描述的维。
关键字 WHERE 与关键字 *DIM 组合使用,能识别目标维成员(要对照源值修改的值)。
可能的 WHERE 选项有:
选项 |
描述 |
示例 |
|---|---|---|
成员 |
指定维的叶成员。 |
*DIM Region WHERE = US |
BAS |
特定维的父成员的所有叶级别成员 |
*DIM Product_Group = BAS(TotalProduct) |
与 WHAT 相同 |
使用在指定维的 WHAT 参数中定义的相同成员 |
*DIM Account WHAT = Rent *DIM Account WHERE = Rent |
空白或 [全部] |
通过空白参数或 [全部] 关键字采用给定维的所有叶成员的能力 |
*DIM Entity = *DIM IntCo = [ALL] |
[property]=“属性值” |
用于根据指定的属性和该属性的给定值选择维成员的过滤器。 |
*DIM Product_Group = [Fruit] = "apples" |
共同的限制
不支持 RUNALLOCATION 内的 *APP(在不同模型中执行写操作的能力,如果需要)、COUNT 和 LIST 关键字或以上未提到的任何其他选项。
示例
示例 1
科目 RENT 在实体 GLOBALOPS、公司间 NON_INTERCO 输入。此金额必须使用用户在相应实体的 PERCENT 科目中输入的分配百分比进行分配,而且分配给 CATEGORY、TIME、DATASRC 和 RPTCURRENCY 维的要求成员。
此分配展示了下列功能:
它使用 {dimensiontype}DIM 关键字按类型识别维
它使用 <<< 和 >>> 关键字参考左边或右边使用的定义
分配前
源科目 (RENT) 数据:
RENT CHINA |
中国 |
|
RENT JAPAN |
日本 |
|
RENT INDIA |
印度 |
|
RENT ASAREST |
其他亚洲国家 |
|
RENT ASA |
亚洲 |
50,000,000.00 |
动因(百分比科目)数据:
PERCENT CHINA |
中国 |
10.00 |
PERCENT JAPAN |
日本 |
32.00 |
PERCENT INDIA |
印度 |
8.00 |
PERCENT ASAREST |
其他亚洲国家 |
50.00 |
*XDIM_MEMBERSET TIME=2006.SEP
*XDIM_MEMBERSET P_ACCT=RENT,PERCENT
*XDIM_MEMBERSET ENTITY=ASA,INDIA,CHINA,JAPAN,ASAREST
*RUNALLOCATION
*FACTOR=USING/100
*DIM P_ACCT WHAT=RENT; WHERE=<<<; USING=PERCENT
*DIM ENTITY WHAT=ASA; WHERE=INDIA,CHINA,JAPAN,ASAREST; USING=<<<
*ENDALLOCATION
分配后
RENT CHINA |
中国 |
5,000,000.00 |
RENT JAPAN |
日本 |
16,000,000.00 |
RENT INDIA |
印度 |
4,000,000.00 |
RENT ASAREST |
其他亚洲国家 |
25,000,000.00 |
RENT ASA |
亚洲 |
50,000,000.00 |
示例 2
科目 RENT 在实体 GLOBALOPS、公司间 NON_INTERCO 输入。此金额必须根据所有欧洲实体使用的租赁空间的平方米进行分配。
此分配展示了下列功能:
分配使用历史租金作为动因
它使用 BAS( ) 关键字构建一系列成员
分配前
以下显示的是 2008 年 1 月这个期间的历史数据。亚洲是父项节点。
实体 |
类别 |
2008 年 1 月 |
|
|---|---|---|---|
亚洲总计 |
实际值 |
||
亚洲 |
实际值 |
||
中国 |
实际值 |
1,500.00 |
|
日本 |
实际值 |
7,000.00 |
|
印度 |
实际值 |
500.00 |
|
其他亚洲国家 |
实际值 |
5,000.00 |
|
计划亚洲 |
实际值 |
源科目 (RENT) 数据:
把 50,000 分配到基本国家
可以在“计划亚洲”实体中收到此输入
动因数据:
历史数据是“动因”
*XDIM_MEMBERSET TIME=2008.JAN,2009.JAN
*XDIM_MEMBERSET P_ACCT=RENT
*XDIM_MEMBERSET CATEGORY=ACTUAL,PLAN
*XDIM_MEMBERSET ENTITY=ASA,BAS(RASA)
//Create total rent data to be allocated.
*WHEN ENTITY
*IS "ASA"
*REC (EXPRESSION=50000,TIME=2009.JAN,CATEGORY=PLAN)
*ENDWHEN
*COMMIT
//Allocate to base countries.
*RUNALLOCATION
*FACTOR=USING/TOTAL
*DIM P_ACCT WHAT=RENT; WHERE=<<<; USING=<<<; TOTAL=<<<
*DIM ENTITY WHAT=ASA; WHERE=BAS(RASA); USING=<<< TOTAL=<<<
*DIM TIME WHAT=>>>; WHERE=2009.JAN; USING=2008.JAN; TOTAL=<<<
*DIM CATEGORY WHAT=>>>; WHERE=PLAN; USING=ACTUAL; TOTAL=<<<
*ENDALLOCATION
//Clear the total rent account.
*WHEN ENTITY
*IS "ASA"
*REC (EXPRESSION=0,TIME=2009.JAN,CATEGORY=PLAN)
*ENDWHEN
分配后
实体 |
类别 |
2009 年 1 月 |
|
|---|---|---|---|
亚洲总计 |
计划值 |
50,000.00 |
|
亚洲 |
计划值 |
50,000.00 |
|
中国 |
计划值 |
7,500.00 |
|
日本 |
计划值 |
35,000.00 |
|
印度 |
计划值 |
2,500.00 |
|
其他亚洲国家 |
计划值 |
5,000.00 |
|
计划亚洲 |
计划值 |
2009 年 1 月使用基于历史份额的各国家的租金过账。
示例 3
所有欧洲运营包括的全部 ADVERTISING 费用的总额必须按照其外部 SALES 重新分配到每项欧洲运营。
此分配展示了下列功能:
它使用 DOT({type}) 关键字按类型识别维
它表现出在 WHAT 区域执行汇总的能力(SALESEUROPE 和 ALL_INTCO 是父成员)
它说明了多到一的维重定向(它读取公司间成员的总额,并在 INTCO 维的 NON_INTERCO 成员中进行写入)
它说明了一到一的维重定向(它读取 INPUT 成员并在 DATASRC 维的 ALLOCATED 成员中写入结果)
分配前
源数据 - 外部销售的历史数据:
实际值 - 定期 |
2008 年 1 月 |
|---|---|
计划亚洲 |
|
中国 |
500,000 |
日本 |
600,000 |
印度 |
200,000 |
其他亚洲国家 |
800,000 |
亚洲 |
2,100,000 |
亚洲总计 |
2,100,000 |
要分配的数据 (ADVERTISING):
计划值 - 定期 |
2009 年 1 月 |
|---|---|
计划亚洲 |
500,000 |
中国 |
|
日本 |
|
印度 |
|
其他亚洲国家 |
|
亚洲 |
|
亚洲总计 |
500,000 |
系数:USING/TOTAL
APP 或 (Dim) 或 VALUE |
WHAT |
WHERE |
USING |
TOTAL |
|---|---|---|---|---|
DOT(A) |
ADVERTISING |
<<< |
EXTSALES |
<<< |
DOT(E) |
SALESEUROPE |
BAS(SALESEUROPE) |
<<< |
<<< |
DOT(I) |
ALL_INTERCO |
NON_INTERCO |
>>> |
BAS(ALL_INTERCO) |
DATASRC |
INPUT |
ALLOCATED |
INPUT |
<<< |
*RUNALLOCATION
*FACTOR =USING/TOTAL
*DIM P_ACCT WHAT=ADVERTISING; WHERE=<<<; USING=EXTSALES; TOTAL=<<<
*DIM ENTITY WHAT=ASA; WHERE=BAS(RASA); USING=<<<; TOTAL=<<<
*DIM INTERCO WHAT=WORLD_INTERCO; WHERE=I_NONE; USING=>>>; TOTAL=BAS(World_InterCo)
*DIM P_DATASRC WHAT=MANUAL; WHERE=ALLOCATED; USING=MANUAL; TOTAL=<<<
*DIM TIME WHAT=2009.JAN; WHERE=2009.JAN; USING=2008.JAN; TOTAL=<<<
*ENDALLOCATION
分配后
计划值 - 定期 |
2009 年 1 月 |
|---|---|
计划亚洲 |
|
中国 |
119,048 |
日本 |
142,857 |
印度 |
47,619 |
其他亚洲国家 |
190,476 |
亚洲 |
500,000 |
亚洲总计 |
500,000 |
示例 4
此示例实施与示例 3 相同的方案,但使用年度的系统变量。(%YEAR%)。它返回当前的日历年。假设脚本支持年度 2009。
分配前
源数据 - 外部销售的历史数据:
实际值 - 定期 |
2008 年 1 月 |
|---|---|
计划亚洲 |
|
中国 |
500,000 |
日本 |
600,000 |
印度 |
200,000 |
其他亚洲国家 |
800,000 |
亚洲 |
2,100,000 |
亚洲总计 |
2,100,000 |
要分配的数据 (ADVERTISING):
计划值 - 定期 |
2009 年 1 月 |
|---|---|
计划亚洲 |
500,000 |
中国 |
|
日本 |
|
印度 |
|
其他亚洲国家 |
|
亚洲 |
|
亚洲总计 |
500,000 |
系数:USING/TOTAL
APP 或 (Dim) 或 VALUE |
WHAT |
WHERE |
USING |
TOTAL |
|---|---|---|---|---|
DOT(A) |
ADVERTISING |
<<< |
EXTSALES |
<<< |
DOT(E) |
SALESEUROPE |
BAS(SALESEUROPE) |
<<< |
<<< |
DOT(I) |
ALL_INTERCO |
NON_INTERCO |
>>> |
BAS(ALL_INTERCO) |
DATASRC |
INPUT |
ALLOCATED |
INPUT |
<<< |
*RUNALLOCATION
*FACTOR =USING/TOTAL
*DIM P_ACCT WHAT=ADVERTISING; WHERE=<<<; USING=EXTSALES; TOTAL=<<<
*DIM ENTITY WHAT=ASA; WHERE=BAS(RASA); USING=<<<; TOTAL=<<<
*DIM INTERCO WHAT=WORLD_INTERCO; WHERE=I_NONE; USING=>>>; TOTAL=BAS(World_InterCo)
*DIM P_DATASRC WHAT=MANUAL; WHERE=ALLOCATED; USING=MANUAL; TOTAL=<<<
*DIM TIME WHAT=%YEAR%.JAN; WHERE=%YEAR%.JAN; USING=%YEAR%(-1).JAN; TOTAL=<<<
*ENDALLOCATION
分配后
计划值 - 定期 |
2009 年 1 月 |
|---|---|
计划亚洲 |
|
中国 |
119,048 |
日本 |
142,857 |
印度 |
47,619 |
其他亚洲国家 |
190,476 |
亚洲 |
500,000 |
亚洲总计 |
500,000 |
示例 5
把三个实体 ITALY、FRANCE 和 UK 的 ACTUAL 类别的损益表中的全部科目复制到 BUDGET 类别的 GLOBALOPS 实体的相应科目。此分配基本上是一个简单复制操作示例,根本不使用 FACTOR。在这个示例中,引擎执行一到一的复制(ACTUAL 到 BUDGET)和多到一的复制(加总 ITALY、FRANCE 和 UK,并将其复制到 GLOBALOPS)。
分配前
实际值 - 定期 |
2007 年 12 月 |
|---|---|
UK(大不列颠) |
30,000 |
意大利 |
10,000 |
法国 |
10,000 |
预算 - 定期 |
2008 年 2 月 |
|---|---|
全球运营 |
系数:
APP 或 (Dim) 或 VALUE |
WHAT |
WHERE |
|---|---|---|
ACCOUNT |
[GROUP] = "profit & loss" |
<<< |
CATEGORY |
ACTUAL |
BUDGET |
ENTITY |
SALESITALY;SALESFRANCE;SALESUK |
GLOBALOPS |
DOT(R) |
LC |
<<< |
ALLOCATION 中不支持的属性由使用 *SELECT 语句的变量替代。确保 *SELECT 语句只选择叶成员。
*XDIM_MEMBERSET ACCOUNT=ADVERTISING,EXTSALES
*XDIM_MEMBERSET ENTITY=UK,ITALY,FRANCE,GLOBAL
*XDIM_MEMBERSET P_DATASRC = INPUT
*XDIM_MEMBERSET TIME = 2007.DEC,2008.JAN
*XDIM_MEMBERSET CATEGORY = ACTUAL,BUDGET
*XDIM_MEMBERSET INTCO= I_NONE
*XDIM_MEMBERSET RPTCURRENCY = LC
*SELECT(%ACCT%, "[ID]",ACCOUNT,"[CALC]='N'","[GROUP]='PL'")
*RUNALLOCATION
*FACTOR=
*DIM ACCOUNT WHAT=[GROUP]="PL" AND [CALC]="N"; WHERE=<<<
*DIM CATEGORY WHAT=ACTUAL; WHERE=BUDGET
*DIM ENTITY WHAT=UK,ITALY,FRANCE; WHERE=GLOBAL
*DIM DOT(R) WHAT=LC; WHERE=<<<
*DIM TIME WHAT=2007.DEC; WHERE=2008.FEB
*ENDALLOCATION
分配后
预算 - 定期 |
2008 年 2 月 |
|---|---|
全球运营 |
50,000 |
“本文档中包括的任何软件编码和/或代码行/字符串(“代码”)仅为示例,不可用于生产系统环境中。”“代码仅为更好、更直观地解释特定编码的语法和语法规则。”SAP 不担保本文中代码的正确性和完整性,且 SAP 不对因使用代码而造成的错误或损害负责,除非这些损害是由 SAP 故意或因其重大疏忽所造成。