*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 намеренно или по грубой неосторожности.