*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
Нельзя использовать другие ключевые слова MDX (такие как PARENT и DESCENDANTS) в инструкциях FACTOR и EXPRESSION. Разрешены только операции сложения (+), вычитания (-), умножения (*) и деления (/), а также сочетания этих операторов и скобки для кортежа и приоритетов операций.
Нельзя использовать функцию GET() для ссылки на другое исходное значение. Формат кортежа MDX действует как функция GET.
В пределах REC нельзя использовать функции NOADD и FLD.
В операторе REC не поддерживаются такие динамические свойства, как HLEVEL или PARENTHn.
После REC всегда должно идти WHEN / IS / ENDWHEN. Автономные операторы REC не имеют никакого эффекта.
Нельзя использовать SIGNEDDATA или любое имя показателя в операторе WHEN для записи условия на основе значения показателя.
WHEN / IS / REC / ENDWHEN не могут использоваться в SELECTCASE / ENDSELECT.
Использование нескольких операторов REC
Можно записать несколько операторов REC в пределах одного оператора WHEN / IS / ENDWHEN.
Синтаксис
*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
Приведенный выше скрипт создает в инфо-провайдере проводки в валютах EUR, CAD и GBP.
Ссылка на другое исходное значение в инструкции FACTOR/EXPRESSION
Можно присвоить исходное значение из объема данных инструкции FACTOR или EXPRESSION для расчета нового значения в операторе *REC( ). Для ссылки на другое исходное значение необходимо использовать полное форматирование 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
Environment: EnvironmentShell_V (копия EnvironmentShell)
Приложение: Планирование
*XDIM_MEMBERSET P_ACCT = CE0004010,CE0004020
*WHEN P_ACCT
*IS "CE0004010"
*REC(EXPRESSION=%VALUE%/[P_ACCT].[CE0004020], P_ACCT="CE0661000")
*ENDWHEN
Также можно использовать кортежи.
Environment: EnvironmentShell_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 намеренно или по грубой неосторожности.