More than 50 Business Add-Ins (BAdIs) are available in SAP HCM Performance Management. However, with flexibility comes complexity. See what’s available and how to integrate BAdIs into your process.
Key Concept
Since R/3 Enterprise (4.7) Extension Set 1.1, SAP HCM supports the whole performance management process with objective setting and appraisals as well as development planning. The objectives and appraisals form (template), usually maintained on the Web through a portal or stand-alone Business Server Page (BSP), constitutes the heart of the process. It carries information about an individual’s or a team’s performance. Companies use Business Add-Ins (BAdIs) to adapt their processes and customize requirements through custom ABAP coding. BAdIs influence the look, feel, and interactive behavior of the template, as well as the process around it. Implementations of Performance Management that do not use BAdIs are few and far between.
How a BAdI Works
When you implement a BAdI, the program flow takes a detour into custom coding that sits in the BAdI implementation. A predefined interface connects the SAP coding and custom coding in the BAdI.
Through this interface, you can hand over a set of parameters (e.g., personnel number, seniority, and personnel subgroup) from SAP code to the custom coding. The system processes this data (e.g., for the calculation of the target bonus of this person) together with any other data the user selects from the SAP database in custom coding. For example, you could select the base salary as an additional parameter using the personnel number. At the end of the custom processing, the system gives back a second set of parameters (e.g., the target bonus and the maximum and minimum bonus levels) to SAP standard processing to use in the further flow of the process.
What makes BAdIs particularly useful in Performance Management is the filter concept. Filters allow for several different implementations (i.e., pieces of custom coding to choose from) for one BAdI, as they decide which implementation to use in which case. MOLGA (country grouping) is a widely used filter that implements different processes for different countries.
This means, depending on a certain condition, the system can use completely different pieces of custom coding for various business process variations, which makes the system very flexible. The filter is assigned to a BAdI by design and cannot be changed. If a certain BAdI uses the MOLGA as a filter, there’s no way to use the language key instead. It is important that configuration experts understand filtering concepts. They allow you to assign a BAdI implementation to an appraisal template.
Use of BAdIs in Performance Management
You do most of the Performance Management configuration in the appraisal template catalogue (transaction PHAP_CATALOG_PA). Figure 1 shows the levels where the configuration takes place. Although “Personnel appraisals” is the only category group relevant in this example, you’ll usually have more than one element on all other levels, making it a hierarchy. Figure 1 shows one example for each level.

Figure 1
Levels for template configuration
On each of these levels, requirements can occur that you cannot deal with using the configuration options available. They require BAdIs. Configuration experts should not forget that all BAdI-based enhancements used on a lower level must first be declared in the basic settings. You then can assign them to the respective category. We will show how to do this using an example later in this article. In general, BAdIs can influence:
- General process flow, including authorizations and workflow
- Layout of forms
- Background checks producing error messages
- Content of individual fields in the form, including its header
- Deletion or addition of criteria
Although most BAdIs influence the normal process of selecting and filling in appraisal forms (templates), some of them have effects elsewhere. We focus on the template-related BAdIs later in the article. For a synopsis of the rest, see the sidebar, “Other SAP HCM Performance Management BAdIs.”
How to Find the Right BAdI
Performance Management BAdIs are not integrated in the implementation guide, so they are difficult to find. You can generate a list with one of two methods:
1) Go to transaction SE18. Enter HRHAP* in the BAdI Name field. Press F4. You get a comprehensive list because all relevant BAdIs begin with HRHAP. To see available implementations, select a BAdI from the list and follow menu path Enhancement Implementation > Overview.
2) Go to transaction PHAP_ADMIN and follow menu path Utilities (M) > BAdI Overview. You then get a list with BAdIs assigned to a BAdI area by SAP (Figure 2). To see other BAdIs, choose a different BAdI area. The name of the BAdI area gives you some indication as to what the BAdIs assigned to it could be. To see available implementations (SAP standard as well as custom ones) for one BAdI, select the BAdI from the list and click on the Implementations button. We personally don’t like this view because SAP assigned the bulk of the BAdIs to one of only two BAdI areas (Template: Definition and Behavior and Appraisal Enhancement) and it is not very clear where to look for what you need. However, this view is very useful if you select the BAdI area Add-On Application because all BAdIs in this area are not meant to hold user implementations, but are for SAP use only. Because the assignment of BAdIs to an area doesn’t clearly follow a useful rule, we prefer to have the list with all BAdIs in one view. Moreover, two BAdIs are not even included in the list from the second method (HRHAP00_BC_ELEMENT and HRHAP00_TMPL_RESTR). We refer to the second method to check out the BAdI area Add-On Application to identify SAP-only BAdIs.
If a description sounds promising, you can obtain quick information about what the BAdI actually does. Each BAdI comes with short documentation that is rarely comprehensive, but in most cases gives you a general idea. To access the documentation, display the BAdI via transaction SE18 and click on the Documentation button (not the i button). If the BAdI comes with implementations already, then you can get a list of them by clicking on the Implementations button, as shown in Figure 2. The list gives you an idea of what you can do with the BAdIs. However, there’s still a lot of guesswork involved.

