Support The Site

Monday, May 12

How To Transport Organizational Structure

After spending hours creating an Organizational Structure, it is rather silly to recreate that for each environment you have for testing purposes. One simple solution to that vs doing an entire system company is to use a standard delivered tool from SAP. This tool could be used in several different way, we'll get that into that in a bit.

SAP deliver a really neat tool called "Manual Transport Link". You can access it via transaction SE38 and progam name RHMOVE30.

What this program does is allowing you to capture PD/OM objects and place it in a transport you can easily release and apply to other clients / systems.

To start, let say for example you want to transport organizational structure and all positions below it. WIth that, you will start with creating 1 transport containing all O objects. Specify the O objects, all for reporting period, and add it to the transport. To specifically capture the position, specify the evaluation path in the selection paramters for it to find the position and add that to the transport.

Do some trial and error testing of this in a sandbox environment with different selection variations to see how it operate. You might find the best combination that fit your needs.

I was at a SAP implementation with the production orgranizational structure was maintained in a DEV environment during the lifecycle of the project. Using this allows you to transports exactly how production structure will look like to all your environment. Thus easily replicating conversion cycles multiple times and cutting the time out from converting OM objects. Pretty neat huh?!

Friday, May 9

Maintaining Long Text on PA Infotypes

Out of the box functionality, you can type in comments through PA30 on some of the infotypes.

But how do you have this cool feature for other infotypes, such as custom infotypes or infotypes not automatically default out of the box?

You can! Very easy as the matter of fact. You can point your table to V_T582A or go to the IMG via SPRO -> Personnel Management -> Personnel Administration -> Customizing Procedures -> Infotypes -> Infotypes

Select the infotype you want to maintain and select "Text Allowed". Whoa la!

Under Standing PS Grouping and ES Grouping

I came across a posting on SDN recently with a user confused with PS Grouping and ES Grouping in payroll. This is actually very simple to use.

Personnel Subareas for Primary Wage Type (PS Grouping - table V_001P_K) allows you to give a grouping to the combination of Personnel Area and Personnel Sub Area.

Employee Subgroups for Primary Wage Type (ES Grouping - table V_503_G) similar to PS Grouping, allows you to group combination of Employee Group and Employee Sub Group.

These two grouping will be later used in a permissibility table "Define Wage Type Permissibility for each PS and ESG" (table V_511_B) The grouping value identify what position in the table V_511_B it should look at to determine permissibility.

So as you can see, if you specify the PS Grouping is 3, thus meaning in the permissibility table it should look at position 3 to find the value Blank, 1, or 2 to determine if the person is permissible to be using a particular wage type.

Wednesday, April 30

Enterprise Compensation Management: Budget Management

The root of a sucessful ECM usage starts with budget management. Since the early version of compensation in SAP until now, the budget management had grown and become a fairly useful tool inside ECM.

What is budget management in ECM? Budget Management allows you to determine funds for an organizational structure for a particular compensation plan. The funds are then distributed across sub units and track in the ECM module through award process.

Some organization choose not to use the budget functionality of ECM, but it is highly recommended to do so. There are reports in both SAP and BI to support this functionality.

The first step is to generate the budget structure. You can either do that through the web BSP via "PECM_START_BDG_BSP - Start Budget Administration" or "PECM_GENERATE_BUDGET - Generate Budget from Organizational Hierarchy". What this does is create the budget object (OTYPE 'BU' - Is Finance By) and have a relationship to the organizational unit via HRP1001. No monetary amount has been allocated yet.

Once the budget structure has been created, you can then allocate funds. You can either import it from PCP (Personal Cost Planning) functionality or manually allocate the funds accordingly. Some company will not even allocate any amount and let the amount show up as negative during planning to track spending. Either options will work.

After you are done with the allocation or lack there of, you can then release the budget structure to be use in the ECM module.

As you use this functionality more, you will either like it or hate it. While it is not extremely robust, it does serve the purpose. One enhancement you could do to this, is assist in the creation of the budget amount. This will take away the painful process of manually allocating a large structure for those who are not integrated with PCP.

One method to accomplish this is to use a standard delivered BADI allowing you to upload your own source of number from spreadsheet.

