*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 的数据定义区域或基本区域派生值。

可能的 USINGTOTAL 选项有:

选项

描述

示例

成员

指定维的叶成员。

*DIM Region USING = US

BAS

特定维的父成员的所有叶级别成员

*DIM Product_Group = BAS(TotalProduct)

WHERE 相同

使用在指定维的 WHERE 参数中定义的相同成员。相同维必须支持 WHEREUSING

注意
WHERE 仅支持单个成员参考。

*DIM Account WHERE = Rent

*DIM Account USING = PercentAcct

<> 成员

<> 操作数参考不等于定义成员的所有成员。

<> 成员模式中,成员应该是维中的叶成员。

如果使用 <>,那么该维中的所有其他叶成员应该包含在区域中。

*DIM Region USING <> Corp

[property]=“属性值”

用于根据指定的属性和该属性的给定值选择维成员的过滤器。

*DIM Product_Group = [Fruit] = "apples"

USING 的限制

  • 不可以使用 >0。例如,不支持 USING = Amount >0

  • USINGTOTAL 必须具有相同的定义。

  • 无法使用带有 <>. 的非叶成员。

  • 无法直接在 USING 中使用父成员。如上所述,仍然允许使用 BAS(parent)

FACTOR(动因)

FACTOR 可用来定义任何用 {expression} 参数写入的算术表达式,包含操作数、圆括号、常量和一个或两个关键字(USINGTOTAL),分别表示来自 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(在不同模型中执行写操作的能力,如果需要)、COUNTLIST 关键字或以上未提到的任何其他选项。

示例

示例 1

科目 RENT 在实体 GLOBALOPS、公司间 NON_INTERCO 输入。此金额必须使用用户在相应实体的 PERCENT 科目中输入的分配百分比进行分配,而且分配给 CATEGORYTIMEDATASRCRPTCURRENCY 维的要求成员。

此分配展示了下列功能:

  • 它使用 {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 区域执行汇总的能力(SALESEUROPEALL_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

把三个实体 ITALYFRANCEUKACTUAL 类别的损益表中的全部科目复制到 BUDGET 类别的 GLOBALOPS 实体的相应科目。此分配基本上是一个简单复制操作示例,根本不使用 FACTOR。在这个示例中,引擎执行一到一的复制(ACTUALBUDGET)和多到一的复制(加总 ITALYFRANCEUK,并将其复制到 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

SALESITALYSALESFRANCESALESUK

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 故意或因其重大疏忽所造成。