HI Mark,
this looks like somewhere the system expexts a currency (and where it should probably be SAR, if you use Riyal only), where the field is actually empty. So, it is looking for an exchange rate between blank and SAR.
First to check would be IT0008 of the employee. Is teh currency filled there? if not, check the payroll currency config.
You may also be missing a currency in T510 or a related table (not sure from the top of my head, where it sits).
Also check the company codes involved.
It will probably involve a bit of digging.
May be some inconsistency, where a currency was missing in config initially and has been added later, but in the meantime the empty currency field has infected data or config captured in between.
If you are technically minded, the surest way to find the issue probably is:
1) run it again with the database table trace switched on (tcode ST01) and then see, which tables with currencies might have been read. Unfortunately, pazroll will read a huge number of tables, so might be to messy to cut therough
2) debug function WPBP (access coding via transaction PE04 to set break-point)
hope thsi gives you a coupleof ideas to attack the issue successfully.
kind regards
Sven