Another method is to use an ABAP program to generate the amount into infotype 1520. At a company I was at previously, we used this route in the old compensation management module (not ECM). The program will check for all eligible population, determine their annual salary amount and apply a standard percentage amount from program selection screen to determine starting budget.

Whatever method you use, having this budget management functionality available is an import part of ECM. Through the MSS tool, the manager can see how much money he/she has spent and are available. This will allow a more efficient and smarter compensation decision on the manager side.

Let me know your thoughts...

Thursday, April 24

HCM Commonly Used Transaction Codes

I was browsing the other day and came across a nice list of commonly used transaction codes for HR.

Master Data
PA10 - Personnel file
PA20 - Display HR Master Data
PA30 - Maintain HR Master Data
PA40 - Personnel Action
PA41 - Change Hiring Data
PA42 - Fast Data Entry for Events
PRMD - Maintain HR Master Data
PRMF - Travel Expenses : Feature TRVFD
PRML - Set Country Grouping via Popup
PRMM - Personnel Events
PRMO - Travel Expenses : Feature TRVCO
PRMP - Travel Expenses : Feature TRVPA
PRMS - Display HR Master Data
PRMT - Update Match code
PS03 - Info type Overview
PS04 - Individual Maintenance of Info types

Time Management
PA51 - Display Time Data
PA53 - Display Time Data
PA61 - Maintain Time Data
PA62 - List Entry of Additional Data
PA63 - Maintain Time Data
PA64 - Calendar Entry
PA70 - Fast Data Entry
PA71 - Fast Entry of Time Data
PBAB - Maintain Vacancy assignments
PT01 - Create Work Schedule
PT02 - Change Work Schedule
PT03 - Display Work Schedule

PC00 - Run Payroll
PC10 - Payroll menu USA
PE00 - Starts Transactions PE01 PE02 PE03
PE01 - Schemas
PE02 - Calculation Rules
PE03 - Features
PE04 - Create functions and Operations
PE51 - HR form editor
PRCA - Payroll Calendar
PRCT - Current Settings
PRCU - Printing checks USA
PRD1 - Create DME
SM31 - Maintain Table
SM12 - Locked Secessions
TSTC - Table Look up
SE16 - Data Browser (Table Reports)
PP03 - PD Tables
PPOME - Change Org Unit
PO13 - Maintain Positions
PO03 - Maintain Jobs

PA85 - Benefits - Call RPLBEN11
PA86 - Benefits - Call RPLBEN07
PA87 - Benefits - Call RPLBEN09
PA89 - COBRA Administration
PA90 - Benefits Enrollment
PA91 - Benefits - Forms
PA92 - Benefits Tables - Maintain
PA93 - Benefits Tables - Display
PA94 - Benefits - Access Reporting Tree
PA95 - Benefits IMG - Jump to Views
PA96 - Benefits reporting
PA97 - Salary Administration - Matrix
PA98 - Salary Administration
PA99 - Compensation Admin - rel. Changes
PACP - HR-CH : Pension fund, interface

General Reporting
PM00 - Menu for HR Reports
PM01 - Dialogs in HR - Create Custom info types
PRFO - Standard Form
PSVT - Dynamic Tools Menu
PAR1 - Flexible Employee Data
PAR2 - Employee List

Organizational Management
PPOM - Change org Unit
PO03 - Maintain Jobs
P013 - Maintain Position
PO10 - Maintain Organizational Unit
PP01 - Maintain Plan Data (menu-guided)
PP02 - Maintain Plan Data (Open)
PP03 - Maintain Plan Data (Event-guided)
PP05 - Number Ranges
PP06 - Number Ranges Maintenance HR Data
PP07 - Tasks/Descriptions
PP69 - Choose Text for Organizational Unit
PP90 - Setup Organization
PP01 - Change Cost Center Assignment
PP02 - Display Cost Center Assignment
PP03 - Change Reporting Structure
PP04 - Display Reporting Structure
PP05 - Change Object indicators (O/S)
PP06 - Change Object indicators OS
PPOA - Display Menu Interface (with dyn.)
PPOC - Create Organizational Unit
PPOM - Maintain Organizational Plan
PPOS - Display Organizational Plan
PQ01 - Events for Work Center
PQ02 - Events for Training Program
PQ03 - Events for Job
PQ04 - Events for Business Event Type
PQ06 - Local Events
PQ07 - Resource Events
PQ08 - Events for External Person
PQ09 - Events for Business Event Group
PQ10 - Events for Organizational Unit
PQ11 - Events for Qualification
PQ12 - Resource Type Events
PQ13 - Events for Position
PQ14 - Events for Task
PQ15 - Events for Company
PSO5 - PD : Administration Tool
PSOA - Work Center Reporting
PSOC - Job Reporting
PSOG - Org Mgmt General Reporting
PSO1 - Tools Integration PA-PD
PSOO - Organizational Unit Reporting
PSOS - Position Reporting
PSOT - Task Reporting

