Basics of Writing Rules in FCCS
Semicolon
 Each equation that performs an action in the data base must end with “;”
 “Sales” = “Unit Price” * “Units Sold”;
Double Quotes
 Best practice is always to use double quotes to keep formatting consistent and reduce number of errors. Double quotes are required for member names with
 Spaces – “Opening Inventory”
 Special Characters – “220020”
 Numbers followed by letters – “3MonthMovingAverage”
Crossdimensional Operator
 Used to retrieve or write to a combination of members
 Created by hyphen and greater than sign ( > ) with no space inbetween
 “Mgmt Fees” = ( “Sales” > “FCCS_Intercompany Top”) * 0.08;
Comments
 start with /* and end with */
 comments can span multiple lines
 one line
 /* comments */
 multiple line
 /*comments, comments */
 one line
Essbase Functions and Operators
 Essbase has a list of functions and operators to assist in writing complex calculation scripts
 Not all Essbase functions are supported – check the FCC admin guide for list of supported functions
 Essbase function start with @
 /* Checks if current entity is a member of North America */ @ISMBR(@DESCENDANTS(“North America”)
 Essbase has mathematical, conditional and logical operators
 List of mathematical operators:
 List of Conditional and Logical operators:
FIX & ENDFIX
 All configurable calculations are written within FIX & ENDFIX statement, often called the sandwich command
 Helps to focus calculation and reduce the number of blocks a calculation is run against
 Limits the number of members pulled into memory
 Only blocks that meet the FIX conditions are processed
 Can fix on multiple dimensions
 i.e.
 FIX (“Entity Currency”)
 FIX (“Entity Input”)
 “Acct1” = “Actual”;
 ENDFIX
 FIX (“Entity Input”)
 ENDFIX
 FIX (“Entity Currency”)
Member Blocks and Conditional Statements

 To use conditional statements, the conditions need to be in a member block associated with a database member
 The conditional statement needs to be enclosed in brackets ()
 Best practice is to fix on sparse and apply conditional statements to dense (Account) this will restrict multiple passes through the same block
 For member block calculation to run faster its recommended to use BOTTOMUP calculation
 BOTTOMUP (faster) – Determine which existing member blocks need to be calculated and calculates only the existing blocks that require calculation. For simple calculations this is the default.
 TOPDOWN (slower) – Essbase execute the calculation on all potential data blocks. For complex calculations this is the default
 Complex Calculations:
 Uses cross dim operators
 Uses range, relationship or financial functions
 Complex Calculations:
 CELL (slower) – Essbase perform the calculation sequentially by cell. Factors in dependencies.
 Essbase uses cell mode for certain functions that have dependencies especially timebased functions.
 BLOCK (faster) – Essbase groups the cells in a block and calculates each group simultaneously. Need to ensure calculation is accurate as all required data dependencies may not have been factored into the calculation.
 This is the default mode
 The calculation mode can be overwritten by using the function @CALCMODE. Bottomup and Topdown are mutually exclusive and Cell and Block are mutually exclusive.

 /* Fix applied to Product */
 FIX (“Product1”)
 /*To use conditional statements, the below member block is associated to the Data Source member FCCS_Data_Input */
 “FCCS_Data Input”(
 /* Change calculation mode to bottom up */
 @CALCMODE(BOTTOMUP);
 /*Conditions applied to dense dimension */

 IF (@ISMBR(“Acct_Prior”))
 “FCCS_Data Input” = “Actual”;
 ELSEIF (@ISMBR(“Acct_Capital”))
 “FCCS_Data Input” = “Budget”;
 ELSE
 “FCCS_Data Input” = “Forecast”;
 ENDIF
 IF (@ISMBR(“Acct_Prior”))

 /* Close off conditions associated with member FCCS_Data Input” */

 )

 ENDFIX
Single vs Double Equal Sign
 A single equal sign is to set the left equation to equal the right equation
 “Sales”>”Computers” = 500;
 A double equation sign is to test if something is True and return True if right equation equals left equation and FALSE if its not true
 IF (“CopySalesFlag”>“FCCS_No Intercompany”>“FCCS_No Movement”>”FCCS_Data Input” ==1)
Clearing Data Using Rules
 To clear data intersection you can use the CLEARDATA command:
 CLEARDATA “Sales”>“Computers”;
 CLEARDATA command cannot be used inside IF statements
 You can clear data by setting the data intersection using #Missing
 “Sales”>“Computers” = #Missing;
 Can be used inside IF statements
Restrictions in FCCS
The below dimensions cannot be included in FIX statements or lefthand side of the equation. However, they can be defined in IF statements and there are no restrictions from using them on the righthand side of the equation.
 Year
 Period
 Scenario
 Entity
 View
FCCS has restricted members that must be excluded from calculations otherwise the rules will fail. These members are restricted because FCC has its own calculations for these members. Full list of restricted members can be found in the FCC admin guide.
For example, If calculations are to be executed at all level 0 members (base) of the Account dimension member “FCCS_Balance Sheet”, the restricted members under “FCCS_Balance Sheet” have to be removed. The below FIX focuses on base of “FCCS_Balace Sheet” and excludes the restricted members, “FCCS_CTA”, “FCCS_CICTA” and “FCCS_Balance”:
 FIX (@LIST(@RELATIVE(“FCCS_Balance Sheet”,0 ) AND (@REMOVE (@RELATIVE (“FCCS_Balance Sheet”,0 ), @LIST(“FCCS_CICTA”,“FCCS_CTA”,“FCCS_Balance”)))))
 /* Calcs*/
 ENDFIX
When no members of a dimension are specified in the rules, FCCS will run the rule on all members of the dimension.
Two Pass Calculations
 Members that are calculated on a second pass through the Essbase outline are called two pass calculations
 Used when value is derived from a calculated or parent value
 Should only be used on the Accounts dimension
 Two pass calculation is a property you can define as “Yes” or “No” on a member in the metadata
Missing Blocks
 Configurable calculation will not run if a block doesn’t exist for the point of view being calculated and this is a common issue for calculations not to work.