Support The Site

Tuesday, July 24

Version 0 is not defined for fiscal year XXXX?

Some of you might come across this before when doing conversion or new hire through PA30 and accessing infotype 0000. This occurs when the controlling area isn't linked to the fiscal year in question. A simple configuration could take care of it through T-CODE: OKEV.

Friday, July 20

How To Identify Transaction Codes To IMG Items

Often time, we find ourself in the IMG node very frequently. Going to transaction SPRO and start drilling down the massive maze of the IMG path could be time consuming.

There is a setting you could set on your end which will display the transaction codes to each area you are in. This way you will get to learn the transaction code and access it directly or add it as part of your favorites.
To activate it, go to SPRO transaction and display the IMG screen. On the top menu bar click on "Additional Information" and go to the sub menu called "Additional Information". Within that, click on "Display Keys" and then finally "IMG Activity".

Now you have the transaction codes you could reference!

Friday, July 13

FAQ: Enterprise Compensation Management (ECM 5.0)

There has been a lot of mis understanding, lack of information, and just simply confusion around the Enterprise Compensation Management module in mySAP ERP 2004. Below are some of the points to be award of...

  • ECM was designed in the aspect being an MSS utilize functionality. Through MSS, there are several checks and balances the system goes through. However, this does not exist via PA30 if these records were to be created in the backend. For example, via PA30, you can still create, approve, and activate an employee for a particular plan he/she is NOT eligible for. Through MSS, this employee would've been grey out and not allowing the manager to proceed with the planning process of it. Please refer to OSS Note 879720 for further details

  • By default, in MSS the manager can plan for his/her employees in currency he/she wishes. However, when activiation occurs, it will do currency conversion automatically and post in their local currency. To override this factor you would need to remove the flag in T77S0 table at switch HRECM XEECU. Please refer to OSS note 891609 for further details

  • Complensation Planning iview shows ineligible employees. According to SAP, this is a per designed functionality. The purpose is to illustrate his/her entire employees population. Please refer to OSS note 919298

  • Out of the box functionality, planning manager can in fact approve his/her plan they had submitted. A lot of this issue is due to the lack of workflow functionality for ECM delivered with mySAP ERP 2004. Please refer to OSS note 802992. You can also look at these post available on SDN (HERE #1 , HERE #2, HERE #3)

  • ECM uses the currency exchange rate type "M" in TCURR table. This exchange rate is hard coded in the standard function modules used by ECM. Function module is "HR_ECM_CONVERT_CURRENCY"

If you are planning to customize ECM through BADIs to enhance how the program determine things, you could look into one of these many available BADIs from SAP

  • HRECM00_ACTIVATION - Replace activation procedure or new infotype determination
  • HRECM00_BDG0001 - EC budgeting
  • HRECM00_CACLBASE - Replace determination of calculation base salary
  • HRECM00_CARGP - Replace evaluation of compensation area
  • HRECM00_CP1GP - Replace evaluation of first compensation program grouping
  • HRECM00_CP2GP - Replace evaluation of second compensation program grouping
  • HRECM00_EFFDATE - Replace increase or award effective date
  • HRECM00_ELIGIBILITY - Replace or extend eligibility check
  • HRECM00_ELIGP - Replace evaluation of eligibility group
  • HRECM00_GDEGP - Replace evaluation of guideline grouping
  • HRECM00_GUIDELINE - Replace or extend guideline evaluation
  • HRECM00_MATRIX_SEGM - Define axis for matrix guideline
  • HRECM00_SALARY - Replace evaluation of salary and salary-related quantities

Thursday, July 5

What Are RHINTE? (PA - OM Integrations)

During an SAP implementation, conversion program will occur to load OM and PA data separatedly as their own infotypes / objects. But there is a missing connection between OM / PA through relationships and other tables that might not get loaded via conversion. With that, we have several RHINTE programs to assist in this matter. You can access it via SE38 transaction code.

  • RHINTE00 - Transfer PA Records To PD Positions. In another world, it creates the HRP1001 between P to S in the OM side of the world. When you view a record via IT0001, you see this person holds the position, however via HRP1001, that relationship isn't so.
  • RHINTE10 - Generates the required relevant tables. (T513 - Jobs, T513S - Jobs, T528B - Positions, T528T - Work Center, T527X - Org Unit
  • RHINTE20 - checks for all objects for integration between PA and OM. This is a big one and will take awhile to run. What it does is look at table T513/T513T - Jobs, T528/T528T - Position, and T528X - Org Unit. It will then compare it against the HRPxxxx table to find missing objects. If there are any missing objects, it will create the record.
  • RHINTE30 - Transfer OM to PA. This will create infotype 0001. If the conversion strategy is to have SAP auto inherit factor to kick in for IT0001, often time jobs and org unit are missing via IT0001 during the inital conversion load. RHINTE30 will find the relationship and push it through IT0001.
After running these, don't forget to check SM35 as some of them will create a BDC Session that needs to be executed for actual update.

You can also execute RHINTECHECK program to check for any issue on the integration side.

Usually the rule of thumbs on conversion is that you use DTT, LMSW, or even custom ABAP program to load P0000, P0001, and P0002. Once those are done, you run RHINTE00 to establish the P-S relationship on the OM side from information you've load via P0001. You then would run and RHINTE10 to establish the text table on the PA side for positions, org unit, and jobs. You are correct that text are stored in HRP1000, however that is where OM stores the information. PA has a few text tables storing the same information for PA usage. RHINTE10 will handle that. At the end of the process you would run RHINTE30. What this would do is re-create P0001, this time allowing standard SAP integration functionality to default in the org unit and job into the field. Since you did RHINTE00 earlier, you've established P to S relationship on the OM side. Not SAP knows where to find the O and C.

Of course the process above is only showing one point of view and scenario. Different implementation will have different flavor of how conversion occurs. You would have to test it out and do trial and error on finding the best solution for you.

Read the help files for further details and also explore what other possibility you can use this for outside of implementation (i.e.: Pos Go-Live situation as in Production Support)

Tuesday, July 3

Length Of Service Calculation?

In the old days, determine length of service was simple. You just need to maintain a feature called ENTRY. This feature will determine to look at which date type on infotype 0041 or to use infotype 0000 action date as the hire date. A standard function module HR_ENTRY_DATE will read of this feature and life was happy.

Until recently when SAP introduce Management Global Employees (MGE) / Concurrent Employment (CE) functionality, all of that went down the tube. If you had installed the Best Practice Client w/ client 000 stuff, you should be safe with what is delivered. But with those who did not, you are into a big surprise.

You will need to maintain ENTRY feature as you normally would, but in addition need to maintain a whole new node of configuration in the IMG

IMG -> Personnel Management -> Personnel Administration -> Evaluation Basis -> Calculation of Employment Period

This entire nodes needs to be maintain. If you have a best practice client setup, the best practice setting will be enough for most implementation to work against. Enterprise Compensation Management module which uses senority setting in their guidelines will be able to leverage it as well.

Took me awhile to figure this out!

Have Fun w/ researching it.

Friday, June 1

Customizing Feature

Do you often time find the business requirements sometime don't fit with what is available in standard features, such as TARIF, SCHKZ, etc.,?

Most standard features uses similar table structure, such as TARIF uses the PME01 structure. The only available values there for you to select against are MOLGA, Company Code, Personnel Area, Personnel Sub Area, Employee Group, Employee Sub Group, Position, Job, and Work Contract field. Most of which dervive off infotype 0001.

What if you have a requirement to have the feature decision against something not part of the structure? For example, the company business process calls for Job Function Code. Depending on the solution design for Job Function Code, their location could be anywhere.

With that, this will go through one of the many methods on how to enhance the feature to meet the business requirement. I will use the example of TARIF with Job Function Code.

In our example, Job Function code is an new OM object (ZJ) with a relationship to object "C" via HRP1001. We will need to now go down the path of enhancing the feature and do some ABAP'ing.

1) We need to create the new sub feature to be called in the ABAP program. In order to create the new sub feature, we must first create the structure for it. Using SE11 as your starting point, make a copy of the standard structure PME01 (since this is what TARIF was based against). Let's call it "ZPM01". In this new structure, add a new field to capture the job function code ID.
2) Using transaction PE03, we will need to create the new feature structure to be used as a sub-feature through the ABAP program. Create a new feature call it "ZTARI". In this "ZTARI" call the "ZPM01" structure you've identified earlier.