PB10 - Initial Entry of applicant master data
PB20 - Display applicant master data
PB30 - Maintain applicant master data
PB40 - Applicant events
PB50 - Display applicant actions
PB60 - Maintain Applicant Actions
PB80 - Evaluate Vacancies
PBA0 - Evaluate Advertisements
PBA1 - Applicant Index
PBA2 - List of applications
PBA3 - Applicant vacancy assignment list
PBA4 - Receipt of application

All efforts goes to:

While this is a pretty large list, it by no means cover all transaction codes available for HCM.

Wednesday, April 16

PU12 Interface Toolbox FAQ

A few months ago, I had came across a pretty informative Payroll PU12 FAQ. Here are some of the questions and answers:

  • Why is an OR segment generated when only the name field was changed on the Personal Data infotype 0002?
    The OR segment containing organizational information is generated if a change is made to the name on Infotype 0002. The ENAME and SNAME fields on the OR segment are derived from the name field on IT0002. A change to the Form of Address field on Infotype 0002 will also cause an OR segment to be generated as this is considered a “change” to the name field as well.
  • Why do some IDoc segments contain chevron (<) signs in certain fields?
    The chevron sign (<) signifies data within the segments is delimited or stopped. For specific segments it is necessary to generate one segment showing the original (old) infotype values and another with the changed (new) infotype values in order for the payroll service providers to know what needs to end on their side and what needs to be set up as new.

  • Why was an IDoc segment generated when no data was changed on an infotype?
    A segment might appear in which fields contains pound signs when a field or fields were added to the segment definition as part of an LCP or an OSS note. The next time the export is processed after the LCP or note has been applied to the system, the segment will be generated containing pound signs. A way around this would be to run a “baseline” after the update which should not be sent to the payroll service provider. This is done by running the export with the “All data, not diff’s only” option without “Update”.

  • Are future dated master data changes exported?
    Master data changes with a future BEGDA date are not exported until the effective date falls within the pay period being exported. An infotype with a future ENDDA date (other than 12/31/9999) is exported twice. Once when the change is first made to the infotype and again when the ENDDA date falls within the pay period being exported..

  • How can a wage type be allocated to a cost center that is different than either the home cost center or normal fixed cost center distribution?
    A wage type may be designated to a specific cost center as an override to either the home cost center or to normal fixed cost center distribution allocations through the use of the cost center allocation override feature available on infotypes 0015, 2001, 2005 and 2010. The override cost center associated with the wage type is contained in the KOSTL field on the wage type segment (MW).

  • Why does the IDoc contain two of the same segments for some changes and for others only one?
    For infotypes that are associated with a time constraint, information from the "delimited" infotype is generated in one segment while the new information is generated in another. For infotypes that are not time constrained, only one segment is generated.

  • A reference ID number was entered in the REFID field on Infotype 491 but this value did not appear in the KY segment of the IDoc. Why?
    In order for the REFID value to appear in the KY segment, feature OTVSN must be changed (and regenerated) to allow for this field to be included in the IDoc. The default is blank which means this field is not included on the KY segment.

  • A master data change was made with an effective date of a prior pay period. Will this change produce a retro-calculation to occur to a wage type?
    With the Master Data Export version no retro-calculations are generated but the new wage type value is processed. If a prior-pay-period master data change is made that could result in a retro-calculation, the amount of the retro-calculation may be entered as a one-time payment on Infotype 0015 or entered directly into the service provider's system.

