Hi Folks
I am writing this blog to share a personal experience working on an assignment where I had extensively leveraged the following two functionalities in the goal management module -
- Calculator Rules
- Metric Lookup Tables
I feel this will help couple of consultants who are new to this and are looking for some guidance on this topic.
Problem Statement : To create a goal plan which should have the provision to capture numeric quarterly targets and achievements against a goal, which should then be used to calculate the final score (
Calculated Manager Annual Achievement), on a scale of 100, up to a maximum of 120 for that goal.
Following other points to be considered -
- Achievement Type could be "Less is Better" or "More is Better" (for example my goal could be such that if achievement is more than the target, then it is considered as better, like in the case of sales targets. Alternatively, for people in customer service may have a goal of reducing the monthly complaints to 5, now if they reduce it to 2, then that will be consider as better, hence lesser the achievement better the performance)
- Calculation Type could be Average (average of Q1, Q2, Q3 & Q4 targets and achievements), Summation (summation of Q1, Q2, Q3 & Q4 targets and achievements) and Milestone (only the Q4 target and achievement to be considered)
- Based on the Achievement Type, the Weightage Factor will either be calculated as (Total Target/Total Achievement) or (Total Achievement/Total Target).
- Based on the Calculation Type, Total Target and Total Annual Achievement to calculated accordingly - summation, average, only the Q4 target and achievement value.
- Calculated Manager Annual Achievement will be 100 times the Weightage Factor and cannot go beyond the limits of 0 - 120, e.g. if Weightage Factor is coming out to be 1.3, it should just be multiplied directly by 100.
Solution Design: The design consisted of a combination of standard and custom goal plan fields. Following fields were used -
S.No. |
Field Name |
Field ID |
1. |
Goal Description |
name |
2. |
Weightage |
weight |
3. |
Unit of Measurement |
measure |
4. |
Achievement Type
- Less is Better
- More is Better
|
customlm |
5. |
Calculation Type
- Average
- Summation
- Milestone
|
customavg |
6. |
Q1 Target |
target |
7. |
Q2 Target |
actual |
8. |
Q3 Target |
target3 |
9. |
Q4 Target |
target4 |
10. |
Total Target |
total |
11. |
Q1 Achievement (Manager) |
managerq1 |
12. |
Q2 Achievement (Manager) |
managerq2 |
13. |
Q3 Achievement (Manager) |
managerq3 |
14. |
Q4 Achievement (Manager) |
managerq4 |
15. |
Manager Total Annual Achievement |
managerannual |
16. |
Weightage Factor |
factor |
17. |
Calculated Manager Annual Achievement (Out of 100) |
calcscore |
18. |
Weighted Performance Index |
actual-achievement |
19. |
Rating |
rating |
*fields highlighted in red were supposed to be auto-populated.
Following calculator rules were used -
<calculator id="rule1"><![CDATA[customavg=="Summation"]]></calculator>
<calculator id="rule2"><![CDATA[actual+target+target3+target4+0.001]]></calculator>
<calculator id="rule3"><![CDATA[customavg=="Average"]]></calculator>
<calculator id="rule4"><![CDATA[((actual+target+target3+target4)/4)+0.001]]></calculator>
<calculator id="rule5"><![CDATA[managerq1+managerq2+managerq3+managerq4+0.001]]></calculator>
<calculator id="rule7"><![CDATA[customlm=="Less"]]></calculator>
<calculator id="rule8"><![CDATA[customlm=="More"]]></calculator>
<calculator id="rule9"><![CDATA[total/managerannual]]></calculator>
<calculator id="rule10"><![CDATA[managerannual/total]]></calculator>
<calculator id="rule11"><![CDATA[factor<="1.2"]]></calculator>
<calculator id="rule12"><![CDATA[factor>"1.2"]]></calculator>
<calculator id="rule13"><![CDATA[factor*100]]></calculator>
<calculator id="rule14"><![CDATA[1.2*100]]></calculator>
<calculator id="rule15"><![CDATA[calcscore]]></calculator>
<calculator id="rule16"><![CDATA[((managerq1+managerq2+managerq3+managerq4)/4)+0.001]]></calculator>
<calculator id="rule17"><![CDATA[customavg=="custommilestone"]]></calculator>
<calculator id="rule18"><![CDATA[(target4/1)+0.001]]></calculator>
<calculator id="rule19"><![CDATA[(managerq4/1)+0.001]]></calculator>
<calculator id="rule20"><![CDATA[factor<="0"]]></calculator>
<calculator id="rule21"><![CDATA[0*100]]>
</calculator>
*in rule 2, rule 4 and rule 5, a factor of "0.001" has been added so that in where the total target or achievement value is "0", the system does not give "undefined" error while calculating the % of achievement.
Following auto-population rules were used -
<auto-population field="total" mode="auto" calc-type="col">
<rule>
<rule-condition calculator-id="rule1"></rule-condition>
<calculated-result calculator-id="rule2"/>
</rule>
<rule>
<rule-condition calculator-id="rule3"></rule-condition>
<calculated-result calculator-id="rule4"/>
</rule>
<rule>
<rule-condition calculator-id="rule17"></rule-condition>
<calculated-result calculator-id="rule18"/>
</rule>
</auto-population>
<auto-population field="managerannual" mode="auto" calc-type="col">
<rule>
<rule-condition calculator-id="rule1"></rule-condition>
<calculated-result calculator-id="rule5"/>
</rule>
<rule>
<rule-condition calculator-id="rule3"></rule-condition>
<calculated-result calculator-id="rule16"/>
</rule>
<rule>
<rule-condition calculator-id="rule17"></rule-condition>
<calculated-result calculator-id="rule19"/>
</rule>
</auto-population>
<auto-population field="factor" mode="auto" calc-type="col">
<rule>
<rule-condition calculator-id="rule7"></rule-condition>
<calculated-result calculator-id="rule9"/>
</rule>
<rule>
<rule-condition calculator-id="rule8"></rule-condition>
<calculated-result calculator-id="rule10"/>
</rule>
</auto-population>
<auto-population field="calcscore" mode="auto" calc-type="col">
<rule>
<rule-condition calculator-id="rule11"></rule-condition>
<calculated-result calculator-id="rule13"/>
</rule>
<rule>
<rule-condition calculator-id="rule12"></rule-condition>
<calculated-result calculator-id="rule14"/>
</rule>
<rule>
<rule-condition calculator-id="rule20"></rule-condition>
<calculated-result calculator-id="rule21"/>
</rule>
</auto-population>
<auto-population field="actual-achievement" mode="auto" calc-type="col">
<rule>
<rule-condition calculator-id="rule11"></rule-condition>
<calculated-result calculator-id="rule13"/>
</rule>
<rule>
<rule-condition calculator-id="rule20"></rule-condition>
<calculated-result calculator-id="rule21"/>
</rule>
<rule>
<rule-condition calculator-id="rule12"></rule-condition>
<calculated-result calculator-id="rule14"/>
</rule>
</auto-population>
<auto-population field="rating" mode="auto" calc-type="col">
<rule>
<calculated-result calculator-id="GM_MLT_BASED_RATING_CALCULATOR"/>
</rule>
</auto-population>
With the help of these auto-population rules and the metric look-up table, the final score was pushed to the performance management form. This score could go up to a maximum of 120. Then on the PM form, scale adjusted calculation was enabled to convert the score in to a rating point on a scale of 1-6.
I hope a lot of you working on the calculator logics for the very first time can take insights from this, while designing your respective calculator and auto-population rules.
Do give it a read and share your thoughts in the comment section whether you liked the content or not and follow my profile for more content related to PMGM and SPCDP.
You can also follow the tags mentioned in this blog post to read more content about similar topics and follow the
SAP SuccessFactors Community Page to read more about other topics in SuccessFactors.
Regards
Adeeb