Human Capital Management Blogs by Members
Gain valuable knowledge and tips on SAP SuccessFactors HCM suite and human capital management market from member blog posts. Share your insights with a post of your own.
cancel
Showing results for 
Search instead for 
Did you mean: 
venkatKrishna1
Active Participant
We are all aware of having less information on how to build custom statements in variable pay. So, I would like to present my experience on VP custom combined statements.



What is covered:



  • Variable declaration of commonly asked fields that are not available in the standard statement

  • A couple of XSL functions.


What is not covered:

  • Design Principle

  • HTML and CSS details

  • Any other statement configuration or optimization

  • Lookup Tables


Tools required for development:



  •  Text Editor of your choice - I use Notepad+ +


Prerequisites:



  • Knowledge on SuccessFactors Variable Pay (at least as an end-user)

  • Intermediate to advanced HTML Knowledge (especially Tables)

  • Some knowledge of XSL functions


Target Audience



  • Experienced SuccessFactors Variable Pay Consultants

  • End Users


Requirements that are covered:

  • Multiple Goals Section Weightages with multiple assignments

  • Goal result Payout Amount of each Goal section

  • PM ratings

  • Individual Section amount

  • Sum of all Sections Achievements

  • Excluding of Goal section with zero weightage.

  • Populating Statement details based on Assignment count.


 

  • Multiple Goals Section Weightages with multiple assignments:



Variable to Pick Section Weight:

In general, vp-section-weight tag will pick the section weightage from Worksheet, but the XSL variable is different based on each condition.

Condition 1:Only one Goal section:
<xsl:variable name="SectionWeight" select="vp-bonus- assignment/ vp-business-section/ vp-section-weight"/>

Condition 2: Multiple Goal sections
<xsl:variable name="SectionWeight" select="vp-bonus- assignment/ vp-business-section[1]/ vp-section-weight"/>

<xsl:variable name="SectionWeight" select="vp-bonus- assignment/ vp-business-section[2]/ vp-section-weight"/>

Condition 3: Multiple Assignments for Employee
<xsl:variable name="SectionWeight" select="vp-bonus- assignment[1]/ vp-business-section[1]/ vp-section-weight"/>

<xsl:variable name="SectionWeight" select="vp-bonus- assignment[2]/ vp-business-section[1]/ vp-section-weight"/>

Condition4: Combined statement
<xsl:variablename="SectionlWeight-300" select="./vp-total-payout-report[@formTemplateId='300']/vp-bonus-assignment[1]/vp-business-section[1]/vp-section-weight"/>

Printing Variable Value:
<xsl:value-ofselect="$SectionlWeight-300 * 100"/>%</td>

 

  • Goal result Payout Amount of each Goal section:



 

Variable to Pick first Section Payout Amount:
<xsl:variablename="GoalPayoutamount--300" select="sum(./vp-total-payout-report[@formTemplateId='300']/vp-bonus-assignment[1]/vp-bonus-payout-item-list[1]/vp-bonus-payout-item/vp-bonus-payout-item-goal-payout-amount)"/>

Note: In order to pick second Section Payout Amount,we need to replace vp-bonus-payout-item-list[1] with vp-bonus-payout-item-list[2]

Printing Variable Value:
<xsl:value-ofselect="format-number($GoalPayoutamount --300, $userLocaleSpecificMoneyFormat, $userLocaleSpecificDecimalFormatter)"/>


  • Performance forms ratings:


As we know, we have a configuration check to present PM ratings as 1) Numeric values or 2) rating labels or 3) Both Numeric – rating labels in worksheets. But in statements, the standard vp-form-rating tag allows only numeric values.

variable to pick PM ratings:
<xsl:variablename="ratingstring--300" select="./vp-total-payout-report[@formTemplateId='300']/vp-form-rating”/>

Printing Variable Value:
<xsl:value-ofselect="$ratingstring--300"/>

 

To achieve rating as a label or (ratings – label) in a statement then we have two possible ways:

Method 1:

·       Create a custom field and use VLOOK UP TABLEs to get the output based on actual ratings.

·       Use the above custom field in the Statement.