More could be found on SAP Help Site.

Saturday, April 12

SAP HR 2008 Conference

For those who won't know yet, the next SAP HR 2008 Conference will be in Nov 2008 @ Amsterdam.

It is a highly recommended conference for those who could attend. Especially for companies in the middle of an implementation or planning to implement a functionality. It is where other SAP HR users get together and share their idea.

Navigate your browser to for futher details.

Thursday, April 10

Setting Up A New Payroll Area

This step usually doesn't happen too often as most company payroll area setup are fairly simple. They have one unified frequency of pay and not too much variation of it. However, there are companies who tends to be complex. Creating a payroll area to match up for each company code they have. So whenever a new company is onboard, a new payroll area occur, this is when this help become useful.

To setup a new payroll area is fairly simple. Guide yourself in the SPRO / IMG to Personnel Management -> Personnel Administration -> Organizational Data -> Create Payroll Area.

You'll might be thinking, why are there two "Create Payroll Area"? If you have been using SAP long enough you will tend to notice this is a common thing. As to why, no freaken idea.

The first one of the two is where you will be creating the actual Payroll Area, you want to start there first.

As normal with any SAP tables, you have a two character short key and a description. If you do SAP Payroll, this is where you would flag if this is used for payroll processing. Otherwise, leave it blank.

In the next Create Payroll Area node, this is where you will link the period parameter and date modifier. Assumping the date modifier and period parameter hasn't changed. If they did, you would need to configure that as well.

You can find their configuration under the IMG step Payroll -> Payroll: {country} -> Basic Settings -> Payroll Organization -> Define period modifiers

To default the payroll area in infotype 0001, you can "Check Default Payroll Area" in that node. Depending on how your company organize the defaulting, you can follow the feature tree and to setup the default.

The next step is to create the payroll control record for it, if you been maintaining it in the past you would know it is transaction PA03.

That is basically it when you want to utilize a new payroll area.

Until next time!

Wednesday, April 9

Identifying Transaction Code In SPRO / IMG

I came across a thread a few weeks ago on one of the SAP support forum asking on how to identify transaction code in certain IMG / SPRO nodes (SAP configuration area). It made me ponder a bit because I usually do the long route by typing SPRO and drilling down the IMG path. Knowing some of the key transaction codes (TX Codes / T-Codes) would be helpful to place on your favorites to save time.

The method to find this out is very easy. You would first need to activate "IMG Activity" in the Additional Information menu on the Display IMG

Using the information displayed (as shown above) from activating the additional information of IMG activity, you can use SE16 or SE16N and query off a table CUS_IMGACH

When you query the CUS_IMGACT table using the IMG Activity name, one of the return value from that table is Transaction Code found under the TCODE field.

Now you can either type in the transaction code each time you would like to visit that node or easily add it to your favorite to be used. Cool stuff huh!

Distribution of HR Master Data

A couple of years ago I was on a project where they implemented HR, CRM, SRM, FI, and other modules in one large implementation. What made it interested is each of these modules sat as their own instance / system. So HR data is not on CRM or SRM environment.

What was useful is the fact SAP offer a really nice tool to handle that. The transaction code is "PFAL" - HR ALE Distribution of HR Master Data. This program relies on the ALE Message Type structure, but is able to send HR data from one systems to another. You could use one of the standard deliver message type, such as the HRMD_A or HRMD_B or even HRMD_ABA (this one is recommended if you use Management Global Employee functionality in HR).

If you dont need all of the infotype provided in the message type, you could create a reduced message type of it and call that. One the functionality, when passing HR data, you could have it go by evaluation path, which allows it to also take relationship on the OM side as well. It will pull the object, create the object, and their related data.

Bare in mind since this require some ALE distribution, you will need to involve the SAP Basis team to help you setup the message type and the RFC connection.

Either case, it beat writting a new ABAP program to extract and load through old fashion flat file.

Tuesday, April 8

Mass Change Start Date On OM Objects

Now how do you go about changing start date / effective date on an OM objects and their related infotypes easily. With this cool transaction code, you can. You can do it to one object at a time or multiples!

Navigate yourself to the menu path or use the transaction code RE_RHBEGDA0 (New start date)