3) Now let's modify the TARIF feature through PE03 to call the ABAP program. At the top node, have it call your custom program, let's call it "ZFEATURE_TARIF".

Now you've got the basic frame work the design. What is missing is the ABAP coding. In the ZFEATURE_TARIF program, you will use the the function module called "HR_FEATURE_BACKFIELD" and "RH_READ_INFTY". The function module HR_FEATURE_BACKFIELD is used to read the "ZTARI" feature and retrive the BACK STATUS value to send back to the main feature TARIF.

The function module RH_READ_INFTY is used to basically read HRP1001 for your job function code information so you could populate the "ZPM01" structure.

In the ABAP program, you will need to reference PME01 structure at the very beginning since you will be sending data back to it

In the program, send data from PME01 to the ZPM01 structure. You will need it for the decision tree in ZPM01 later. What you don't have in PME01 is the job function. This is where you use the read infotype function module, look up the job function code and pass it back to the ZPM01 structure.

At the every end after you finishes with looking up data, send the ZPM01 structure to the HR_FEATURE_BACKFIELD function module for it to handle it's own duties of going through the feature ZTARI and send you back the return value.

Play around with this method and you can see the flexibility of it is fairly nice. What other methods have you come across, feel free to share it!

Thursday, April 19

SAP Customizing: Total Compensation Statement (TCS)

