### @MsgFormat Example with Input Values Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/msgformat.html Demonstrates the output of @MsgFormat with specific input values for the parameters. The example shows how the placeholders are replaced with the provided data. ```Calculation Manager Assume that the following values are input: * [String4]: "{0} {1} completed this task in {2} {3}" * [FirstName]: "Joe" * [LastName]: "Smith " * [Month]: "Feb" * [Year]: "FY15" In this example, [MSFG4] returns "Joe Smith completed this task in Feb "FY15." ``` -------------------------------- ### CrossRef Function Example - Input Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/crossref_accountname_prefix.html Example demonstrating the input syntax for the CrossRef function, assuming specific dimensions exist in the application. ```Calculation Manager FIX (Aug, Actual, Working, FY15, P_000, "112") "110" = [[CrossRef("5800", "No")]]; ENDFIX ``` -------------------------------- ### Input Data for @UNION Example Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/union.html These are the sample input values for the MR1 and MR2 design-time prompts used in the @UNION example. ```text [MR1]: "50350",@Relative("Q1", 0),"California","Tennessee" [MR2]: "Apr","Washington", "Tennessee" ``` -------------------------------- ### CrossRef Function Example: Before and After Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/crossref_accoutname_prefix_true.html Illustrates the input syntax for the CrossRef function and the resulting script after its execution. The example shows how dimension names are prefixed based on the provided arguments. ```Calculation Manager FIX (Aug, Actual, Working, FY15, P_000, "112") "111" = [[CrossRef("5800", "NoX", true)]]; ENDFIX ``` ```Calculation Manager FIX (Aug, Actual, Working, FY15, P_000, "112") "111" = "BegBalance"->"NoXHSP_View"->"NoXYear"->"NoXScenario"->"NoXVersion"->"NoXEntity"->"NoXProduct"->"5800"; ENDFIX ``` -------------------------------- ### Example Product Outline Structure Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/using_the_allocate_level_to_level_template.html Illustrates a hierarchical product outline structure used for demonstrating data allocation. ```plaintext T_TP P_000 T_TP1 P_100 P_110 etc T_TP2 P_200 P_210 etc T_TP3 P_291 P_292 ``` -------------------------------- ### Get Module Planning Information Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/scenarios.html Retrieve module-specific start and end years and periods for Planning and Strategic Workforce Planning modules. Requires the 'PlanningFunctions' syntax and module/scenario names in double quotes. Note that Module Plan Start Year is only valid in conditional statements. ```Calculation Manager [[PlanningFunctions.getModuleStartYear("ModuleName","ScenarioName")]] ``` ```Calculation Manager [[PlanningFunctions.getModuleEndYear("ModuleName","ScenarioName")]] ``` ```Calculation Manager [[PlanningFunctions.getModuleStartPeriod("ModuleName","ScenarioName")]] ``` ```Calculation Manager [[PlanningFunctions.getModuleEndPeriod("ModuleName","ScenarioName")]] ``` ```Calculation Manager [[PlanningFunctions.isPlanStartYearSameAsCurrentFiscalYear("ModuleName")]] ``` -------------------------------- ### Using @STARTSWITH Function Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/startswith.html This example demonstrates how to use the @STARTSWITH function to check if a member's name starts with a specific string. The function returns a boolean value. ```Calculation Manager [DTP_Start]=@STARTSWITH([Mbr1],[String1]) ``` -------------------------------- ### Get Scenario Planning Range Information Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/scenarios.html Use these expressions to retrieve the start and end years and months for a given scenario. Ensure the scenario name is enclosed in double quotes. ```Calculation Manager [[getStartYear("ScenarioName")]] ``` ```Calculation Manager [[getEndYear("ScenarioName")]] ``` ```Calculation Manager [[getStartMonth("ScenarioName")]] ``` ```Calculation Manager [[getEndMonth("ScenarioName")]] ``` -------------------------------- ### Using @Length to Get String Length Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/length.html This example demonstrates how to use the @Length function to calculate the length of a string prompt. The result is stored in a numeric prompt. ```Calc [Len1]=@LENGTH([String1]) ``` -------------------------------- ### Example Usage of CalcMgrGetStringFormattedDateTime Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/calc_mgr_get_string_formatted_date_time.html This example demonstrates how to use the CalcMgrGetStringFormattedDateTime function with a specific date and format. The output will be in YYYYMMddHHmmss format. ```Calculation Manager @CalcMgrGetFormattedDate(12302014, "MMddyyyyHHmmss") ``` -------------------------------- ### Inclusive Dependency Example Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/dependency.html Demonstrates the 'Inclusive' mode of the @DEPENDENCY function. It returns members from Input 1 that have corresponding members specified in Input 2 across the same dimensions. ```Calculation Manager [cd_mr_i1]=@DEPENDENCY([CD1],"Inclusive",[POV]) ``` -------------------------------- ### @CalcMgrStartsWith Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/calc_mgr_starts.with.html Tests if a given text string starts with a specified prefix. This function is part of the Calculation Manager's common CDF (Calculation Definition Functions) for string manipulation. ```APIDOC ## @CalcMgrStartsWith(text, prefix) ### Description Tests if this string starts with the specified prefix. ### Syntax `Java Class: com.hyperion.calcmgr.common.cdf.StringFunctions.startsWith(String,String)` `CDF Spec: @CalcMgrStartsWith(text, prefix)` ### Parameters #### Arguments - **text** (String) - The string to check. - **prefix** (String) - The prefix to look for at the beginning of the text. ``` -------------------------------- ### CrossRef Function Example - Output Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/crossref_accountname_prefix.html The resulting script after the CrossRef function is applied, showing prefixed dimension names and the specified account. ```Calculation Manager FIX (Aug, Actual, Working, FY15, P_000, "112") "110" = "BegBalance"->"No HSP_View"->"No Scenario"->"No Version"->"No Entity"->"No Product"->"5800"; ENDFIX ``` -------------------------------- ### Using @TOMDX with False parameters Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/tomdx.html This example shows the @TOMDX function with all optional parameters set to 'false', producing a simpler MDX output. ```mdx [MDX_function2]=@TOMDX(@UNION([MR],[MR2]),"false","false","false") ``` -------------------------------- ### Example of @Trim Function Input Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/trim.html Demonstrates a string with leading and trailing spaces before being processed by the @Trim function. The original string is 'This is a test of leading and trailing spaces'. ```Text String1 = this is a test of leading and trailing spaces ``` -------------------------------- ### Example URL Parameters for Drill Through Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/drill_through.html When defining XML content for a drill-through URL, use parameters from the TDATASEG table enclosed in '$'. Parameters are separated by '&'. ```text LEDGER_ID=$ATTR1$&GL_PERIOD=$ATTR2$ ``` -------------------------------- ### Using @TOMDX with True parameters Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/tomdx.html This example demonstrates the @TOMDX function with all optional parameters set to 'true', resulting in a complex MDX expression with filtering and crossjoins. ```mdx [MDX_function1]=@TOMDX(@UNION([MR],[MR2]),"true","true","true") ``` -------------------------------- ### @ReplaceAll Example with Specific Values Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/replaceall.html Illustrates the output of the @REPLACEALL function with concrete parameter values. The function replaces all instances of 'Test' with 'XYZ' in the provided string, resulting in a modified string. ```Calculation Manager This is a XYZ of a XYZing string for one XYZ and two XYZ ``` -------------------------------- ### Example Essbase Member Specification for Drillable Regions Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/drill_through.html Define drillable regions using Essbase member-set calculation language. This example specifies all eastern states except New York, for months of Qtr1. ```essbase @REMOVE(@DESCENDANTS("Eastern Region"), "New York"), @CHILDREN(Qtr1) ``` -------------------------------- ### Specifying HTTP Methods for Drill Through URL Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/drill_through.html You can specify the request-response method for the drill URL. If no method is specified, GET is assumed. ```text GET@http://www.oracle.com/ ``` ```text POST@http://www.oracle.com/ ``` -------------------------------- ### Using @FINDFIRST to Find a Substring Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/findfirst.html This example demonstrates how to use the @FINDFIRST function to extract the first sequence of two digits followed by a space from a password prompt. The IgnoreCase parameter is set to true. ```Calculation Manager [FINDF_PW_T]=@FINDFIRST([PW],[FindF_String_PW],"true") ``` -------------------------------- ### Using @EVALUATE for Addition Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/evaluate.html This example demonstrates how to use the @EVALUATE function to add two numeric design-time prompts. Ensure the target DTP is of type numeric and not a checked prompt. ```Calculation Manager [Eval_num_add]=@EVALUATE([num1], "+",[num2]) ``` -------------------------------- ### Using @COMPLIMENT with Cross Dimensions Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/compliment.html This example shows the application of the @COMPLIMENT function with cross dimensions. The DTP must be of type cross dimension and not a checked prompt. ```Calculation Manager [DTP_CD]=@COMPLIMENT([CD1],[CD2]) ``` -------------------------------- ### Using @MEMBERLEVEL Function Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/memberlevel.html This example demonstrates how to use the @MEMBERLEVEL function to retrieve the level of a member. Ensure the target DTP is numeric and not a checked prompt, and the source member DTP is a checked prompt. ```Calculation Manager [MBRLEV_MBR]=@MEMBERLEVEL([member]) ``` -------------------------------- ### FIX Statement with Module and Run-Time Prompt Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/scenarios.html This syntax uses a run-time prompt for the scenario and retrieves module-specific start and end years. Ensure the module name is correctly specified. ```EPM Automate FIX({rtpScenario}, [[PlanningFunctions.getModuleStartYear("CAPITAL",{rtpScenario})]]: [[PlanningFunctions.getModuleEndYear("CAPITAL",{rtpScenario})]] , "Jan" : "Dec") FIX(OEP_Working, P_000, "111") "5800" = 5500; ENDFIX ENDFIX ``` ```EPM Automate FIX("OEP_Plan", "FY18" : "FY22", "Jan" : "Dec") FIX(OEP_Working, P_000, "111") "5800" = 5500; ENDFIX ENDFIX ``` -------------------------------- ### Using @COMPLIMENT with Member Ranges Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/compliment.html This example demonstrates how to use the @COMPLIMENT function with member ranges. Ensure that the DTP assigned is of type member range and not a checked prompt. ```Calculation Manager [DTP_MR]=@COMPLIMENT([MR1],[MR2]) ``` -------------------------------- ### Using @ReplaceFirst Function Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/replacefirst.html This example demonstrates how to use the @ReplaceFirst function to replace the first occurrence of 'Test' with 'XYZ' in a given string. Ensure that the parameters are DTPs of type string. ```Calculation Manager [ReplaceFirst_Str]=@REPLACEFIRST([String1],[Rep_String],[new_String]) ``` -------------------------------- ### FIX Statement with Conditional Logic Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/scenarios.html This example shows a FIX statement with conditional logic using `IF` and `ELSEIF` based on the `isPlanStartYearSameAsCurrentFiscalYear` function. The outcome depends on the function's return value (0 or 1). ```EPM Automate FIX("OEP_Plan","OEP_Working",FY20:FY24) "Bonus" ( IF([[PlanningFunctions.isPlanStartYearSameAsCurrentFiscalYear ("Workspace")]] == 1) "Bonus" = "Salary" * 0.2; ELSEIF([[PlanningFunctions.isPlanStartYearSameAsCurrentFiscalYear ("Workforce")]] == 0) "Bonus" = "Salary" * 0.3; ) ENDFIX ``` ```EPM Automate FIX("OEP_Plan","OEP_Working", FY20:FY24) "Bonus" ( IF(0 == 1) "Bonus" = "Salary" * 0.2; ELSEIF(0 == 0) "Bonus" = "Salary" * 0.3; ) ENDFIX ``` -------------------------------- ### Using @FINDLAST Function Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/findlast.html This example demonstrates how to use the @FINDLAST function to extract the last sequence of two digits followed by a space from a password DTP. The IgnoreCase parameter is set to 'true'. ```Calculation Manager [FINDL_PW_T]= @FINDLAST([PW],[FindL_String_PW],"true") ``` -------------------------------- ### Use Runtime Prompts for Dynamic Rule Execution Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/best_practices_for_designing_business_rules.html Employ run-time prompts instead of creating multiple rules with similar logic to reduce maintenance overhead. ```essbase-bace Use run-time prompts instead of creating multiple rules with the same underlying logic ``` -------------------------------- ### Block Creation Strategy Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/best_practices_for_designing_business_rules.html Prefer Datacopy or Sparse Member assignment for block creation. Use @createblockoneq and @createblock sparingly within limited Fix statements. ```essbase-bace @createblockoneq ``` ```essbase-bace @createblock ``` -------------------------------- ### Initial Business Rule Logic Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/optimizing_example_business_rule.html This is the initial business rule logic before optimization. It calculates YTD accounts and aggregates values through Product and Entity dimensions without specific fixes for lower levels. ```Calculation Manager CALCULATION "4110_UTD" = "4110" * "FY19"; "4120_YTD" = "4120" * "FY19"; "4130_YTD" = "4130" * "FY19"; "4140_YTD" = "4140" * "FY19"; "4150_YTD" = "4150" * "FY19"; AGG ("Product", "Entity"); ENDCALC ``` -------------------------------- ### @CalcMgrExcelCUMIPMT Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/calc_mgr_excel_cumipmt.html Returns the cumulative interest paid on a loan between the specified start and end periods. ```APIDOC ## @CalcMgrExcelCUMIPMT ### Description Returns the cumulative interest paid on a loan between `start_period` and `end_period`. ### Syntax `Java Class: com.hyperion.calcmgr.common.excel.cdf.ExcelFinancialFunctions.CUMIPMT(double,double,double,double,double,double)` `CDF Spec: @CalcMgrExcelCUMIPMT(rate, nper, pv, start_period, end_period, type)` ### Parameters - **rate** (double) - The interest rate per period. - **nper** (double) - The total number of payment periods. - **pv** (double) - The present value, or the total amount that a series of future payments is worth now. - **start_period** (double) - The first period in the calculation. - **end_period** (double) - The last period in the calculation. - **type** (double) - The number 0 or 1 that indicates when payments are due. 0 = end of the period, 1 = beginning of the period. ``` -------------------------------- ### Using @ReplaceAll Function Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/replaceall.html This example demonstrates the syntax and application of the @REPLACEALL function. It shows how to assign the result to a DTP of type string. Ensure that the DTPs used for parameters are of type string and are checked prompts. ```Calculation Manager [ReplaceAll_Str]=@REPLACEALL([String1],[Rep_String],[new_String]) ``` -------------------------------- ### @CalcMgrExcelCUMPRINC Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/calc_mgr_excel_cumprinc.html Returns the cumulative principal paid on a loan between the start period and the end period. ```APIDOC ## @CalcMgrExcelCUMPRINC(rate, per, nper, pv, fv, type) ### Description Returns the cumulative principal paid on a loan between the start period and the end period. ### Syntax `Java Class: com.hyperion.calcmgr.common.excel.cdf.ExcelFinancialFunctions.CUMPRINC(double,double,double,double,double,double)` `CDF Spec: @CalcMgrExcelCUMPRINC(rate, per, nper, pv, fv, type)` ### Parameters - **rate** (double) - The interest rate per period. - **per** (double) - The period for which you want to find the principal. Must be in the same units as `nper`. - **nper** (double) - The total number of payment periods. - **pv** (double) - The present value, or the total value that a series of future payments is worth now. - **fv** (double) - The future value, or a cash balance you want to attain after the last payment is made. If omitted, fv is assumed to be 0. - **type** (double) - The number 0 or 1 and indicates when payments are due. 0 = end of the period, 1 = beginning of the period. ``` -------------------------------- ### Using Smart List Entry in a Formula Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/smartlists.html This example shows how to reference a Smart List entry within a formula expression. The Smart List entry 'Retail' from the 'Channel' Smart List is used. Calculation Manager replaces the Smart List entry with its ID (e.g., 2) in the actual calculation and database storage. ```Calculation Manager FIX (Mar, Actual, Working, FY15, P_000, "111") "Product Channel" =[[Channel.Retail]] ; ENDFIX ``` ```Calculation Manager FIX (Mar, Actual, Working, FY15, P_000, "111") "Product Channel" =2 ; ENDFIX ``` -------------------------------- ### @CalcMgrLastIndexOf Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/calc_mgr_last_index_of.html Returns the index within this string of the last occurrence of the specified substring, searching backwards and starting at the specified index. ```APIDOC ## @CalcMgrLastIndexOf ### Description Returns the index within this string of the last occurrence of the specified substring, searching backwards and starting at the specified index. ### Syntax `Java Class: com.hyperion.calcmgr.common.cdf.StringFunctions.lastIndexOf(String,String,int)` `CDF Spec: @CalcMgrLastIndexOf(text,searchText,begIndex)` ### Parameters #### CDF Spec Parameters - **text** (String) - The string to search within. - **searchText** (String) - The substring to search for. - **begIndex** (int) - The index to start searching backwards from. ``` -------------------------------- ### @CalcMgrIsLeapYear Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/calc_mgr_is_leap_year.html Determines whether the given date is a leap year. The date must be in YYYYMMDD or YYYY format (for example: 20140101 or 2014). ```APIDOC ## @CalcMgrIsLeapYear(date) ### Description Determines whether the given date is a leap year. ### Parameters #### Path Parameters - **date** (int) - Required - The date to check, in YYYYMMDD or YYYY format. ``` -------------------------------- ### Using NumberOfPeriodsInYear and NumberOfYears in Calculation Manager Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/number_of_periods_in_the_year.html Demonstrates how to use `NumberOfPeriodsInYear` and `NumberOfYears` to set values in a Calculation Manager script. The first code block shows the syntax with the functions, and the second shows the resulting script with the resolved values. ```Calculation Manager FIX (Mar, Actual, Working, P_000, "6100", FY15) "120"=[[NumberOfPeriodsInYear]]; "120"=[[NumberOfYears]]; ENDFIX ``` ```Calculation Manager FIX (Mar, Actual, Working, P_000, "6100", FY15) "120"=12; "120"=9; ENDFIX ``` -------------------------------- ### Count Unspecified Dimensions - @OpenDimCount Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/opendimcount.html Use @OpenDimCount to return the number of dimensions for which a member was not specified. This example counts all unspecified dimensions. ```Calculation Manager [DTP1]=@OPENDIMCOUNT([MR1]) ``` -------------------------------- ### Get Dimension with Single Cube in Groovy Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/resolving_groovy_business_rule_validation_issues.html If a dimension specific to a single cube is needed, pass the Cube object directly to the getDimension method. ```Groovy Cube cube = application.getCube("Plan1") Dimension dimScenario = operation.application.getDimension("Scenario", cube) ``` -------------------------------- ### Get Year from Date in Groovy Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/resolving_groovy_business_rule_validation_issues.html Use Calendar instance to extract the year from a Date object, as the direct 'getAt(int)' method is deprecated. ```Groovy Calendar calendar = Calendar.getInstance() calendar.setTime(rtps.endDate.getDataAsDate()) int year = calendar.get(Calendar.YEAR) ``` -------------------------------- ### Use Templates for Reusable Business Logic Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/best_practices_for_designing_business_rules.html Employ templates to break down and reuse business logic. Ensure the combining rule has a proper outer Fix and manages movement within smaller pieces. ```essbase-bace templates should not be fully functioning rules with Fix, EndFix ``` -------------------------------- ### Using @SUBSTRING Function Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/substring.html Assigns a substring to a DTP. Ensure the DTPs used for string, start index, and end index are correctly defined and populated. ```Calculation Manager [SUBSTRING_Str]=@SUBSTRING([String1],[start_ind],[end_ind]) ``` -------------------------------- ### @CalcMgrIndexOf Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/calc_mgr_index_of.html Returns the index within this string of the first occurrence of the specified substring, starting at the specified index. If -1 is used for the index, the entire string is searched. ```APIDOC ## @CalcMgrIndexOf(text, searchText, begIndex) ### Description Returns the index within this string of the first occurrence of the specified substring, starting at the specified index. ### Syntax `com.hyperion.calcmgr.common.cdf.StringFunctions.indexOf(String text, String searchText, int begIndex)` ### Parameters #### Path Parameters - **text** (String) - Required - The string to search within. - **searchText** (String) - Required - The substring to search for. - **begIndex** (int) - Required - The starting index for the search. Use -1 to search the entire string. ### Note If you use -1 for the index in either `@CalcMgrIndexOf` or `@CalcMgrLastIndexOf`, the entire string is searched. ``` -------------------------------- ### Using @SmartListFromValue Function Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/smartlistfromvalue.html This example demonstrates how to use the @SmartListFromValue function to retrieve a Smart List member's name based on its ID. Ensure the parameters are correctly defined as DTPs of the appropriate types. ```Calculation Manager [sl_val_Str]=@SmartListFromValue([String1],[value_ST]) ``` -------------------------------- ### Verify Script Header Format Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/resolving_groovy_business_rule_validation_issues.html Ensure the first line of your Groovy script is formatted correctly, either as '/*RTPS: */' for scripts without RTPs or with RTPs listed within the comment. ```Groovy /*RTPS: */ ``` ```Groovy /*RTPS: {selectedDepartment} {hireDate} {newEmployeeName} */ ``` -------------------------------- ### Using @ISCHILD Function Source: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/ecalc/ischild.html This example demonstrates how to use the @ISCHILD function to check if 'Jan' is a child of 'Q1'. The result is stored in a boolean DTP named [True_False]. ```Calculation Manager [True_False]=@ISCHILD([Prt_Mbr],[mbr]) ```