Did you (in sequence)
- Lock the employee record, e.g. Call FM BAPI_EMPLOYEE_ENQUEUE or HR_EMPLOYEE_ENQUEUE
- When failure: raise error
- Refresh memory : Call FM HR_PSBUFFER_INITIALIZE (in case of mass update)
- Try to update the data : Call FM HR_INFOTYPE_OPERATION
- When failure: Call FM BAPI_TRANSACTION_ROLLBACK, raise error
- Commit the data : Call FM BAPI_TRANSACTION_COMMIT (if you used NOCOMMIT parameter)
Regards,
Raymond