SAP SuccessFactors Incentive Management uses Classification Data to organize "master data" such as products, customers, geographic regions, and any other data that you need to correctly calculate incentive compensation. If you've been through any of the standard training, we focus on the use of this data in Territories used to allocate credit for a Transaction based on, for example, sale of a type of product in a region.
However, Classification data can be used for so much more! After all, if you're already pulling your product data from your ERP, you can also pull any other information about that product, such as the price, cost, net margin, or anything else that can help calculate compensation. In this article, I'll show a few basic use cases and show how you can reference this Classification data in a Credit Rule to bring your rule-writing to a whole new level. After the two examples, I'll give some pros and cons around the use of this method, and present a few alternatives.
Let's start with the basic mechanism. The function you'll be using is "Transaction.Classifier( )". What this does is tell the system to find the matching Classifier for any given Transaction. When you use this function, you'll be prompted to select which hierarchy you want to use. That will return a single record, so from there, you just request a specific field.
You can use this function directly in a Credit Rule, but I'd recommend you create a Formula, as I do in the examples below, so you can re-use the same expression in multiple rules.
Scenario #1. For each of 20,000 products, once a credit is allocated to the payee, the value of the credit will be 5% the gross margin. Gross margin is calculated by subtracting the cost of the product from the price.
Here's an example of a product we've already uploaded to our Product Hierarchy. As it happens, the Product record already has fields for Price and Cost (we could add other fields if we need to, but that's a topic for another day).
Category Hierarchy: SERVICES HIERARCHY
Product ID: L4000
Product Name: License 4000 Pack
Price: $10,000
Cost: $3,000
What we need to do is subtract the cost from the price to calculate the gross margin.
Here's how you would do this using a Formula. I'll use the Window Editor because it's a little easier, but if you're comfortable with the syntax, you can build the expression right in the Expression field.
Note: You can always use an asterix (*) as a wild card if you're not sure which hierarchies are available.
So far, so good! The next step is to tell the Formula which field in the Classifier you want to use. In this case we're starting with the Price.
Transaction.Classifier(SERVICES HIERARCHY).Price - Transaction.Classifier(SERVICES HIERARCHY).Cost
Now, let's take a look at how you could use this in a Credit Rule!
The only thing you really need to change is the Amount field, which can be found in the Credit Amount section. If you're using the Wizard, this amount looks like this.
What we did is just take the Formula and multiply it by the commission amount. Now, in the real world, you probably wouldn't hard code the 5%; a better practice would be to use a Fixed Value, but I wanted to show this in a way that's easy to interpret.
Here's a helpful hint: You can wrap this expression in another function to take care of a few contingencies. For example:
Convert Null to Value ( F_Gross_Margin , $0.00 )
If Then Else ( F_Gross_Margin < $0.00 , $0.00 , F_Gross_Margin )
Not too hard, right? Let's take a look at a different scenario, this one using the Postal Codes hierarchy.
Scenario #2. For each of 50,000 zip codes, our client needs to apply a different multiplier to the value of the Credit. The amount of the multiplier is stored in a Generic Attribute called GN1:Postal Code Multiplier.
Again in the Credit Rule, we want to apply the multiplier percentage to the Transaction.Value field. For example, let's say the value of the Transaction is $150, and the value of GN1:Multiplier is 110%. The value of the credit would be 150 * 110%, or $165.
There are several ways to do this, but again, if you can load those multipliers with their respective zip codes during a regular data load, using the Transaction.Classifer() function is an elegant and scalable solution.
Transaction.Value * Transaction.Classifier(Postal Code Tree).GN1:Postal Code Multiplieriplier
Again, if you're concerned about getting a null value if one of your Postal Codes isn't populated, you can wrap this Formula in a "Convert Null to Value ( )" function so it reverts to 100%.
Transaction.Value * Convert Null to Value ( Transaction.Classifier(Postal Code Tree).GN1:Postal Code Multiplier , 100% )
Transaction.Classifier() acts like a big lookup, but instead of using a Lookup Table, it uses the entire Classification Hierarchy as the table. The match field is whatever you specified in the Classification Rule.
Could you use a Lookup Table instead? Yes! But there are advantages and disadvantages to both methods.
Advantages to using Transaction.Classifier():
Here are some scenarios in which you might consider using a Lookup Table instead of a Classification Hierarchy:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
5 | |
3 | |
3 | |
2 | |
2 | |
2 | |
2 | |
1 | |
1 | |
1 |