LOOKUP

Функция, ссылающаяся на другое исходное значение.

Чтобы рассчитать новое значение в операторе *REC( ), можно воспользоваться функцией LOOKUP для присвоения исходного значения, которое не входит в данные с определенной областью действия, инструкции FACTOR или EXPRESSION.

Синтаксис

*LOOKUP {Model}

*DIM [{LookupID}:]{DimensionName}="Value" | {CallingDimensionName}[.{Property}]

*DIM MEASURES="MeasureName"

*ENDLOOKUP

Пример

В следующем примере считывается и используется в расчете информация из модели курсов валют. Также можно использовать FOR/NEXT для поиска нескольких значений.

Environment: EnvironmentShell_V (копия образца среды EnvironmentShell)

Модель: планирование

*XDIM_MEMBERSET TIME = 2006.AUG

*XDIM_MEMBERSET P_ACCT=CE0004010

*XDIM_MEMBERSET CATEGORY=ACTUAL

*LOOKUP RATE

*DIM TIME="2006.AUG"

*DIM CATEGORY="ACTUAL"

*DIM R_ACCT="AVG"

*DIM R_ENTITY="GLOBAL"

*DIM RATEEUR:INPUTCURRENCY="EUR"

*DIM MEASURES="PERIODIC"

*ENDLOOKUP

*WHEN P_ACCT

*IS "CE0004010"

*REC(EXPRESSION=%VALUE%/LOOKUP(RATEEUR), RPTCURRENCY="EUR")

*ENDWHEN

Пример

В следующем примере сначала считываются все валюты отчетности в операторе *SELECT и присваиваются значения переменной %CUR %. С помощью FOR/NEXT считываются их курсы из модели курсов валют. Затем они используются в расчете.

Значения в моделях перед выполнением скрипта:

Данные модели планирования:

TIME

P_ACCT

ENTITY

P_ACTIVITY

CATEGORY

Валюта

P_DATASRC

SignData

2006.AUG

CE0004010

C9000

NONE

ACTUAL

LC

UPLOAD

157 915,81

Данные модели курсов валют

Категория

InputCurrency

R_ACCT

R_ENTITY

TIME

SignData

ACTUAL

EUR

AVG

GLOBAL

2006.AUG

1,5022

ACTUAL

USD

AVG

GLOBAL

2006.SEP

1,0000

*XDIM_MEMBERSET TIME=2006.AUG

*XDIM_MEMBERSET P_ACCT=CE0004010

*XDIM_MEMBERSET CATEGORY=ACTUAL

*SELECT(%CUR%, "[ID]", RPTCURRENCY, "[REPORTING]=Y")

*LOOKUP RATE

*DIM CATEGORY="ACTUAL"

*DIM R_ACCT="AVG"

*DIM R_ENTITY="GLOBAL"

*DIM TIME="2006.AUG"

*DIM MEASURES="PERIODIC"

*FOR %LOOP_CUR%=%CUR%

*DIM C_%LOOP_CUR%:INPUTCURRENCY="%LOOP_CUR%"

*NEXT

*ENDLOOKUP

*WHEN P_ACCT

*IS "CE0004010"

*FOR %LOOP_CUR%=%CUR%

*REC(EXPRESSION=%VALUE%/LOOKUP(C_%LOOP_CUR%), RPTCURRENCY=%LOOP_CUR%)

*NEXT

*ENDWHEN

Значения в модели после выполнения скрипта

2006.AUG

CE0004010

C9000

NONE

ACTUAL

EUR

UPLOAD

105 123,03

2006.SEP

CE0004010

C9000

NONE

ACTUAL

USD

UPLOAD

157 915,81

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

Пример

В данном примере валюта соответствующей сущности считывается из основных данных и используется для поиска значения курса.

*XDIM_MEMBERSET TIME = 2007.AUG

*XDIM_MEMBERSET P_ACCT=CE0004010

*XDIM_MEMBERSET CATEGORY=ACTUAL

*XDIM_MEMBERSET ENTITY=C9000

*LOOKUP RATE *DIM TIME="2006.AUG"

*DIM CATEGORY="ACTUAL"

*DIM R_ACCT="AVG"

*DIM R_ENTITY="GLOBAL"

*DIM RATE:INPUTCURRENCY=ENTITY.CURRENCY

*DIM MEASURES="PERIODIC"

*ENDLOOKUP

*WHEN P_ACCT

*IS "CE0004010"

*REC(EXPRESSION=%VALUE%/LOOKUP(RATE), RPTCURRENCY=ENTITY.CURRENCY)

*ENDWHEN

Ограничение

  • Считывание нескольких показателей в рамках одной функции LOOKUP путем присвоения разных идентификаторов поиска не поддерживается.

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