As you can see from the screenshot patterns, this can easily take care of multiple infotypes at the same time. Try it out and see what cool things you've learn!

Easily Delimit OM Objects (Positions, Jobs, Org, etc.,)

I am sure a few people have many times wonder about this topic. How can I delimit a position or an OM objects? Do I need to just delimit infotype 1000, what about infotype 1001 or 1008, etc., With this standard delivered SAP program, this answer it all!

You can use a standard delivered SAP program to delimit one or more infotypes on an OM object easily.

You can use
  • RE_RHGRENZ4 - New end date

When using this program, you have several available cool options. You can have the objects and all related infotypes be delimited on a set date. With that, you can chose to either have it delete any future date records post the delimit date or leave it. You can also run it in test mode to see the result before you cause damages!

Try to play around with this in Sandbox and you can see the cool functionality of it.

Thursday, March 27

Organizational Management (OM) Infotypes

I tend to see this questions a lot. Either "What are the OM infotypes" or "What are the PA infotypes". It is always the popular questions among new users and even veterans to SAP. By looking at the infotypes number, it seems like there is no ryhme or reason how they are group, but there actually is.

0000 - 0999 is PA related infotypes
1000 - 1999 is OM/PD related infotypes
2000 - 2999 is Time Management
4000 - 4999 is Recruitment
5000 - 5999 is Erecruitment & E learning
9000 - 9999 is customer specific infotypes

To see a list of all OM related infotypes, you could use transaction code OOIT or table T778T.

On, they do offer a pretty extensive list and description on all of their infotypes. You could check it out @

Tuesday, March 11

Payroll Control Record - Tx Code PA03

For those who don't know what transaction code PA03 is or does, this is known as the payroll control record. It keep tab of payroll status on the payroll area the employees belong to. On infotype 0001 of every employee, they are tied to a payrol area (Payr. Area). The payroll area determine several things, one of which what payroll cycle or frequency he/she belongs to.

Before payroll could be run for an employee, the control record on this payroll area need to be released. This include if you are doing inhouse SAP Payroll or outsourcing payroll through an outside vendor, but utilizes SAP PCL cluster to track payroll run and extraction handle via PU12.

The payroll control record could be view via transaction code PA03 or via table T569V. On the payroll control record, it set the date retro date you can make modification to an employee that impact payroll and what payroll period you are currently in or going to be extracting for. When the payroll is in "released payroll" status, this mean it is ready for payroll extraction to occur for that payroll period. Once extraction is completed, the payroll is in exit payroll status to collect changes for next payroll period.

You could find out more about payroll through this really neat book I got recently.

Friday, January 4

Modifying TARIF Feature

Logic Designed By: K. Nguyen-Tu


The purpose of ZFEATURE_TAIF it to look up job function codes reside on the job object (c) and pass it back to the main TARIF feature for processing.


1) We started with the main feature “TARIF” modification through transaction code PE03 and have it call the ZFEATURE_TARIF custom program

Original Custom Code Attached:
(Due to restriction, the custom code will not be available to the public)

2) In the PA30 user exit, both in the PAI and PBO we have use the set parameter to pass us the information we need to be retrieved in this ZFEATURE_TARIF program. The main purpose of using the SET PARAMETERS route, is the fact out of the box functionality, the feature is limited to use what is defined in the feature structure. Standard program does not have certain values needed such as PERNR, Position ID, etc passed to the main TARIF feature to be used in any custom program below it. The structure TARIF used is PME01, could be look up via PE03.

Sample Set Parameter:

SET PARAMETER ID: 'Z008' FIELD wa_0008-begda.

3) With all of the set parameters done, we can call these parameters within the ZFEATURE_TARIF program to be used to look up data we need through ABAP statements.

Sample Get Parameter:


4) Once all of the logic to look up the data is done, the information is then passed back to a custom feature we could maintain via PE03 called ZTARI. In example screenshot, “FEATURE_TARIF had been defined in the DATA segment above in the program to be ZTARI

5) In the ZTARI feature, we can now proceed with using the returned value and the standard configured decision functionality of a feature to determine the final value to be passed back to the main TARIF feature. Due to the depth of the feature and feature limitation, we had it call another featured called ZTA10 for US.