Technology Blog Posts by SAP
cancel
Showing results for 
Search instead for 
Did you mean: 
ashutosh_rastogi
Product and Topic Expert
Product and Topic Expert
2,083
If you have a usecase where you need to build assymetric table for displaying in SAP Analytics Cloud, you may not be able to achieve that with standard tables in SAC. In such cases, if the usecase is only consumption then R can be used to build such tables.

One such usecase is listed in blog  https://blogs.sap.com/2018/11/05/creating-a-custom-crosstab-with-r-in-sap-analytics-cloud/

Flextable package has been included in the pre-deployed libraries on the R server. The complete list is available here.

Sample script that you can simply paste and use to display an R table in SAC
library(ggplot2)
library(gridExtra)
library(flextable)
library(officer)

ActualData = c ("Open Rev.", "Revenue", "Direct Cost",
"Indirect Cost", "Total Cost", "Taxes", "Margin")

LY = c(0.0,
1079511249,
806777210.4,
161822021.7,
968956266.1,
357034,
110554982.4)

LM = c(0.0,
1244782036,
922165421.4,
185576898,
1108099353,
357034,
136682682.5)

CTM = c(0.0,
1312589822,
973687717.9,
195670590.5,
1169742397,
384088.22,
142847425.7)

FTM = c(CTM[1] - LM[1], CTM[2] - LM[2], CTM[3] - LM[3], CTM[4] - LM[4], CTM[5] - LM[5], CTM[6] - LM[6], CTM[7] - LM[7])

YTM = c(CTM[1] - LY[1], CTM[2] - LY[2], CTM[3] - LY[3], CTM[4] - LY[4], CTM[5] - LY[5], CTM[6] - LY[6], CTM[7] - LY[7])

ActualData <- format(ActualData, justify = "left")
LY <- format(LY, digits=5, nsmall=2, big.mark=",", justify = "right")
LM <- format(LM, digits=5, nsmall=2, big.mark=",", justify = "right")
CTM <- format(CTM, digits=5, nsmall=2, big.mark=",", justify = "right")
FTM <- format(FTM, digits=5, nsmall=2, big.mark=",", justify = "right")
YTM <- format(YTM, digits=5, nsmall=2, big.mark=",", justify = "right")

df.data <- data.frame(ActualData,
LY, LM, CTM, FTM, YTM)

myft <- flextable(df.data, col_keys = c("ActualData", "LY", "LM", "CTM", "FTM", "YTM") )
myft <- set_header_labels(myft, ActualData = " ")
myft <- bold(italic(myft,j=1), j=1)
myft <- bg(myft, bg = "grey", part = "header")
myft <- color(myft, color = "black", part = "header")
myft <- autofit(myft)
myft


 

And here is the output visualization



More on flextable https://davidgohel.github.io/flextable/articles/overview.html