*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

[свойство] = "значение свойства"

Фильтр для выбора элементов измерения на основе указанного свойства и заданного значения для этого свойства.

*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

  • Нельзя использовать пустое значение или [ALL] в условии WHAT.

  • Нельзя использовать небазовые элементы с <>.

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

[свойство] = "значение свойства"

Фильтр для выбора элементов измерения на основе указанного свойства и заданного значения для этого свойства.

*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

К исходному значению для присвоения должна применяться только фиксированная сумма.

Значение кортежа WHAT равно 10 для продукта A

10*.8 = 8

USING

Значение определенной области USING используется в качестве базы присвоения. Это обеспечивает возможность изменять значения без необходимости изменять определение присвоения.

Значение кортежа WHAT равно 10 для продукта A, значение кортежа USING равно .8

10*.8 = 8

-1 * USING/100

Или

1 * USING/100

Расчет принимает определенную область как USING, изменяет значение на отрицательное и затем делит его на 100.

Значение кортежа области USING равно 70 для продукта A.

-70/100 = -.7

(-70%) (1-70)/100 = -.69 (-69%)

Примечание

Используется со счетами драйвера, а не с отчетными значениями.

USING/TOTAL

Расчет принимает область, определенную как USING, и делит на совокупное значение области, определенное как TOTAL.

Значение кортежа области USING равно 70 для продукта A. Сумма области TOTAL (кортежей) равна 700, исходя из предположения, что область USING предназначена для всех областей, а не только для США.

70/700 = .1 (10%)

Базовое математическое выражение с USING и TOTAL

(Например, 1 + USING, USING -1 и 1 – USING)

Расчет принимает область, определенную как USING, и выполняет необходимые математические действия с совокупным значением для области, определенной как TOTAL.

Значение кортежа области USING равно 70 для продукта A.

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

пусто или [All]

Возможность представить все базовые элементы для указанных измерений с помощью либо пустого параметра, либо ключевого слова [ALL]

*DIM Entity =

*DIM IntCo = [ALL]

[свойство] = "значение свойства"

Фильтр для выбора элементов измерения на основе указанного свойства и заданного значения для этого свойства.

*DIM Product_Group = [Fruit] = "apples"

Общее ограничение

  • Ключевые слова *APP (возможность записи в другую модель в случае необходимости), COUNT и LIST внутри RUNALLOCATION и любые другие параметры, не упомянутые выше, не поддерживаются.

Примеры

Пример 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.ЯНВ. Азия является родительским узлом.

Сущность

КАТЕГОРИЯ

2008.ЯНВ

Вся Азия

ФАКТ

Азия

ФАКТ

Китай

ФАКТ

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.ЯНВ

Вся Азия

ПЛАН

50 000,00

Азия

ПЛАН

50 000,00

Китай

ПЛАН

7 500,00

Япония

ПЛАН

35 000,00

Индия

ПЛАН

2 500,00

Остальная часть Азии

ПЛАН

5 000,00

Планирование Азии

ПЛАН

Проводка 2009.ЯНВ выполняется с использованием аренды для отдельных стран на основе их исторической доли.

Пример 3

Сумма всех расходов ADVERTISING, понесенных всеми европейскими операциями, должна быть переприсвоена каждой европейской операции на основе ее внешних SALES.

Это присвоение демонстрирует следующие свойства:

  • Использует ключевое слово DOT({type}) для определения измерений с помощью типа

  • Демонстрирует возможность выполнить агрегации в области WHAT (SALESEUROPE и ALL_INTCO являются родительскими элементами)

  • Отображает перенаправление измерения "многие к одному" (считывает сумму элементов между компаниями и записывает ее в элемент NON_INTERCO измерения INTCO)

  • Отображает перенаправление измерения "один к одному" (считывает элемент INPUT и записывает результаты в элемент ALLOCATED измерения DATASRC)

Перед присвоением

Исходные данные – данные истории для внешних продаж:

Факт – периодически

2008.ЯНВ

Планирование Азии

Китай

500 000

Япония

600 000

Индия

200 000

Остальная часть Азии

800 000

Азия

2 100 000

Вся Азия

2 100 000

Данные для присвоения (ADVERTISING):

План – периодически

2009.ЯНВ

Планирование Азии

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.ЯНВ

Планирование Азии

Китай

119 048

Япония

142 857

Индия

47 619

Остальная часть Азии

190 476

Азия

500 000

Вся Азия

500 000

Пример 4

В этом примере реализуется тот же сценарий, что и в примере 3, но с использованием системной переменной для года. (%YEAR %). Возвращается текущий календарный год. Предполагается, что скрипт предназначен для 2009 г.

Перед присвоением

Исходные данные – данные истории для внешних продаж:

Факт – периодически

2008.ЯНВ

Планирование Азии

Китай

500 000

Япония

600 000

Индия

200 000

Остальная часть Азии

800 000

Азия

2 100 000

Вся Азия

2 100 000

Данные для присвоения (ADVERTISING):

План – периодически

2009.ЯНВ

Планирование Азии

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.ЯНВ

Планирование Азии

Китай

119 048

Япония

142 857

Индия

47 619

Остальная часть Азии

190 476

Азия

500 000

Вся Азия

500 000

Пример 5

Все счета в прибылях и убытках категории ACTUAL для трех сущностей ITALY, FRANCE и UK копируются в корреспондирующие счета сущности GLOBALOPS для категории BUDGET. Это присвоение по сути является примером простой операции копирования, в которой вообще не используется FACTOR. В этом примере механизм выполняет копирование "один к одному" (ACTUAL в BUDGET) и "многие к одному" (ITALY, FRANCE и UK складываются и копируются в GLOBALOPS).

Перед присвоением

Факт – периодически

2007.ДЕК

Великобритания

30 000

Италия

10 000

Франция

10 000

Бюджет – периодически

2008.ФЕВ

Глобальные операции

Коэффициент:

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.ФЕВ

Глобальные операции

50 000

Любое кодирование программного обеспечения и/или строки текста программы ("Код"), включенные в эту документацию, являются только примерами и не предназначены для использования в среде продуктивной системы. Код предназначен лишь для лучшего объяснения и наглядного представления синтаксиса и правил построения выражений в определенном кодировании. SAP не гарантирует правильность и полноту приведенного здесь Кода. SAP не будет нести ответственность за ошибки и ущерб, возникшие по причине использования этого Кода, за исключением случаев, если такой ущерб нанесен со стороны SAP намеренно или по грубой неосторожности.