I was recently helping one of my clients regarding a reporting issue with SAP Enterprise Compensation Management and data not being displayed correctly on one of their custom reports. This report was a copy of standard report PECM_SUMMARIZE_CHNGS – Summarize Comp. Planning Changes with some customer specific enhancements and additions. As the title of the report gives away, the report is to summarize the changes to the compensation data for a particular compensation plan during a particular compensation review. This client is on SAP ECC 6.0 EHP5, and has been live with ECM compensation planning for about 2 years (Merit and Bonus).
I tried to understand what was going on and found out from the client that they ran a custom program to mass update existing IT759 records recently and that was the start of the issue. The issue was that none of the most recent changes were not picked up by the report, and in many cases some of the associates who were changed in mass were not picked up by the report at all.
So I looked into the logic of the custom version of the summarize change report and saw that it reads based upon a history table T71ADM_EE_HIST which captures the changes of the IT759 record during the compensation planning process. I next noticed that none of the changes that were made via the custom program were captured into this program. So I debugged the program used to make the changes and found the following:
IF p_test EQ ‘ ‘.
UPDATE pa0759 ls_pa0759.
The program was written to update the database table PA0759 directly! This is never recommended, and I immediately let the client know that we should change this. There are many issues with updating database tables directly, including the lack of a data consistently check with updating the values directly and the fact that it does not update the corresponding fields such as Changed On, & changed By unless you specifically write the logic.
My next thought was that we should update the program using Function Module HR_INFOTYPE_OPERATION, as is the standard practice for updating infotypes. I was thinking that there was logic built by SAP that would then automatically update the history table.
After making the change and testing, unfortunately the history table remained unchanged.
Next, I decided to look into the SAP standard code and see how they update the history table, which I confirmed is update whenever you use any standard SAP route to create/update IT759. The standard routes for updating this table are the following
- Create & Update via MSS when manager changes data
- Standard program PECM_CREATE_COMP_PRO – Create Compensation Process Records
- Standard program PECM_ADJUST_0759 – Adjust Compensation Process Records
- Update master data directly via PA30
I debugged the standard SAP code and found that SAP created a message handler method PROCESS_IT_CHANGE (CL_HRECM00_EE_HIST) implemented in class ‘CL_HRECM00_EE_HIST’ to modify the history table. Whenever there is any update to an IT759, this method will compare the old and new records then modify the record in history table
After debugging and finding this, I called this METHOD in the custom program so that whenever we run the custom program to update IT759, it will also update the history table!