LOOKUP
Fonction qui renvoie vers une autre valeur source
Afin de calculer une nouvelle valeur dans une instruction *REC( ), vous pouvez utiliser la fonction LOOKUP afin d'affecter une valeur source se situant en dehors du périmètre de données pour une instruction FACTOR ou EXPRESSION.
Syntaxe
*LOOKUP {Model}
*DIM [{LookupID}:]{DimensionName}="Value" | {CallingDimensionName}[.{Property}]
*DIM MEASURES="MeasureName"
*ENDLOOKUP
Dans l'exemple suivant, lisez les informations RATE et utilisez-les pour le calcul. Vous pouvez également utiliser FOR/NEXT pour rechercher des valeurs multiples.
Environment : EnvironmentShell_V (Copie de l'environnement type EnvironmentShell)
Modèle : Planification
*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
Dans l'exemple suivant, lisez d'abord toutes les devises de reporting dans l'instruction *SELECT et affectez les valeurs à la variable %CUR%. En utilisant FOR/NEXT, vous lisez leurs taux à partir du modèle RATE. Utilisez-les ensuite pour le calcul.
Valeurs dans les modèles avant exécution du script :
Données du modèle PLANNING :
TIME |
P_ACCT |
ENTITY |
P_ACTIVITY |
CATEGORY |
Devise |
P_DATASRC |
SignData |
2006.AUG |
CE0004010 |
C9000 |
NONE |
ACTUAL |
LC |
UPLOAD |
157 915,81 |
Données du modèle Rate :
Catégorie |
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
Valeurs dans le modèle après exécution du script :
2006.AUG |
CE0004010 |
C9000 |
NONE |
ACTUAL |
EUR |
UPLOAD |
105 123,03 |
2006.SEP |
CE0004010 |
C9000 |
NONE |
ACTUAL |
USD |
UPLOAD |
157 915,81 |
Vous pouvez également transférer des valeurs de propriétés aux membres du périmètre pour rechercher des données.
Dans cet exemple, la devise d'entité correspondante est lue à partir des données de base et utilisée pour rechercher la valeur du taux.
*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
Restriction
Le système ne supporte pas la lecture de mesures multiples dans une fonction unique LOOKUP en affectant divers ID de recherche.
Tous les codes logiciels et/ou lignes/chaînes de code ("Code") inclus dans cette documentation sont fournis à titre d'exemples et ne sont en aucun cas destinés à un usage dans un environnement système productif.Le Code a pour but de mieux expliquer et d'offrir un exemple visuel des règles de syntaxe et de rédaction de certains codes.SAP ne garantit pas l'exactitude et l'exhaustivité du Code ci-après et SAP ne pourra pas être tenu responsable des erreurs ou dommages causés par l'utilisation dudit Code, sauf si de tels dommages ont été causés volontairement par SAP ou par négligence grave de SAP.