Hi,
What your background task is doing ? Are you using any standard task and method, if so then please let us know.
Also, instead of using function module PT_ARQ_REQUEST_EXECUTE, use below class methods for changing the leave status.
"" Get the request object from request id, pass request id from workflow
call method cl_pt_req_badi=>get_request exporting
im_req_id = iv_request_id
importing
ex_request = lo_request.
*-- Initiate the State Transition to APPROVED
call method cl_pt_req_badi=>initiate_state_transition
exporting
im_request = lo_request
im_event = cl_pt_req_const=>c_reqtrans_approve
importing
ex_new_status = lv_new_status.
commit work and wait.