SAP standard delivered Total Compensation Statement (TCS) is different from the Compensation Review Statement (CRS). The Compensation Review Statement was ment to act like similar to a merit slip, showing your employee his/her recent performance merit increases, bonuses, and stock option awards. It is only available via ECC transaction, so would need to be printed by HR or someone with ECC access on the behalf of the employee. The Total Compensation Statement, on the other hand, are available in both ESS, MSS, and ECC. The employee could log directly into his/her ESS and view his/her Total Compensation Statement at any given time.

The out of the box functionality of the Total Compensation Statement (TCS) is to read off the payroll cluster. So upon each payroll cycle, the information will be available to the employees of his/her period to date earning information.
In the event the company you are working at is NOT running SAP Payroll, you will need to redirect TCS to look at another location for your data. We will be using the following BADI:

What you need to do first if do the standard configuration for TCS. Define your category and sub category in the IMG configuration "Determine Structure of Total Compensation Statement".

Don't configure the "Select Wage Types For Pay Categories" yet, this is restricted to one category. It is program to hard code in the category "PAY". In the event you define your own category, you might define more than one. You need to make a copy of that table and add a Category field.

Now we are ready to use the BADI! The BADI structure will import in several key fields you need to make use of.

Using the CATEG and SUBCATEG_TAB, have it look up the "Z" table you've copied earlier. It will link to a list of wage types you've configured should be tally up for that sub category.

Once you know the wage type, have the BADI code go look at the custom infotype or table you've created to store the inbound payroll data. Keep in mind I had mention earlier, as part of the inbound feed from outside vendor, you need to link each of the pay component to a wage type. This is the only way you could determine what pay component belongs to which category.

You could use this menthod for inbound benefit data, redirect compensation information from infotype 0759 or infotype 0015, etc. In the "Z" table, you could even have a sub category link to a wage type on infotype 0015.

