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 {App}
*DIM [{LookupID}:]{DimensionName}="Value" | {CallingDimensionName}[.{Property}]
*DIM MEASURES=”MeasureName”
*ENDLOOKUP
Beispiel
Im folgenden Beispiel lesen Sie RATE-Cube-Informationen und verwenden sie in der Berechnung. Sie können auch FOR/NEXT verwenden, um Lookups für mehrere Werte durchzuführen.
AppSet: APSHELL_V (Kopie von APSHELL)
Anwendung: 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
Beispiel
Im folgenden Beispiel lesen Sie zuerst 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 RATE-Cube. Danach verwenden Sie sie in der Berechnung.
Werte in den Cubes vor der Ausführung des Schritts:
Daten im PLANNING-Cube:
TIME (Zeit) |
P_ACCT |
ENTITY (Entität) |
P_ACTIVITY |
CATEGORY (Kategorie) |
CURRENCY (Währung) |
P_DATASRC |
SignData |
2006.AUG |
CE0004010 |
C9000 |
NONE |
ACTUAL |
LC |
UPLOAD |
157,915.81 |
Daten im RATE-Cube:
CATEGORY (Kategorie) |
InputCurrency |
R_ACCT |
R_ENTITY |
TIME (Zeit) |
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 Cubes nach der Ausführung des Schritts:
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.
Beispiel
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
Das Lesen mehrerer Kennzahlen innerhalb eines einzelnen LOOKUP durch Zuordnen mehrerer Lookup-IDs wird nicht unterstützt.
Alle in dieser Dokumentation enthaltenen Software-Quelltextzeilen oder -Strings („Code“) dienen nur als Beispiele und sind nicht für die Anwendung in einem Produktivsystem vorgesehen. Der angegebene Quelltext soll lediglich die Syntax und die Ausdrucksregeln bestimmter Softwarecodes erläutern. 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.