Skip to Content

Summary of configuration options in ESS Personal Information scenario

ESS Personal information scenario is one of the most commonly and heavily customized scenario. With Enhancement package 5 a newly architected ESS Personal profile was released based on WD ABAP and FPM. The backend parts remained mostly same as JAVA scenarios but some new layers and customizing options are introduced. This blog gives  “Architectural Deep-Dive” to understand what are extension possibilities and in which layers.

This blog assumes that you are familiar with basic infotype concept, with using customizing tables, BAdIs and FPM configurations.

See diagram below to understand layers of coding and configurations

ESS_PersInfo Layers.png

Layer 1: PA Infotype framework

IMG: Personnel Management -> Personnel Administration -> Customizing Procedures -> Infotypes

ESS personal information scenario uses “Decoupled Infotype framework”  . In this layer the actual business logic is implemented. This logic is independent of ESS and is reused in other layers as well. The logic is implemented by means of a business logic check class.  If you decide to implement a change in logic of existing infotype or decided to create a new infotype then you start at this layer.

Customizing options

Transaction PM01 – Enhance or create new infotypes

Business logic check classes: V_T582ITVCLAS, V_T582ITVCHCK

BAdIs:

HRPAD_SUBTY_CHECK – Validation of permissible subtypes (normally not needed due to standard customizing tables)

HRPAD00INFTYBL – To create customer specific validations and update logic

HRPAD00INFTYDB – To write DB update logic (e.g. to write additional customer tables or log tables)

Customizing field attributes: V_T588MFRPOPS (SAP standard), V_T588MFPROC (customer specific)

Test Transaction: PUIT_UI can be used to validate the changes made

Layer 2: PA UI Conversion Layer

IMG: Personnel Management -> Personnel Administration -> Customizing Procedures -> Infotypes

In this layer the infotype structures are adapted so that they can be easily consumed in UI consumption layers built above. Screen structures are created so that they have fields required for UI layers like description and text fields, fields from infotype views ..etc. For infotypes which have repeat fields (like wagetypes in 0008) line structures are created. For each UI structure a conversion class (defined in T588UICONVCLAS) is used which performs input/output conversion from infotype stuctures to screen structures. In this layer the screen structures are created such that each country version has its own structure.

This layer needs to be considered if you have created a custom infotype or extended standard infotype structures with custom fields which require some explicit input/output conversion.

You can use this layer if you need to change some metadata of UI fields (like mandatory, hidden)

Customizing options

Transaction PM01 – Enhance or create new infotype UI parts

UI Logic Conversion classes: V_T588UICONVCLAS

BAdI: HRPAD00INFTYUI – To write UI conversion logic, mapping of fields and field attribute determination

Test Transaction: PUIT_UI can be used to validate the changes made

❗ NOTE: Enhancements done in Layer1 and Layer2 are independent of ESS and are also applicable for other scenarios like HCM Processes and Forms and in future releases for HR Administration UI. If you write any logic or change any attributes then they will be also applied in other UI screens

Layer3: ESS Adapter Layer

IMG: Personnel Management -> Employee Self-Service (Webdynpro ABAP) -> Service-Specific settings  -> Personal Information

On top of UI conversion layer ESS Adapter CL_HRPA_PERNR_INFTY_XSS is developed. This layer performs ESS specific operations like Create,Read,Update,Delete. This layer performs some specific extensions to business logic by providing specific customizing options.

Examples of customizing options: ESS specific timeconstraint handling also known as ESS use cases which control visibility of Create, Delete, Update buttons and display of validity fields. This layer also restricts which subtypes are allowed for ESS. In this layer also specific logic of reuse of country version structures for other countries are allowed.

Customizing options

V_T7XSSPERSUBTY – Assign permissible infotypes and Use cases (time constraints and validity periods)

BAdI HRXSS_PER_SUBTYPE – Programmatically control visibility of subtypes and use cases that can not be statically defined via V_T7XSSPERSUBTY

V_T7XSSPERFORADD & BAdI: HRXSS_PER_FOREIGN_ADDRESS  – Define permissible Foreign Address handling

V_T7XSSREUSEUISN – Allow reuse of country versions screens in other country versions

BAdI: HRXSS_PER_BEGDA – Control visibility of records and set default begin dates[GK1] . For e.g., to enable past data editing. Or, restrict editing to starting from future date – for e.g., begin of next month.


Layer4: BOL/GenIL layer

IMG: Personnel Management -> Employee Self-Service (Webdynpro ABAP) -> Service-Specific settings  -> Personal Information

