*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, включая измерение счета.

Примечание
В рамках логики скрипта можно использовать неявные элементы счета в прямых операторах 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 намеренно или по грубой неосторожности.