hen using row level triggers (and BEFORE triggers are always row level triggers), you do not use UPDATE statements to modify the contents of the according row but use SET statements to modify the individual columns of the current row - cf. that sample :
CREATE TRIGGER emp_upper_postal_code
BEFORE UPDATE OF PostalCode
ON Employees
REFERENCING NEW AS new_emp
FOR EACH ROW
WHEN ( ISNUMERIC( new_emp.PostalCode ) = 0 )
BEGIN
-- Ensure postal code is uppercase (employee might be
-- in Canada where postal codes contain letters)
SET new_emp.PostalCode = UPPER(new_emp.PostalCode)
END;
So in your case it might work to use something like (I don't claim to understand the calculations):
...
set new_shipper_line.amount = isnull(new_shipper_line.user_9,0) * isnull(new_shipper_line.user_10,0);
set new_shipper_line.sys_all_amt = isnull(new_shipper_line.user_9,0) * ...