HR_INFOTYPE_OPERATION : Synchronous Employee Data Update
Most often we come across requirement to update employee master data, with synchronously update / modify multiple info type in one transaction.
Intent of given document to brief about approach to update multiple info type by using standard functional module HR_INFOTYPE_OPERATION.
To explain more, we’ll take following illustrating example:
Business needs to created new records automatically in info type 033 as and when records got changed or created for Organizational Assignment (info type 0001).
Thus during updating of info type 0001, simultaneously info type 033 three sub type new records should be created in background.
During such type of requirement we need to give leverage on Dynamic Action i.e. SPRO->Personnel Management->Personnel Administration->Customizing Procedures->Dynamic Actions. But there is lot of challenges with Dynamic action esp. when we need to Create/Update / Delete record with certain validations or substitute some values where integration with legacy system involved.
From ABAP side we do face lot of challenges while using HR_INFOTYPE_OPERATION, primary one will be employee locking issue along with inconsistent commit transaction as internally given functional module called PA40 through means of BDC – Batch Data Communication.
Addition of info group will be another approach but it will involve manual intervention. Thus most of the user will discard that approach.
Step 1: As a first step, we’ll create / change in employee master data for Organizational Assignment i.e. 0001 Info Type through transaction code PA40.
Step 2: With “SAVE” action of the above, Update task will be triggered .We’ll implement standard BADI HRPAD00INFTY, Method IN_UPDATE, which will be called during update task. As required, we’ll lock employee to create other info type data synchronously in background.
Afterwards,we’ll call our custom functional module ZHR_FM_UPDATE. So, all required business logic will be encapsulated in custom
functional module ZHR_FM_UPDATE.All import / export parameters can be custom adjusted as per requirement.
Step 3: In this functional module ZHR_FM_UPDATE, we’ll create new LUW, with unique identifier w.r.t Info type + Date + Time for background task.
Step 4: As we need to trigger HR_INFOTYPE_OPERATION in new background task, we must to have RFC enable functional module. But
HR_INFOTYPE_OPERATION is not RFC enabled thus we need to create wrapper for the same.
Thus we’ll create new wrapper functional module ZHR_FM_UPDATE_LUW, containing below given flow logic to create info type data for 33 i.e. Statistics records will be created.
Good part we can have re-usability to implement any custom logic in case if needed before updating of records . 🙂
As needed, we can create multiple LUW (Task) to update different info type one after another.
Step 5: Last but not least, employee needs to be unlock through BAPI_EMPLOYEE_DEUEUE and HR_PSBUFFER_INITIALIZE. Afterwards execution will be back to update info type 001 – Org. Assignment records. Thus in one transaction, multiple records created for given employee.
Hope document will be helpful to cater synchronous employee details update.
Very useful piece of information.
Really it is very good informative and useful.
Keep posting more such information.
Nice article & it's informative & valuable.
Pranav, This is really a very useful information.
Thanks Pranav for information....Keep contributing to SCN.....!!!
Уou can use another method:
PERFORM insert_infotyp IN PROGRAM sapfp50p USING ls_p0033 insert_check no space error_flag no.
PERFORM update_buffer IN PROGRAM sapup50r.
PERFORM put_infotyp_buffer IN PROGRAM sapfp50p.
Thanks for sharing additional detials but I'm not sure we can update multiple info type in a synchronous call.
To update infotype records need to use PERFORM update_infotyp(sapfp50p) USING lp2001.
If multiple entries:
LOOP AT lp2001.
PERFORM update_infotyp (sapfp50p) USING lp2001. "XLCK110968
Example of use can be seen in MP200140 line 1274.
For OO use PERFORM update_infotyp IN PROGRAM sapfp50p USING lp2001.
well explained blog..
Hi Pranav Satpute
thank you for sharing.
You use FORM f_receive_result ON END OF TASK ??