Вот странный код ....
update F
set F.RRP = final.RRP
from Filemaker.DBO.BatchAverageSales as F
cross join
(select product.fldProductPrice as RRP from PRODUCT) final
final.RRP одинаков на каждом шаге вашего цикла и (я думаю) равен fldProductPrice в последней записи таблицы Product.
Может быть так и должно быть
update F
set F.RRP = final.RRP
from Filemaker.DBO.BatchAverageSales as F
cross join
(select product.fldProductPrice as RRP from PRODUCT
where fldProductCode = F.PLU ) final
Или (на мой вкус) более короткое решение
declare @BatchID int = 2404
update BAS
set RRP = P.fldProductPrice
from Filemaker.dbo.BatchAverageSales BAS
join Product P on F.PLU = P.fldProductCode
where BAS.BatchID = @BatchID