We are already aware of Objective Setting and Appraisals which has been delivered in Enhancement Pack 4 but I could not find much of blogs and/or thoughts shared in sdn on the flexibility of this module provided by SAP using BADIs.
Recently, we had a requirement for configuration of an appraisal template whose elements ( Criteria Group & Criterion ) will be independent of static configuration and will be dynamic and externally injected for each and every appraisal document that will created using that template.
In this document we will learn how to configure such an appraisal template including both the configuration and technical aspects. From technical aspect the usage of BADI and how the standard SAP framework works will be explained. I will aslo try to cover few other technical notes as and when we will progress which will definitely discover the flexibility of OSA.
Note: The configuration of the appraisal template must be done in the customizing client and BADI will be implemented in the development client.
1. Basic understanding of OSA
2. Basic OSA Configuration knowledge
For eg: Hands-on T-codes PHAP_CATALOG_PA, PHAP_CREATE, PHAP_ADMIN etc
3. Knowledge of ABAP
We will start off with the creation of Appraisal Category
Configuration of Appraisal Category
Step1: T-Code: PHAP_CATALOG
Step2: We are interested in the area ‘Personnel Appraisals’. We will put the cursor on this and press right -click of the mouse. It will provide me with the option ‘Create Appraisal Category’. On opting this, it will prompt with a pop-up as shown below
I have expilictly chosen ‘Create Manually’ such that we can configure the Category as per our business requirement. Let us go thorugh few of the tabs and configuration settings.
One of the most important configuration settings herein is ‘Enhancements’. This will list the standard as well custom BADI implementations which will be available through out this Appraisal Category as shown below. Let us first include all the standard available BADI filters later we can include the custom if required.
Next comes ‘Status Flow’. This configuration will be basically the business flow of the Personnel Appraisal process.
Events: This will list out both the standard and custom events which can be configured on a Pushbutton action shown later.
After this ‘Save’ the Appraisal Category from the option available in Menu Bar.
The tab ‘Columns’ as shown in the above screen clip lists out the standard Columns that can be made avilable to the appraisal template. It may also contain custom columns with specific properties which in return can be created using the T-Code: OOHAP_BASIC. Later in this document we will cover few areas available in this T-Code.
The next step would be configuration of an Appraisal Template
Configuration of an Appraisal Template
Step 1: T-Code PHAP_CATALOG
Step2: We would create the appraisal template in the same way.
Step3: On choosing the option ‘Create Manually’ the below screen will appear. And then we need to do some specific settings as per requirement in different tabs.
1. Numbering: This is an important feature which is used by SAP standard framework as an identifier in the appraisal document body elements. This will be covered in details later in this document when we will see the technical aspect of the standard framework.
We have 3 options herein.
2. If Numbering is included, we have different numbering options for e.g. Arabic Numerals(1,2,3.. ), Roman Numerals(I, II, III ..). We can select anyone from the dropdown.
3. Header: Settings can be done as per business requirement.
1. Value Determination: This is a kind of rule which we can use to set the value for a particular Column in an appraisal document. We can also set this column value using Value Determination by implementing a BADI namely HRHAP00_VAL_DET which includes an interface IF_EX_HRHAP00_VAL_DET.
Interface IF_EX_HRHAP00_VAL_DET consists of a method VALUE_DETERMINATION which needs to be implemented.
2. Note: Avalibale options are self explained, shown below in the screen clip
3. Free Input: If this checkbox is ‘Checked’ is then this column will appear as Free Text Input in the Web Layout ( Webdynpro Component: HAP_MAIN_DOCUMENT )
4. Text Layout: This is a very important feature through which we can control the element’s ‘NAME’, ‘DESCRIPTION’ or ‘NAME and DESCRIPTION’ availability in the Web Layout of the appraisal document when it is launched from a webdynpro configuration. This check has been explicit handled in the standard framework in the Webdynpro Component ‘HAP_DOCUMENT_BODY’ component controller method BUILD_DOCUMENT_BODY.
5. Layout of Values: This is important again from the Web Layout perspective. If we considering any Value List or has defined any Value Scale for a particular column then this option provides the provision to list out those values in the scale in a ‘Dropdown’, ‘Radio Button’ or ‘Slider’ format. From technical standpoint this has been handled in the webdynpro component HAP_DOCUMENT_BODY component controller method BUILD_DOCUMENT_BODY. The specific View which has these UI elements is VW_BODY_VIEW
6. Line Reserved for Notes: This feature denotes how many lines there will be gap between two elements which are reserved for Notes.
For the time being we will skip the ‘Dynamic Settings’ under this tab which is actual focus of this document. First let us complete the static configurations.
Moving to the next tab i.e. Column Access
Since we have included Appraisee and Appraiser as our active participants in this Appraisal process through category settings, thus we need to set the accessibility of the appraisal document columns in various status allowed in this process. We can toggle between Display/Change access for appraisee and appraiser for that specific Column as shown below in the screen clip.
If we some specific business requirements that this column access cannot be decided statically, then we have the provision of a BADI HRHAP00_COL_ACCESS. This BADI incorporates an interface namely IF_EX_HRHAP00_COL_ACCESS which has a method GET_COLUMN_ACCESS which can tweak the configuration dynamically based on template.
Next important setting that we will discuss herein is the tab ‘Processing’ as shown in the below screen clip
The configuration settings herein are self explanatory. One important feature that I must mention is that we can set the ‘Maximum Number of Part Appraisers’. Part Appraisers are typically included in a Category and then in a Template if we are configuring a 360 feedback Template. This is beyond this document’s scope. Maybe we can throw some light on it in another document.
Lastly comes the ‘Status Flow’ tab. The settings are quite complex.
1. Outbound Status/SubStatus: This denotes the current Status/Sub Status.
2. Pushbutton: This is important from the perspective of Web Layout. These are radio buttons which will appear on the left side of the Appraisal Document when the Webdynpro Component Configuration is launched for HAP_MAIN_DOCUMENT. We can specify the owner of the button by maintaining the ‘Person Authorized’ for the pushbutton.
3. Target Status/Sub Status: On action of the pushbutton, the appraisal document will move to a different status or it may remain in the same status after saving the changes done in the document from the frontend by the user.
4. Add/Delete Pushbutton: We can add/delete pushbuttons as per our business requirement for a particular Status. If we want to add a Custom Pushbutton we must create it first using T-Code OOHAP_BASIC. Below is an example
We can create ‘New Entries’ and filling the details for Previous Status and Subsequent(Target) Status. It will make an entry in the cluster table VC_T77HAP_BASIC.
5. Workflow Event: If we can remember in one of earlier screen clip of ‘Configuration of Category’, we have listed out Workflow Events, those will get listed out here. If we are considering a standard Workflow Event, it is linked to the standard BOR object ‘APPR_DOC’. If we mentioning any of this here, this event will be triggered on the action of this specific pushbutton and a workflow ID will be generated.
6. Note: While moving from Current Status/ Sub Status to the Target Status/ Sub Status, if we want user to put some note, we can configure it here. We have 3 options.
NONE: No Note
OPTIONAL: User may put a note. This will hinder the appraisal document status change.
MANDATORY: User must put a note otherwise process flow will stop therein. No status change.
Let us now get back to the tab ‘Columns’ and we will concentrate on the ‘Dynamic Settings’ as shown below in the screen clip.
1. Fixed Enhancement: This dropdown will list the enhancement implementation of the BADI HRHAP00_ENHANCE_FIX. There are few already delivered by SAP. This is generally used to inject external elements dynamically at the time of Appraisal Document creation.
2. Free Enhancement: This dropdown will list the enhancement implementation of the BADI HRHAP00_ENHANCE_FREE. There are few already delivered by SAP. This is generally used to inject external elements dynamically at the time of Appraisal Document creation.
3. Refers to Attributes of: We can create a reference element to whose properties it will refer while the external element element is injected by Fixed/Fixed Enhancement. It will also create a ‘B605’ relationship with the reference element and this is how it is linked to the element. SAP framework also allows to refer multiple reference elements i.e. we need to declare the other reference elements herein and within the BADI implementation based on some business logic we can toggle between the allowed refernce elements.
4. Deletion of an Element: We can allow particular deletion of an element.
In this document, I will explicitly take up the Fixed Enhancement procedure to configure the external elements in an appraisal template. A custom enhancement will be implemented using above mentioned BADI.
So as of now, we have successfully configured the Appraisal Template with a base element i.e. VA obtect type.
We need to understand how standard SAP framework behaves when we use Fixed Enhancement. So, let us understand that we already have a VA element for this template. Now if we declare an enhancement here, BADI implementation will be called for once to add Criteria Group (VB) elements. This criteria Group will have the properties of the element mentioned in ‘Refers to Attributes of’. Let us say we have injected 5 VB elements with external ids. Now to add ‘Criteria’ (VC) dynamically we will again configure the ‘Dynamic Settings’ in the ‘Columns’ tab in the same way. Another enhancement for adding VC element will be declared with a different referenced element. So logically for each VB element the BADI implementation for adding VC element will be hit correspondingly. So through this 5 iterations we will inject the required VC elements under suitable VB elements.
It is kind of tree structure.
Appraisal Template Configuration( VB & VC elements) using Fixed Enhancement
Step1: Create a filter value named ‘ADD_DYNAMIC_VB_ELEMENT’ for VB elements and ‘ADD_DYNAMIC_VC_ELEMENT’ for VC elements respectively in the BADI HRHAP00_ENHANCE_FIX in T-Code se18 as shown below in the screen clip.
Step2: T-Code OOHAP_BASIC
Step3: We need to include our custom BADI filter in the ‘Fixed Enhancement’ area as shown below in the screen clip.
Step3: ‘New Entries’.
Likewise we will also add the respective filter for VC elements here.
Note: The filter create in Step2 will create an entry in table ‘T77HAP_FLT_EXI’. If there is no such entry we will not be able to include our BADI filter in the enhancement area.
Step3: Now we will go back to the T-Code PHAP_CATALOG and include it in the ‘Category Group’ Enhancements
Step4: Now we will move to the ‘Dynamic Settings’ of ‘ tab Columns’. We will declare the enhacement from the dropdown and will create a reference element by the button available beside it as shown below. We will set the properties of this reference element as per business requirement. This is our specific Criteria Group.
Step5: After setting the specific properties required for the reference element, we will move to the tab ‘Columns’ Dynamic Settings and again follow Ste3 with one difference i.e herein we will include the enhancement for adding Criteria (VC) element namely ‘ADD_DYNAMIC_VC_ELEMENTS’
Step6: Save the changes from the option in the menu bar and record it in a customizing task and set the Status of the Appraisal Template as ‘Released’.
So our Appraisal Template Configuration is complete. Next step would be implementation of the BADI filters we have created in the earlier step.
Implementation of the BADI filters
1. ADD_DYNAMIC_VB_ELEMENTS : We have added only one Criteria Group (VB) element for our demo purpose.
So we are now good to create an appraisal document with the template configured above and understand the working of SAP framework in this case.
Creation of an Appraisal Document
Before starting the process, just to remind we have injected 1 VB to the VA and 3 VCs to the VB injected.
Step1: T-Code: PHAP_CREATE
Document is successfully created. Let us check the document body that how the elements are arranged.
Step2: T-Code PHAP_ADMIN
From the above screen it is clear that the Numbering is included which we have set in the configuration earlier. Next there are VA, VB and 3 VC elements. There are two columns available as configured, Objectives and Final Appraisal. Notes can be maintained for both of the columns as configured.
Let us take a step back and try to analyze the standard SAP framework behavior.
Analysis of standard SAP framework while Appraisal Document is created
Step1: We will try to debug the T-Code PHAP_CREATE
Step2: On debugging, we found the below process which SAP standard framework follows
Before going into detailed explanation, we will check the T_BODY_ELEMENTS in debug mode as shown below. Only one element is statically configured which is there as a VA element in the appraisal document.
- Since we have included Enhancements in our Category, it calls the FM HRHAP_DOC_BODY_ENHANCE.
- Within that another FM HRHAP_DOC_BODY_ENHANCE_FIX which checks for the defined filters for the BADI HRHAP00_ENHANCE_FIX
- If it finds a match between configuration and defined Filters it calls the BADI implementation.
- Next it checks for the Free Enhancement if configured through the FM HRHAP_DOC_VALUE_DETERMINATION
- So in our case first the VB is injected first as shown below. Please note the internal table values
*** Due to certain technical problems Screen Clip could not be uploaded. Please refer the attachment ‘Capture_30’.
- Now as per our configuration for each VB element embedded in the T_BODY_ELEMENTS the filter to add VC elements will be called.
*** Due to certain technical problems Screen Clip could not be uploaded. Please refer the attachment ‘Capture_31’.
Let us try to understand the structure of this elements in a simplistic way. I will try to put the above values in a picture.
*** Due to certain technical problems Screen Clip could not be uploaded. Please refer the attachment ‘Capture_32’.
This is how the SAP standard framework behvaves. There are still few things on which we could put some light but is beyond the scope of this document. Maybe I will try to cover them in my next document if I found good response from all of you.
My next target will be on 360 Feedback concept and the Webdynpro Technical aspects of an Appraisal Document.