Multiple _sqlsrv2.exe processes eating up 50 % CPU in Epicor9. How do I know what is causing it

You can use DBCC INPUTBUFFER() from sp_who2 (I would use the sp_who2 over sp_who) This will show you the lastest running transaction for the that SPID. It will also show you any locking/blocking. Which can happen.

I cannot agree more with Jose Kill is great, but use with caution, if at all.

Here is a link about the two What is difference between SP_WHO & SP_WHO2?

If you are interested in going deeper then you can use tools like sp_WhoIsActive by Adam Machanic.

This link has some more SQL information

It can be rather interesting to delve down looking at things and how SQL works, but it all takes time and at the end of the day we want to resolve the problem with as little impact to our users, and restarting the server does sound like a sledge hammer approach.

Is the report a custom or out of the box?
I am assuming there is a BAQ behind the report, what does it do?