Variable to pick custom fields:
<xsl:variablename="ratingstring--300" select="./vp-total-payout-report[@formTemplateId='300']/vp-custom-data/vp-custom-field[@id='ratingstring']"/>

Method 2:

Use <Xsl:choose> functionality to pick the ratings as labels .

Variable to pick PM ratings as (Numeric + Label):
<xsl:choose>

<xsl:whentest="$ratingstring--300 = '5.0' ">

<b><xsl:value-ofselect="concat($ratingstring--300, ' ')"/>Extraordinary</b>

</xsl:when>

<xsl:whentest="$ratingstring--300 = '4.0' ">

<b><xsl:value-ofselect="concat($ratingstring--300, ' ')"/>Outstanding</b>

</xsl:when>

<xsl:whentest="$ratingstring--300 = '3.0' ">
<b><xsl:value-ofselect="concat($ratingstring--300, ' ')"/>Meets Expectations</b>

</xsl:when>

<xsl:whentest="$ratingstring--300 = '2.0' ">

<b><xsl:value-ofselect="concat($ratingstring--300, ' ')"/>Needs Development</b>

</xsl:when>

<xsl:whentest="$ratingstring--300 = '1.0 '">

<b><xsl:value-ofselect="concat($ratingstring--300, ' ')"/>Unsatisfactory</b>

</xsl:when>

<xsl:otherwise></xsl:otherwise></xsl:choose>


  • Individual section Amount:



 

  • Variable to Pick Individual Section Amount:


<xsl:variablename="SectionlIndAmount--300" select="./vp-total-payout-report[@formTemplateId='300']/vp-bonus-assignment[1]/vp-individual-section/vp-section-amt"/>

Printing Variable Value:
<xsl:value-ofselect="format-number($SectionlIndAmount--300, $userLocaleSpecificMoneyFormat, $userLocaleSpecificDecimalFormatter)"/></td>

 

·Sum of all sections amount:

Printing Variable Value:
<xsl:value-ofselect="format-number($SectionlIndAmount--300 +$GoalPayoutamount--300 +$GoalPayoutamount2--300+ $GoalPayoutamount3--300, $userLocaleSpecificMoneyFormat, $userLocaleSpecificDecimalFormatter)"/></td>

 

  • Excluding  zero weightage Goal sections:


For example, we have multiple sections in the worksheet, and we must hide in statements based on the weightage of the section. To achieve this, we need to use “IF” conditions in Statements.

Here is the sample code to hide if user section weight is equal to zero.
<xsl:iftest="$SectionlWeight--300 * 100 &gt; 0.0">

<tr>

<!-- Input your XSL Code Here à

</tr

</xsl:if>

Now it will populate the goal section in statements for those sections weightage is more than zero else it will be hidden.

  • Populating Statement details based on Assignment count:


It’s very common to the users having multiple assignments in an organization for a year and statement details need to be populated based on Assignment count.

EX: Employee A only one Assignment in 20/21 and Employee B having 3 Assignments in the same year 20/21, Now Employee A should see only 1 Assignment detail and Employee B should see all his 3 Assignment details in the statement.

To achieve this, we need to use the below XSL Variable to pick the count of Assignments for the user.
<xsl:variablename="count" select="count(./vp-total-payout-report[@formTemplateId='300']/vp-bonus-assignment)"/>

An above-mentioned variable gives us no. of Assignments then we need to use “IF” conditions in Statements to hide other assignments for users.
<xsl:iftest="$count = '1'">

<tr>

<!—Input XSL code here à

</tr>

</xsl:if>

 

Thank you for reading my blog, I hope this will help us to save a significant amount of time while building custom VP Statements for customers/clients.

Regards,
VenkatKrishnah
Professional Certified – PMGM|CDP|SP

 

 
10 Comments
ArijitSardar
Active Contributor
Excellent Information!
xavierlegarrec
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi venkatkrishnahh

Great blog ! following a discussion on the Compensation Partner Delivery Community forum over the past days, forwarding some information that can be helpful to many who are trying to build custom VarPay statements :