Figure 2
BAdIs per BAdI area
You have to go into technical details with an ABAP developer, look at the interface and coding, and use trial and error in many cases. One of the most important questions the configuration expert and the developer should discuss is which parameters can be transferred between the normal SAP coding and the custom coding in the BAdI implementation. This sets clear boundaries of what you can achieve with a BAdI.
Out-of-the-Box Functionality
The easiest way to find the right BAdI is when you know that SAP uses a BAdI for the out-of-the-box functionality you want to enhance. Then you can add a custom implementation to the same BAdI and probably even use an SAP implementation from which to copy some coding. Some examples of standard functionality delivered via BAdI implementations and an explanation of how you can use them to enhance the Performance Management solution follow.
It is beyond the scope of this article to explain each configuration step in detail, so we will explain the role of the BAdI and assume the readers understand basic template configuration.
In BAdI HRHAP00_VALUE_TYPE, SAP delivers 10 classes of value lists (e.g., dates, quantity scale, currency). You can see them in the Value Class column in Figure 3. If you want to add a new value list, you can do so through a custom implementation of the same BAdI.

Figure 3
Column configuration to assign value classes and value determination
BAdI HRHAP00_VALUE_DET provides 14 methods to calculate the value of a given field (e.g., a weighted average or a weighted total) used in the Value Determination column (Figure 3). Custom implementations in the same BAdI can use different formulas. We’ll explain this widely used BAdI in more detail in part two of this series.
Figure 4 shows a selection of the Web and print layouts for the appraisal form. Even the value Standard, which is available from SAP, represents an implementation from the BAdIs HRHAP00_SMARTFORMS and HRHAP00_BSP_TMPL. If you want to use custom layouts, you must create your own form or BSP and assign them via a custom implementation.