The Business Object Layer (BOL) model is a programming concept that allows for uniform application development, decoupled from interface changes in the underlying business-object-specific Application Programming Interfaces (APIs).

This layer initially built for CRM UI is now used in many business suite applications.

For HCM the model name is HRPAD. As of now this model is used for ESS but in future releases this model is used for even HR Administration scenarios. The model is implemented by a Generic Interaction Layer class CL_HRPAD_IL.

This layer needs to be considered only when a new custom infotype needs to added.

Customizing options

Transaction: HRPAD_EDIT_MODEL – To introduce new infotypes

Transaction: GENIL_MODEL_EDITOR – To check and transport models

Test Transaction: GENIL_BOL_BROWSER  can be used to validate the changes made and data is visible in BOL (This transaction needs some knowledge and not very easy to test)

Layer 5: ESS UI Layer using FPM

FPM Layer offers countless number of possibilities to enhance the standard applications so you need to decide what really needs to be changed and for which portions you want to copy standard configurations or feeder classes.

http://scn.sap.com/community/erp/hcm/employee-self-service/blog/2012/06/07/enhancing-essmss-wd-abap-applications-based-on-fpm

Layer 5.1: UI Feeder classes

Personal information Overview and detail screens are built using FPM GUIBB. The metadata, actions and events are processed using FPM feeder classes CL_HRESS_PER_OVERVIEW and CL_HRESS_PER_DETAIL. In some cases there may be infotype specific feeder classes.  In case if you are not able to achieve logic enhancements using any layers below then this is your last fallback option.

Layer 5.2: UI Configurations

Personal information scenario uses FPM Overview floorplan (OVP).  HRESS_CC_PER_OVP is the component configuration that can be enhanced to add/enhance the UI blocks

For every infotype screen a list and detail configuration is created. Example HRESS_CC_PER_OVR_BANK_XX and HRESS_CC_PER_DTL_BANK_XX. You need to enhance these to create customer specific configurations

Layer 5.3: UI Composition Configuration

Personal information profile uses various country specific configurations dynamically. This is achieved by Application controller component HRESS_C_PERSINFO_CONFIG. You can configure HRESS_CC_PER_CONFIG to dynamically replace the UIBBs.

In standard implementation the dynamic assembly is done based country/molga of employee but you can use BAdI HRESS_PER_CONFIG_KEY so that other parameters like Employee group, Subgroup can also be used.

WD ABAP Application

WD Application HRESS_A_PERSINFO is used with application configuration HRESS_AC_PERSINFO. You can also pass some application parameters to influence the UI behavior (e.g. starting from enhancement pack 6 you can make profile read only)

Some typical scenarios to enhance ESS Personal profile

Note: You have many alternative ideas to implement every scenario but this table just gives a guidance

Layer 1-4 requires backend customizing and development knowledge to implement BAdI

Layer 5 requires FPM knowledge

Apart from this you may go for implicit coding enhancement options at various layers but it is not recommended since SAP may change internal processing logic in future releases.

Scenarios

Possible Layer affected (customizing required using customizing tables or BAdIs)

Changing field attributes – making field mandatory, read-only, hidden

Layer 1 & 2 if this is not specific to ESS

E.g. V_T588MFPROC or BAdI HRPAD00INFTYBL or HRPAD00INFTYUI

Layer 5.1 and 5.2 if this attribute change is specific to ESS using configuration or feeder classes

Adding or removing existing fields from SAP standard Infotype in ESS UI which are not shipped in default configuration

Layer 5.2

Adding or removing customer specific fields in SAP Standard infotype & include them in ESS UI

Layer 1 and 2 – structure changes in customer include and if required UI conversion logic or Business logic validations

Layer 5.2 – Add new fields

Filtering subtypes for ESS only, Changing the timeconstraint for ESS (controlling actions like new, edit, delete button), configuring foreign address scenario

Layer 3

ESS subtype usecases are not sufficient and need more dynamic control to decide if certain action buttons like add, delete should be visible

Layer 5.1

Adding completely new customer infotype

Layer 1,2 – decouple new infotype using PM01

Layer 3 – optional (only if ESS logic is required)

Layer 4 – Add new infotype in BOL

Layer 5.2 (5.1 and 5.3 optional)

Missing country version for standard infotype or reuse another country version

Layer 3 (if reuse is required from different country)

Layer 5.2 and Layer 5.3

Adding new business logic checks & validations

Layer 1 (assumption is that business logic checks are independent of ESS)

