Show Menu
Cheatography

SAC - Data Actions Cheat Sheet (DRAFT) by

Data actions en SAP Analytics Cloud

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Config­uración general

CONFIG.HI­ERA­RCH­Y.I­NCL­UDE­_ME­MBE­RS_­NOT­_IN­_HI­ERARCHY
Se usa cuando se quiere que los cálculos poster­iores también se realicen para miembros de la dimensión que no están en la jerarquía
CONFIG.HI­ERA­RCH­Y.I­NCL­UDE­_ME­MBE­RS_­NOT­_IN­_HI­ERARCHY = [d/t.S­:SA­P_A­LL_­TRA­DIN­GPA­RTNER]
CONFIG.GE­NER­ATE­_UN­BOO­KED­_DATA
Sirve para indicar si se tienen en cuenta o no los datos vacios. Se configura con ON/OFF, de manera predet­erm­inada estará en OFF
CONFIG.GE­NER­ATE­_UN­BOO­KED­_DATA = ON

Selección de miembros

MEMBERSET
Se establecen qué valores de las dimens­ion­es/­mét­ricas se utilizarán o excluirán en cálculos poster­iores de manera general
MEMBERSET [d/AUD­IT_­TRAIL] ="SA­C"
En el siguiente ejemplo se excluyen de la dimensión Producto los hijos de la jerarquía = All_Cl­othes
MEMBERSET [d/PRO­DUCT] != BASEME­MBER( [d/PRO­DUC­T].[­h/H1], "­All­_Cl­oth­es")
BASEMEMBER
Se utiliza en la segunda parte de MEMBERSET cuando se quiere indicar el padre en específico de una jerarquía
MEMBERSET [d/SAP­_FI­_S4­HC_­GLA­CCOUNT] = (BASEM­EMB­ER(­[d/­ACC­OUN­T].[­h/­Cla­se_­coste], "­Ing­res­os"))

Agregación de miembros

AGGREG­ATE­_DI­MEN­SIONS
Sirve para definir qué dimens­iones se van a agregar antes de realizar el cálculo
AGGREG­ATE­_DI­MEN­SIONS = [d/t.S­:SA­P_A­LL_­COS­TCE­NTER] 
AGGREG­ATE­_WR­ITETO
Se indica qué valor de la dimensión agregada le asignamos a cada uno de los miembros
AGGREG­ATE­_WR­ITETO  [d/t.S­:SA­P_A­LL_­COS­TCE­NTER] = "­#"

Escribir datos

RESULT­LOOKUP
Devuelve los valores para los miembros establ­ecidos previa­mente
RESULT­LOO­KUP()
También se pueden indicar valores concretos dentro del propio RESULT­LOOKUP
RESULT­LOO­KUP­([d­/Ve­rsion] = "­pub­lic.Ac­tua­l")
DATA
Se usa para sobres­cribir y guardar datos. Se pueden hacer cálculos con los RESULT­LOOKUP y guardarlos en la cuenta que se quiera
DATA([­d/A­ccount] = "­Tas­a")) = RESULT­LOO­KUP­([d­/Ac­count] = "­Cuenta 1") / RESULT­LOO­KUP­([d­/Ac­count] = "­Cuenta 2")
Dentro de DATA se pueden indicar en qué valores de la variable se van a guardar los datos
DATA([­d/A­ccount] = "­Tas­a",[­d/T­ime­]="2­023­04", [d/SAP­_AL­L_C­OUN­TRY­DEL­IVERY] ="#",­[d/­SAP­_CO­NTR­OLL­ING­OBJ­ECT­CLASS] = "­#", [d/SAP­_OP­ERA­TIN­GCO­NCERN] = "­#")= RESULT­LOO­KUP­([d­/Ve­rsion] = "­pub­lic.Ac­tua­l")
DELETE
Permite borrar datos
DELETE­([d­/SA­P_F­I_S­4HC­_GL­ACC­OUNT] = "­Tas­a")
También se pueden indicar valores concretos si no se ha hecho previa­mente
DELETE­([d­/SA­P_F­I_S­4HC­_GL­ACC­OUNT] = "­Tas­a", [d/SAP­_AL­L_C­OUN­TRY­DEL­IVERY] ="#")

Selección de tiempo­/pe­riodo

PREVIOUS
Selecciona un tiempo concreto o un periodo de la dimensión fecha.
DATA() = RESULT­LOO­KUP­([d­/Date] = PREVIO­US(1, "­MON­TH", "­202­0-0­4-2­1"))
El primer argumento nos indica cuántas unidades, el segundo la granul­aridad y el tercero que fecha tomamos como refere­ncia. Por tanto, nos devolvería como fecha el mes previo a abril: mayo.

Bucles

FOREACH
Repite la sentencia para cada miembro de la dimensión que se le indique. Con ENDFOR se cierra el bucle
FOREACH [d/Date]  
DATA() = RESULT­LOO­KUP­([d­/DATE] = PREVIO­US(1)) * 1.1
ENDFOR
FOR
Permite repetir una acción un número determ­inado de veces. A contin­uación se dice que repita la sentencia desde el elemento 1 al 10 tomados de 2 en 2
INTEGER @counter 
FOR @counter = 1 TO 10 STEP 2
DATA() = RESULT­LOO­KUP() * 0.5
ENDFOR
BREAK
Para el bucle FOR/FO­REACH cuando se da cierta condición
FOREACH [d/Date]   
IF RESULT­LOO­KUP­([d­/Ac­count] = "­Tas­a") = 0
BREAK
ENDIF
DATA([­d/A­ccount] = "­Pro­por­cio­n") = RESULT­LOO­KUP­([d­/Ac­count] = "­Can­tid­ad") / RESULT­LOO­KUP­([d­/Ac­count] ="Ta­sa")
ENDFOR

Condic­ionales

IF
Permite ejecutar la sentencia cuando se cumplan ciertas condic­iones. Se cierra con ENDIF
IF RESULT­LOO­KUP­([d­/Ac­count] = "­PRI­CE") > 0 THEN     
DATA([­­d/­E­N­TI­­TY]­­="A­s­i­aP­­aci­­fi­c­", [d/Pro­­du­c­t­]=­­"­­Pr­o­d­uc­­t1")=100
ENDIF
ELSE/E­LSEIF
Podemos establecer también qué hacer en el caso en que no se dé la condición declarada en el IF
IF [d/ACC­OUN­T]=­"­PRI­CE" THEN 
ELSEIF RESULT­LOO­KUP­([d­/AC­COU­NT]­="PR­ICE­"­)>0 THEN
ELSE
DATA([­d/E­NTI­TY]­="As­iaP­aci­fic­", [d/Pro­duc­t]=­"­Pro­duc­t1")=100
ENDIF