LOOKUP
Eine Funktion, die einen anderen Quellwert heranzieht
Um in einer *REC( )-Anweisung einen neuen Wert zu berechnen, können Sie über die LOOKUP-Funktion einen Quellwert zuordnen, der außerhalb des Datenumfangs für eine FACTOR- oder eine EXPRESSION-Anweisung liegt.
Syntax
*LOOKUP {Model}
*DIM [{LookupID}:]{DimensionName}="Value" | {CallingDimensionName}[.{Property}]
*DIM MEASURES="MeasureName"
*ENDLOOKUP
Im folgenden Beispiel lesen Sie RATE-Informationen und verwenden sie bei der Berechnung. Sie können auch FOR/NEXT verwenden, um Lookups für mehrere Werte durchzuführen.
Environment: EnvironmentShell_V: (Kopie der Musterumgebung EnvironmentShell)
Modell: Planung
*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
Im folgenden Beispiel lesen Sie zunächst alle Berichtswährungen in der *SELECT-Anweisung und ordnen die Werte der Variable %CUR% zu. Mithilfe von FOR/NEXT lesen Sie die zugehörigen Umrechnungskurse aus dem Kursmodell. Danach verwenden Sie sie in der Berechnung.
Werte in den Modellen vor der Ausführung des Skripts:
Daten im Planungsmodell:
TIME |
P_ACCT |
ENTITY |
P_ACTIVITY |
CATEGORY |
Currency |
P_DATASRC |
SignData |
2006.AUG |
CE0004010 |
C9000 |
NONE |
ACTUAL |
LC |
UPLOAD |
157.915,81 |
Daten im Kursmodell:
Category |
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
Werte in den Modellen nach der Ausführung des Skripts:
2006.AUG |
CE0004010 |
C9000 |
NONE |
ACTUAL |
EUR |
UPLOAD |
105.123,03 |
2006.SEP |
CE0004010 |
C9000 |
NONE |
ACTUAL |
USD |
UPLOAD |
157.915,81 |
Sie können auch Eigenschaftswerte an Umfangselemente übermitteln, um Lookups von Daten durchzuführen.
In diesem Beispiel wird die Währung der entsprechenden Entität aus Stammdaten gelesen und dann zum Nachschlagen des Kurswertes verwendet.
*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
Einschränkung
Das Lesen mehrerer Kennzahlen innerhalb eines einzelnen LOOKUP durch Zuordnen mehrerer Lookup-IDs wird nicht unterstützt.
Alle in dieser Dokumentation enthaltenen Software-Quelltextzeilen und/oder -Strings („Code“) dienen nur als Beispiele und sind nicht für die Anwendung in einem Produktivsystem vorgesehen. Der Code soll lediglich dazu dienen, die Syntax- und die Phrasierungsregeln bestimmter Kodierungen besser zu erklären und zu veranschaulichen. SAP übernimmt keine Verantwortung für die Richtigkeit und Vollständigkeit des angegebenen Quelltextes und übernimmt keine Haftung für Fehler oder Schäden, die aus dessen Anwendung entstehen könnten; es sei denn, derartige Schäden wurden von SAP vorsätzlich oder fahrlässig hervorgerufen.