Updating other infotypes from ESS infotypes

Layer 1 using BAdI HRPA00INFTYBL

Updating customer specific tables or log files

Layer 1 using BAdI HRPA00INFTYDB

Post processing like triggering some mails/notifications

Use standard processing as far as possible using SWEHR* transactions and standard event processing.

If this is not sufficient then use BAdI HRPA00INFTYDB in Layer 1

If you have more scenarios which you have customized using different technique then do let me know and I can try to include them in the blog!


30 Comments
You must be Logged on to comment or reply to a post.
  • This is really good content. I will check if I can find anything to add. Thanks for sharing!

    Edit> only other thing that I can think of off hand is the whole WDA Configuration and personalisation (administrator especially) layer. Also, I’d like to highlight the danger/need to copy application configurations rather than just customising them. For example, I wouldn’t touch HRESS_CC_PER_CONFIG but would make a copy of it and then point to this in my custom version of the application configuration.

    What this diagram does highlight however, is the complexity of the solution now, and the difficulty of deciding where to best to put logic. Without a little experience it is all to easy to accidentally introduce logic where it isn’t needed (e.g. seeing people enhance/subclass feeder classes to implement logic that could be achieved via config in V_T588MFPROC). Furthermore there is a blurring of the layers, with MVC model being thrown out almost completely (if you look at the solution holistically – as per above diagram). View logic (which fields are display etc) is tied up at a very low level with the data retrieval logic.

    The continued abstraction of the ESS layer (a very clever framework) makes it harder to implement any changes where SAP standard logic does not meet the customer’s need. For example (and I hope this is addressed in EhP6 as hinted above) when an employee’s record is read-only – due to the personnel number being locked, there is no simple provision for being able to change “edit” buttons to be display ones. Hopefully we can get rid of pessimistic locking altogether – but that’s a different rant to be had elsewhere!

    With this complexity and confusion is a clear need for more excellent explanations such as this blog. Thanks again for sharing!

  • Hello Sagar,

    This is a great summary of the various points of customization for the new ESS WD4A applications. The frustrating aspect of this change is that things are quite different from Enhancement Pack to Enhancement Pack.

    For example, in EnhP5 you can enter directly into update/change mode for component configuration HRESS_CC_PERSINFO_CONFIG via SE80 but in EnhP6 similar steps to get to update mode prompt you for an object/access key. The documentation mentions that the maintenance of HRESS_C_PERSINFO_CONFIG component configuration has been delegated to a new component HRESS_C_PERSINFO_CONFIG_C but there does not seem to be a clear way to call this new maintenance component.

    Would you happen to have any pointers or hints on how to maintain the HRESS_CC_PERSINFO_CONFIG component configuration in EnhP6 or do we truly need to treat any updates to this component configuration as an enhancement or core code modification now?

    • Hi Graham,

      Even in EhP5 you shouldn’t be directly maintaining the standard SAP application and component configurations. Instead make copies of these into the customer name space.

      It does mean making a lot of copies of standard objects, and gets very confusing when dealing with MSS views and profiles, but means you are much safer in the case of a new enhancement pack being applied.

      Chris

      • Thanks for the tip Chris…this is helpful and Sagar just confirmed your direction below…I was trying to see if there was a way to do this customization to the standard WD4A application configuration and component configuration without having to make copies of them. The documentation is somewhat inconclusive about this ;-p

        Not a big deal…made the copies and updated the Role to point to the new application configuration and all works as anticipated so far!

    • Please check the blog & documents below regarding general recommendations regarding enhancing configuration content delivered by SAP.

      http://scn.sap.com/community/erp/hcm/employee-self-service/blog/2012/06/07/enhancing-essmss-wd-abap-applications-based-on-fpm

      & FPM documents http://scn.sap.com/docs/DOC-28799

      It is not recommended to modify the SAP configuration directly.

      Regarding HRESS_CC_PERSINFO_CONFIG I think it is better to do a copy and use this copied configuration in application config.

      I am also not sure what you mean that HRESS_C_PERSINFO_CONFIG_C is not getting called. I have checked that whenever you go to configuration mode this component is getting called internally even in EHP6. 

      • Hello Sagar,

        Thanks for taking the time to respond…the documentation seems to indicate that the standard application and component configurations should be able to be updated…that’s what I was trying to do and was running into a brick wall with that!

        As for HRESS_C_PERSINFO_C…the documentation again is a little confusing (at least in English) as it seems like maybe the direct maintenance of the component configuration HRESS_C_PERSINFO was possible somehow using this other component. I can see now that it is actually called properly.

        Appreciate you taking the time to educate the newly initiated ;-p

  • Hello Sagar,

    Thanks for very Good Blog.

    I have scenario’s where need to add some custom ESS functionality only in ESS and no need to effect any other place like while updating data in PA30.

    I need to call some FM after SAVE operation in ESS address details… This Business logic is specific to ESS only… can you help where we can write custom logic (calling FM) after ESS address SAVE operation?

    Initially I thought we can write in BADI’s. But  after seeing you block my assumption is wrong after looking at this  line: Adding new business logic checks & validations—> Layer 1 (assumption is that business logic checks are independent of ESS)

    Is I am correct ? or still we can use same BADI’s when we need to develop some business logic specific to the ESS application ?

    Can you guide me…

    Thanks for your time and help.

    Regards

    Mallikarjuna P

  • Very useful – thank you very much!

    I have one question regarding the BADI HRXSS_PER_SUBTYPE – I want a particular subtype of IT0105 (communication) to be display-only.  My interpretation of this BADI is that it could achieve this by setting field DISP_ONLY in table HRXSS_PER_SUBTYPE_INFO_T, but doing this has no effect, the subtype still has the pencil edit icon beside it (the code in my BADI implementation is being executed).  Is this correct or am I missing something?

    Thanks

  • Hi Sagar,

    Great content as usual and lots of information ! Please keep up the good work. I have always wondered why SAP doesn’t provide sufficient information anytime they introduce a new application or tool (such as ABAP WD EP6 or HR Renewal 1.0 or NW Gateway or FPM Processes and Forms). Information is available unless one attends those conference (not everyone is privy to that) or have valid access to service market place.

    Your blog (and many of the HCM mentors blog) come as a respite for many of us with such valuable information.

    Thanks

    Rinky Karthik

  • Hi Sagar,

    Nice Blog!! I have one doubt here. I tried this method and modified V_T588MFPROC table for Infotype 0002 and to make Date Of Birth Read only but the when I tried to save the data the Error message appears as Invalid Date of Birth. It still checks the value in DOB field.

    How do get rid of the message?

    Also I read old note 1498555 that says I should also edit V_T588M and V_T588MFPROPS, but they have mentioned it for WDJ. Does that still apply here or is it some other isssue?

    Regards,

    Porselvan

    • Please check the underlying classes. Sometimes the classes country specific or standard international version will have some coded logic which overrides the customizing settings and you may get these errors.

      V_T588MFPROPS is SAP delivered customizing and you should not change this. V_T588M is not relevant for ESS.

  • hai sagar,

    wat is the use case we have to give for graduation and post graduation can i know in sm30

    v_t77xsspersubtyp …can i know

    Regards,

    JWALA,

    ESS MSS

  • Hi,

    Wonderful blog.

    But I have few questions. I wanted to make bank details service as read only and in address service also I want permanent address as read only.

    I tried multiple ways, couldn’t make it. Can you help.

    Thanks,

    Bhushan

  • Hi experts;

    HR Profesional:

    I’m looking for a table or something that gives the following reference :

    Intotype -> ref structure.

    I.e: P0001 (international)->HCMT_BSP_PA_XX_R0001

    I need to know where come from the key in the table T588UICONVCLAS.

    Thanks a lot.

    • Hi Marc,

      T588UICONVCLAS has 1:N mapping between infotype:structures.

      There is no  lookup table that can give you 1:1

      You can also read using INFTY and VERSIONID (most cases same as MOLGA).

      So the key (Structure name) actually comes from consuming UI layer.

      Do a where used on this and you will find code

      Hope this clarifies….

      • Thanks for your answer but unfortunately it’s not helping.

        All I need is : How SAP “chooses” to use the structure HCMT_BSP_PA_XX_R0001 (for example) for infotype 0001 and Molga international (99).

  • Hi Sagar,

    Thanks for sharing such a usefull information.

    I have a doubt here. I have added 0077 infotype in personal profile in ESS.

    but veteran data is not getting saved in PA20/30. disability data is fine as it reflects at the backend from the frontend but not veteran status data.

    I can see changed data in PA0077 table but not in transaction.

    what could be the reason?

    Thanks

    Seema

  • Hi ,

    one question where can I change the setting if attribute is required or not ?

    f.e Type 006 SubType 004

    Communications type and telephone number are required

    • You should do it in V_T588MFPROC, in case if you still have issues, pls open a new thread, we can discuss more detailed and try to address ur issue.