"If you would like to obtain the xml mapping for varpay data to create a statement :

  1. You have to load this template and load it into SAP, then launch it against completed varpay forms.
  2. These outputs are viewable in HTML ONLY so after launch, you’d have to ensure permissions are set to be able to view the generated extract from employee profile or from the comp form (if enabled).
  3. Even then, some of the mappings are vague and you’d need to compare the html output against completed forms to verify all the data aligns"

Hope it helps.

Also adding below some knowledge shared on the Partner Delivery Community forum recently :

https://www.linkedin.com/pulse/successfactors-custom-variable-pay-statement-mohit-mourya/
https://www.linkedin.com/pulse/mockup-successfactors-custom-compensation-statement-i-mohit-mourya/

0 Kudos
Hi xavierlegarrec

 

Can you please help me with this, what content should we load in the template & where should we load in SAP & how to launch the same for completed variable pay forms.

Regards,

Mohd Shahvez
xavierlegarrec
Product and Topic Expert
Product and Topic Expert
0 Kudos
Hi shavez

Unfortunately I don't build custom statements. We have a specific Custom Reporting team at SAP that builds them for customers.

All the best,

Xavier
CaroleLeGarrec1
Participant
0 Kudos
Hi venkatkrishnahh,

Many thanks for those informations. It is very helpful !

In my combined statement, I managed to display the goals payout amounts in the different assignments and the different business goals of my client but I can't get the amount for the individual goals. In your example the code is for the individual section amount, but I need to show the individual amount. I thaugth I could switch the individual section amount code by the individual amount id, but it looks like it does not want to be so easy.

Have you ever done this with the individual amount? if, yes, I would be so greatful to you if you could help me!

here a screenshot of the field I need to have in my combined statement : Many thanks


Have a nice day

Carole
swagatikapanda
Participant
0 Kudos

Hi Venkat,

Great article.

I am facing a peculiar issue in custom statements, and need help.

I have created 2 custom fields within the Business Goal section, and want to pull those fields to the custom statement (Green highlighted). This is basically the business percent and business amount after applying a custom modifier. Tried with below options, but nothing seem to work. I get NaN against the fields after publishing the letters.

Worksheet business config

swagatikapanda_2-1708948325835.png

 

Output in Statement is below, I want to display 102% and 6053.64 for the green highlighted fields. If I use the standard fields in the statement (like 90% and 5341.45), then I am able to fetch the data. So, seems like the issue is with the X-path expression for custom fields with in Business goal section.

swagatikapanda_1-1708948252029.png

 

X-Path

<xsl:for-each select="./sf-compensation[@formTemplateId='501']/comp-plan-entry/comp-varpay/vp-bonus-assignment/

option 1: vp-bonus-payout-item-list/vp-bonus-payout-item/customGoalAmount">

option 2: vp-bonus-payout-item-list/vp-bonus-payout-item/comp-custom-data/customModFactor

option 3: vp-bonus-payout-item-list/vp-bonus-payout-item/comp-custom-data/comp-custom-field[@id='customGoalAmount']

</xsl:for-each>

PS: Plz don't confuse this with Team section, this is actually Business goal, my client renamed Business to team.

 

Thanks,

Swagatika

@venkatKrishna1 @xavierlegarrec 

 

 

swagatikapanda
Participant
0 Kudos

NA

xavierlegarrec
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi @swagatikapanda 

I don't build custom statements I leave that to reporting experts, I will try to get one to give their 2 cents on your issue.

All the best

Xavier

swagatikapanda
Participant
0 Kudos

@xavierlegarrec , many thanks Xavier for responding. 

It will be very helpful, if you can get this checked by your experts, I'll be waiting for your response.

Thank you

Swagatika

xavierlegarrec
Product and Topic Expert
Product and Topic Expert
0 Kudos

@swagatikapanda 

Here are the two cents from our expert.

"We can't provide guidance with what was shared. VarPay custom statements are complex and to understand which field to use in the XSL the consultant would first need to create a statement for the primary purpose of extracting field variables from a varpay form. If the customer or consultant isn't sure of how to create one of these on their own we would advise to stay away from building custom VarPay statements and get billable help from SAP."

If you need additional help at a billable SAP rate, please let us know. xavier (dot) le (dot) garrec (at) sap (dot) com

 

All the best

Xavier

Labels in this area