Figure 4
Print and Web appraisal layout selection screen
_DOC_BC allows you to perform check routines. SAP delivers one example to make the note fields mandatory (see the first line in the AppraisalEnhancement column in Figure 5. If you want to generate information or error messages for other situations, you can create a custom implementation in this BAdI.

Figure 5
Generate messages by assigning enhancements here
RHAP_DOC_DEF_DV determines the validity period of an appraisal form (Figure 5). If the default values calculated by the standard options don’t comply with your organization’s rules, you can create your own.
Through the box shown in Figure 6, you can include up to three links in your form to display further information. SAP delivers six applications from which to choose. If you want to offer your user different information to be accessed through a click on the form, you need to create custom implementations in the BAdI HRHAP00_LINK.

Figure 6
Links to display further information
Template configuration allows you to add fixed enhancements (which can’t be changed by the end user) or free enhancements (end user can decide how many to add) to a form (Figure 7). SAP defines some fixed enhancements, but you can add others through custom implementations of BAdI HRHAP00_ENHANCE_FIX. An example with an upper limit of seven is available. You can easily copy this to implement a different upper limit via BAdI HRHAP00_ENHANCE_FREE.

Figure 7
Fixed and flexible enhancements
Integrate a Custom BAdI Implementation into Your Template
When you happen upon a BAdI with predefined implementations to deliver out-of-the-box functionality, you know which BAdI to use to make further enhancements and you also have an existing example to draw on. However, you still have to make your enhancements available in your template — whether SAP provides predefined implementations or not.
The BAdI HRHAP00_DOC_DEF_DR determines the review date for objectives. First, select this BAdI via transaction SE18 and follow menu path Enhancement implementation>Create.
In the following screen (Figure 8) assign a name for the implementation and the application enhancement. The name acts as a filter in the BAdI processing. In a later step, this enhancement name is assigned to a template and allows the BAdI to decide which implementation to use. Eventually, the name entered here is used to connect a BAdI implementation with a template via the template configuration in the template catalogue. In our example, we chose Z_EXAMPLE.

Figure 8
The first step is to create a custom implementation
On the next screen (Figure 9), add reasonably short text to describe what the implementation does. Next comes the heart of each BAdI implementation: the definition of the methods that are the components of the BAdI. This requires a basic understanding of ABAP objects and the BAdI concept. Readers with no technical background may not understand the next steps in detail, but are encouraged to read on to see how simple it can be (if the required logic has a low complexity). The steps are an overview of the whole process for the sake of better communication with your technical colleagues.

Figure 9
Short text and methods
Double-click on the first method DEFAULT_REVIEW_DATE (this BAdI has two methods as shown in Figure 9). You then see an ABAP Editor screen with the frame of method and endmethod already included. Add the custom coding in between. For this article we chose the following simple example, although the coding can become complicated. Set the review date for 100 days from today (Figure 10) and activate the method by clicking on the activate icon or by pressing Ctrl-F3.

Figure 10
Insert coding for first method
You could also fill the second method with custom coding to add a description of the implementation that is accessible to the person doing the configuration. To keep it simple, however, we are skipping this step. The next two steps are: Go to the Attributes tab and add a short text for the enhancement. In our example, we chose today + 100 to describe the functionality (Figure 11). Click on the activate icon in Figure 12 or the system does not process the implementation.

Figure 11
Describe the desired process with a short description

Figure 12
Activate the implementation
Now you are done with the technical part and can turn to the configuration of the template in the template catalogue (transaction PHAP_CATALOG_PA). The first thing to do is to declare the enhancement on the level of basic settings. To get there, right-click on the header of the catalogue (Figure 13) and choose Basic Settings in the context menu.

Figure 13
Right-click on the header of the catalogue
Double-click on Enhancement Area and select the appropriate area in the table. In our example it is DR Default Review Date. With the enhancement area selected, double-click on Enhancement. You then get a table with all existing enhancements in that area. Click on the New Entries button to add the new implementation. Don’t expect your new enhancement to appear in the drop-down list. You need to enter it manually. It is the name you chose earlier in the filter of the BAdI Z_EXAMPLE. When you press the Enter key after that, the right column (Text) shows the short text maintained earlier in the BAdI implementation (Figure 14).

Figure 14
Declare the enhancement
Now save your changes and leave the basic settings screen. Before you can use the enhancement in a template, you have to assign it to a category. To do so, double-click on the category and then click on the Enhancements tab. You’ll find the new enhancement on the right side in the Available section. To use it in that category you must click on it and then transfer it to the left side under Selected using the icon with the single arrow to the left (Figure 15).

Figure 15
Assign the enhancement to a category
Save your changes and then double-click on the template you want to use. This last step, the assignment of an enhancement to the template, differs depending on the enhancement area. The description of the use of SAP implementations earlier gives you a good idea where different enhancements are assigned in template configuration. Our example is assigned with the method most other enhancement areas use.
Choose the Enhancements tab and click on the Further Template Behaviour button. A new window opens with a table to assign enhancements from various enhancement areas (Figure 16).

Figure 16
Assign various enhancements on this table
By clicking on the add entries icon or pressing F5, you get a new window to choose the enhancement area. Select DR – Default Review Date to create a new entry in the table and select the appropriate enhancement from the selected area via the drop-down menu in the right column (Figure 17). Save your changes to finalize the assignment of the enhancement. Note that for all enhancements assigned in this way via the Further Template Behaviour button, you can use only one enhancement per enhancement area. Some other enhancement areas allow the assignment of more than one enhancement per template. In those areas you can, for example, assign different enhancements for value determination to different fields and integrate up to three links to display information in one template.

What Makes BAdIs Complicated?
Apart from the tedious process to assign an enhancement, the biggest complication is the huge variety of BAdIs with different ways to assign them to the template and other peculiarities.
Some have limitations that are not obvious from the documentation. For example, the BAdI HRHAP00_DOC_BC can perform background checks but can only produce error messages and information messages, not warnings. Also, despite a parameter indicating this feature, it can’t show multiple messages at a time.
In many cases, it is important to know in which sequence several BAdIs are processed or what triggers them at all (some need an active field, although this is not obvious from their functionality). However, you can only find out about this through trial and error. Therefore, good debugging skills are recommended. In extreme cases, the BAdI may do nothing at all: HRHAP00_DYN_EVENT is available in the system including a documentation of its functionality. However, SAP Note 959099 explains that you cannot use this BAdI yet.
Despite these shortcomings, which may not be completely avoidable considering the huge number of BAdIs available, the BAdIs make SAP HCM Performance Management much more flexible and in many cases allow you to design an effective solution for your organization at a reasonable cost. As a technical expert, just make yourself familiar with those BAdIs you need for your process to get the most out of them. In most cases, you’ll use between three and 10 of them. To help you getting started, we’ll introduce two of the most popular BAdIs in the next article:
- HRHAP00_VALUE_DET to calculate field values
- HRHAP00_DOC_BC to perform background checks
Other SAP HCM Performance Management BAdIs
These BAdIs affect HR processes, but are not related to appraisal templates: Two BAdIs are related to reporting:
1) HRHAP00_REP_GEN_VAR creates dynamic variants for SAP transactions
2) HRHAP00_REPORING allows you to add custom reports to the reporting options in SAP transaction HRHAP_SEARCH.
Figure A shows the four reports available out of the box when you click on the Report button in this transaction. You can add custom reports through this BAdI, so that, when you click on the Report button, additional reports appear. No BAdI exists that influences the content or layout of SAP standard reports. To enhance the reporting capabilities, you need to develop custom reports.
Three BAdIs do not affect the application. They are for configuring the templates in the template catalogue and therefore are rarely used. You usually use BAdIs to increase usability for the business user, not for the configuration expert, particularly because you won’t spend much time in configuration after it has been set up once. BAdI HRHAP00_ADMIN defines the functionality of the Administrator Functions button in transaction PHAP_ADMIN (administration of appraisals). There is no out-of-the-box function behind this button and it is up to the user to define and program what may be required, such as clearing all result fields in the selected forms.
If you have a requirement that is not feasible in normal configuration, chances are one of these BAdIs can provide a solution.

Figure 1
Standard reporting options
Sven Ringling
Sven Ringling is executive director at iProCon (www.iprocon.de) and iProCon Human Capital Management (www.iproconhcm.co.uk). He started working as an SAP HCM consultant in 1996 and also works in strategic HR and change management. He is one of the authors of the books Mastering HR Management with SAP and HR Personnel Planning and Development Using SAP.
You may contact the author at s.ringling@iproconhcm.co.uk.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.