SAP Commissions : 5 Tips to Improve Pipeline Runtime
What is Runtime Performance?
To discuss any type of application performance, it’s important to define what we mean.
Runtime performance is how your application performs when it is running, as opposed to be loading. This article teaches you the tips to improve and how to avoid long running pipeline job to analyze your runtime performance.
Let’s look at a few simple ways that suggests can improve each of these aspects.
Tip 1: Avoid writing Direct Conditions in Rules
As you know, In every rule there is a condition tab to filter the data or filter the results from the previous rule calculated (calling PMR or SMR) .. so avoid writing the direct conditions as shown in below example
Example : A Rule which is written direct condition referencing all the reference types directly which leads to increase the performance of pipeline runtime calculation.
Write all your condition logic in Formula and that would detect automatically the Rule Usage where this Formula as it be reference. By doing this, pipeline will calculate even before the allocate stage .. Go to your rule and add the Formula to the condition tab. In this example : Formula is called within Formula which would be faster way of calculating during the pipeline runtime
Tip 2: Avoid enabling GA, EA & RA fields
you would be wondering what is EA & RA and where it’s been used ?
GA = Generic Attributes , EA = Extended Attributes and RA = Reporting Attributes
Its been used in all the rule output tab – Advanced options – Generic columns
In every rule, Generic columns contains below dropdown
- Text ( String field)
- Dates (Date field)
- Numbers (Number field)
- Booleans (True/False field)
Sometimes rule developer opens this fields through Settings – Customization for Participant, Position, Sales Order, Sales Transaction workspace to populate some values for their dependency calculation or for Dashboard purpose or for Reporting Purpose.
Open those fields if there is a necessary values needs to be shown only for an end user. Don’t open the fields if its unused which leads performance.
Before you enable any EA or RA fields, there is already warning dialog appears.
Tip 3: Territory Based Calculation
All your Direct & Indirect rule, there is a way to filter the data based on Territory which requires input from category and classifier data. Using Territory will improve your pipeline runtime which calculates during Classify stage.
Try to reference the Territory Variable or Territory rule element in your Direct, Indirect rule for improving the pipeline runtime.
An example of Territory Variable is referenced with Territory referenced in Rolled Transaction Rule.
Tip 4: Enable On-demand Processing
If Customers with over 10,000 positions will improve calculation performance by configuring the calculation to perform on-demand position processing.
In on-demand mode, Commissions loads each position as it is needed by the calculation, instead of loading all positions in the system (regardless of whether or not the positions are active). By loading positions on demand, Commissions can process large numbers of positions in calculation runs.
On-demand processing is available only for calculation runs in full or incremental mode.
To specify on-demand:
Click System Preferences under Preferences section in the Manage Setup card.
Select the Calculation tab.
Enable On Demand Position Processing.
Log out and Log into SAP Commissions Application.
Your subsequent calculation runs will use on-demand by default.
💡On-demand position processing does not currently apply to the Per-Position calculation mode.
Tip 5: Detect costly Performance impacting rule via Pipeline Logs
Run a pipeline job with logging option selecting Performance Statisics to detect all your query and rule performance runtime to understand better which rule is costly.
Select a tracing level for the log files. The tracing level controls the level of detail that Commissions writes to the log files. You can check the Enable SQL Logging option to insert SQL statements into the calculation log.
Once the calculation is executed, you can view the Rule Profile and Query Profile metrics.
The run profile and query profile functionalities currently display results only for the following stages: compensate and pay, compensate, allocate, and reward.
Go to TCMP.CS_PREFERENCES analyze each and every row
Go to TCMP.CS_WORKERCONFIG analyze each and every row
Its gives you Knowing where to begin when facing performance issues in your tenant
Hopefully these practical examples shown above where performance issues can hide and help you get started.
Before you make any changes or to improve your pipeline runtime significantly – Kindly contact DBA Administrators from SAP Technical Support team
This is a good post Yoga. Certain other points . Its critical to understand the Future state of a SPM Implementation and NFR. That would give clarity on the Volume the system will have to deal with. This should be a key driver for the proposed Architecture and Design. If we get things right here, then many bottlenecks could be avoided.
Another pointer is using Nested Objects. Nested Objects like referring other calculations or objects from LT cells can be quite detrimental to Pipeline Performance.
Tune the Stagehooks. Stagehooks if not tuned well will add to the pipeline run times.
Thanks Krishnan Ramany for providing your feedback !!
some of your statements are valid & true to know before the Implementation but it all depends on customer by customer. Benchmarking on the data volume set is something Product team can provide that info before anybody start the project with pipeline runtime as average time for completion.
Lookup table with different cell versions, also referenced other rule elements will slow down would be 7th Tip in my sense but you're absolutely correct
Related to Stagehooks is something customer have it as custom process which I would not recommend it in my 5 Tips for improvement. It would be 10th tip for my recommendation 🙂
Good post Yoga !! This will surely help customers.
You can also add pointers about Circular relationships in Positions which can lead to long running Island Analysis .
Thanks Nikhil Prachand for providing the pointers .. 🙂
I will try and include it in coming days and buzz you here once more.
Good information Yogananda Muthaiah . This will surely help customers.
Thanks Teja Thogaru for providing your valuable feedback.. 🙂 !!
This is very helpful.
However, i do have some questions around Tip#5 where you have mentioned to run pipeline with logging so troubleshooting is easier.
In the 'Rule Profile' section under the Pipeline Details, what does Total Runtime, Minimum runtime, Maximum Runtime and Number of Evaluations refer to? what is unit of measurement, it says ms, does it mean milliseconds?
In the 'Rule Profile' section under the Pipeline Details,
what does Total Runtime, Minimum runtime, Maximum Runtime and Number of Evaluations refer to?
Each rule which evalutes the final result by looking into condition and other elements which is the total runtime. Maximum runtime and Number of threads in each rule to look for sub rule.
what is unit of measurement, it says ms, does it mean milliseconds?
yes on milliseconds