Skip to Content
Author's profile photo Former Member

HCM Processes and Forms : My Journey around “User Events”

User Events – My recent favorite topic in HCM Processes and Forms. I got a very good idea about the “User Events” from Christopher Solomon’s blog –

After understanding the way “User Events” work, I slowly understood it’s restriction too 🙂

My wish about User Events

The way I expected the User Events to work is when the user event is triggered, the appropriate event can be gracefully handled in the INITIALIZE and DO_OPERATIONS methods of the Generic Service class. Like instead of executing the entire source code in these methods for every User event and Standard events(CHECK and SUBMIT) triggered, I should have an option of executing part of the source code conditionally based on the triggered User event.



The User Events doesn’t really work as I wish ! Both these generic service’s methods(IF_HRASR00GEN_SERVICE~INITIALIZE and IF_HRASR00GEN_SERVICE~DO_OPERATIONS) doesn’t really get the User Event that triggered the event 🙁


Workaround solution

The only way I could realize my above “wish” is with this workaround solution 🙂 ! The solution is passing the “User Event” to these Generic Service methods magically from the HRASR framework. The BADI Implementation for the Generic Service is called in the method IF_HRASR00_MAPPER~DO_OPERATIONS in the class CL_HRASR00_GENSERV_MAPPER –


Create a pre-exit to this method to pass the parameter “EVENT” to Generic Service class(You can use multiple ways to pass this event i.e. enhancing the Interface IF_HRASR00GEN_SERVICE or using IMPORT/EXPORT PARAMETER or using static class method) –


In the Generic Service Class method you can now handle the events gracefully –


* Extract the event


      * Handle Event1 gracefully



      * Handle all custom validations using generic service




Ideal Expectation

Instead of this work around solution, Ideally I would expect SAP to add in one single line of code(along with enhancing the parameter interface for Generic service methods – INITIALIZE and DO_OPERATIONS to accept EVENT)  in the method IF_HRASR00_MAPPER~DO_OPERATIONS in the class CL_HRASR00_GENSERV_MAPPER –

CALL BADI a_gs_badi_basic->do_operations
= special_fields
= service_operations
= no_auth_check
= gs_message_handler

            event              = event
= help_datasets
= service_datasets_do_operations
= loc_ui_attributes.
“No BADI implementation exist
. “Catch dynamic call errors

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member

      Good article.

      Sadly user event does not work as expected. Alternatively, create a service field called USR_EVENT and assign user event value before round trip happen; take this as indicator in DO_OPERATION method and performs as necessary.

      Author's profile photo Former Member
      Former Member
      Blog Post Author

      Thanks Xiangli heah,

      Yah, that's another alternative to resolve the same issue. Well, even with this approach, you would have to enhance the SAP Standard class!



      Author's profile photo Former Member
      Former Member

      From your lips to SAP's ears, Raja. User events have been a pain point since inception and now that WDA forms have freed us from our ISR overlords, we should be able to find a way to extend beyond CHECK and INITIALIZE.  However, this is not quite the case yet. 

      Author's profile photo Former Member
      Former Member
      Blog Post Author

      Agreed Justin,

      At least with this work around solution, we were able to solution many of our issues.

      Yah, I am sure SAP is hearing this feedback and hope they would come up with a stronger and better "User Event" solution.

      Let's see...

      Author's profile photo Ioan Radulescu
      Ioan Radulescu

      did you try defining a user event that you assign to an operation that you defined in the method get_operations of your GS class? DO_OPERATIONS will be triggered and you'll get the operations that are to be executed in the parameter SERVICE_OPERATIONS. Depending on your customising of the form only your custom GS in DO_OPERATIONS will be called and not SAP_PA for instance (depends on how you define the combination of fields).