Hi,
You could check if you can withdraw the request instead of using the deletion command. I cannot remember the details but there should be some kind of state transition or status change method for leave requests. This will change the status of the leave request for withdrawn (or cancelled or whatever). I have used it before and it works.
Then you could check transaction PTARQ. There is a functionality to delete leave requests. Perhaps you can debug it and see what it does, and then copy the relevant code to your own code.
Then of course you can try to debug the PT_ARQ_REQUEST_EXECUTE with the deletion command and try to see what is wrong with it. I remember having problems with these same functions. I think that they were originally meant to be used by the standard leave request web dynpro application. If you try to use them from your own code, you might see strange behavior. I've been there...
Regards,
Karri