The end result will be link this, also included the TCS_CATEG_TAB mapping for you

I would love to hear feed back or questions anyone has. I've been getting a lot of emails from other posting with questions.

Tuesday, March 27


Came across this a few years ago, though it to be funny. Enjoy!

Monday, March 19

Showing Keys In Dropdown

There is a simple setting in SAP to turn on and/or turn off showing KEYS in SAP dropdown field. Have you been on an SAP environment where the keys are turned on and you don't know how to turn it off? Vice Versa?

Above is an example shot from transaction PP01.

To enable it or disable it, start by clicking on this icon on the menu bar.

Click on "OPTIONS" and then go to the "EXPERT" tab. There is a checkbox, as illustrated below. This control the keys showing in transaction dropdown.

Tuesday, February 20

Maintain Table via Transaction!

I am sure a few people will come across this requirement for any SAP implementation they are in. There will be at times need to maintain certain tables in your production environment or in any environment where it is maintained by the "non-hris" organization, such as functional business people or SME (site matter experts). These people often time will not have access to transaction code SM30 / SM31 in these environments to maintain any tables, even if the tables are customized "Z" table.

This trick was shown to me by Narendran on the SAP SDN Forum. All credit goes to him on this one. One method of allowing the user to maintain a table is to attach a transaction code to it. For example, you have the need to maintain table V_T510W.

First you will need to go to transaction SE93 to create the new customized transaction. Give it a name and short description. Be sure to select "Transaction With Parameters (Parameters Transaction)".

Click on the green check to continue to the next screen.

Under the "Default Values For" section area, you have two pieces you need to focus on. Next to the "Transaction" field, type in the transaction "SM31". Right below it, check the box next to "Skip Initial Screen".

What you've just done there, was basically tell the program to use SM31 to maintain the table structure, but skip the initial screen where the user had a choice to enter in the type he/she wants to maintain. In the next steps, we will enforce what table they will be maintaining for this transaction.

Towards the bottom of this same screen, you have a section called "Default Values". In the left side, under "Name Of Screen Field", select "VIEWNAME" via the drop down button. To the right of it, you have a column called "Values". Type in the table you wish to maintain, in our example, we will type in "V_T510W". On the next line, selection "UPDATE", as we want this to be a maintain transaction. If we want it to be a display transaction, we would choose "DISPLAY". To the right under the "Values" column, put an "x" as the value for it.

These are the basic values you need to create a transaction code and link it to a table for you to maintain w/o having to give out access to transaction SM30/SM31 where the user might be able to enter in any tables they wishes.

Give it a shot and let me know via the comments what you think.

Friday, January 26

Request For SAP Marketplace ID (OSS ID)

I came across this method recently while trying to register for a training course off SAP education website. Apparently you could easily obtain an OSS ID through their website, granting you have access to the SAP environment at the company you are at.
Click HERE to access the registration page.
Upon entering this site, you will be asked to provide a few information. You will need a valid email address from the company you work for and the installation number.

The installation number could be found from SAP GUI. Inside SAP, click on system and status.

Once you complete this registration you will be given a temporary password. Write down the password as you will need it to complete the registration later on.
The system will send you an email to activate the account and registration. At which point you will need the temporary password you've obtained earlier. After you finish this registration process, you will be given an ID starting with the "S". You will be able to use this to log into and OSS Notes.
Good Luck!

Wednesday, January 17

Easily Populate T510F

Often time, most of us forget to populate T510F or don't even know T510F exist. For those who don't know this table, it control what currency to default for the employee at the wage type level on P0008 based upon their country assignment, pay scale type, and pay scale area.
Forunately there is a standard deliver program that will automatically populate this table for you. Go to SE38 and type in program "RPU10F20". This program will look at country assignment on your employee and check to see if there are missing entry in T510F. It will populate for you!

Sample Program Screen:

Sample Executed Output: