Al igual que otro lenguaje de programa o script, el script lógico también admite la instrucción LOOP. Vamos a ver cómo funciona.
Aquí está la sintaxis de la declaración *FOR – *NEXT.
*FOR {variable1} = {set1} [AND {variable2 = {set2}]
{otra declaración …}
*NEXT
Y aquí hay un ejemplo.
*FOR % CURR% = USD, EURO
*REC (FACTOR = 1.1, TIME = 2011.OCT, CURRENCY = % CURR%)
*NEXT
Entonces, ¿cuál es el significado del ejemplo anterior?
1. Establecemos una variable como % CURR%
2. La variable % CURR% será reemplazada por dos valores USD y EURO.
3. La declaración *REC incluye la variable % CURR%.
4. Por lo tanto, se traducirá dos declaraciones como a continuación
porque la declaración *REC existe dentro de la declaración *FOR – *NEXT.
*REC (FACTOR = 1.1, TIME = 2011.OCT, MONEDA = USD)
*REC (FACTOR = 1.1, TIME = 2011.OCT, MONEDA = EURO)
Supongamos que la variable %CURR% tiene USD, EURO, CHF, KRW y luego se traducirá de la siguiente manera.
*REC (FACTOR = 1.1, TIME = 2011.OCT, MONEDA = USD)
*REC (FACTOR = 1.1, TIME = 2011.OCT, MONEDA = EURO)
*REC (FACTOR = 1.1, TIEMPO = 2011.OCT, MONEDA = CHF)
*REC (FACTOR = 1.1, TIEMPO = 2011.OCT, MONEDA = KRW)
Alguien puede decir «podemos usar varias líneas de la declaración *REC«.
Por supuesto, es correcto si es simple, pero necesitamos la instrucción *FOR – *NEXT porque puede usarse como una forma anidada.
Por ejemplo,
*FOR %YEAR% = 2003,2004,2005
*FOR %MONTH% = ENE, FEB, MAR, APR, MAYO, JUNIO, JULIO, AGOSTO, SEP, OCT, NOV, DIC
*REC (FACTOR = GET(ACCOUNT = » TOT.OVRHEAD «, TIME =» TOT.INP «) / 100, TIME =»% YEAR%.% MONTH% «)
*NEXT
*NEXT
Si el usuario está usando la declaración *REC, el usuario debe escribir 36 declaraciones en lugar de una simple instrucción *FOR – *NEXT anterior.
(NOTA: BPC NW admite un FOR – NEXT anidado en la versión 7.5)
Además, el usuario puede usar dos conjuntos de variables como el ejemplo a continuación.
*FOR %X% = 1,2,3 AND %Y% = A, B, C
*REC (FACTOR = 1.5, TIME = %X%, CURRENCY = %Y%)
*NEXT
Entonces, el primer conjunto de variables y el segundo conjunto de variables se combinarán de 1 a 1; entonces será reemplazado como el siguiente ejemplo.
*REC (FACTOR = 1.5, TIME = 1, CURRENCY = A)
*REC (FACTOR = 1.5, TIME = 2, CURRENCY = B)
*REC (FACTOR = 1.5, TIME = 3, CURRENCY = C)
¿Qué sucede si el número de valores no coincide entre la primera y la segunda variable?
Si la primera variable tiene menos valores que la segunda variable,
se ignorarán los valores adicionales de la segunda variable.
Si la primera variable tiene más valores que la segunda variable,
los valores faltantes de la segunda variable se considerarán nulos, así que tenga cuidado de hacer coincidir el número de la variable.
Lo último sobre *FOR – *NEXT es usar la variable del conjunto de datos como valores.
Los usuarios pueden usar data_set como %TIME_SET% en lugar de especificar todos los miembros de tiempo.
Esto es muy útil cuando usamos lógica de script con conjunto de datos dinámico.
Por ejemplo, podemos usar
*FOR %MYTIME% = %TIME_SET%
lugar de
*FOR %MYTIME% = 2003.JAN, 2004.JAN, 2005.JAN
Por lo tanto, los usuarios pueden ejecutar la lógica del script dinámicamente en función de los conjuntos de datos pasados.
Fuente: https://blogs.sap.com/2011/10/03/bpc-script-logic-for-dummies-part-5/
BPC Script logic for Dummies, capitulo 1
BPC Script logic for Dummies, capitulo 2
BPC Script logic for Dummies, capítulo 3
BPC Script logic for Dummies, capítulo 4
4 comentarios