I think the easiest thing would be to use a second variable and compute its value before doing your inserts.
DECLARE @TonsE int;
SET @TonsE = CASE
WHEN
(SELECT SUM(mkt_impotemporal.Tons)*0.42 FROM mkt_impotemporal where RFC='EHP040219KX0' GROUP BY RFC) is null THEN 0
ELSE
(SELECT SUM(mkt_impotemporal.Tons)*0.42 FROM mkt_impotemporal where RFC='EHP040219KX0' GROUP BY RFC)
END;
DECLARE @TonsE2 int;
SET @TonsE = CASE
WHEN
(SELECT SUM(mkt_impotemporal.Tons)*0.58 FROM mkt_impotemporal where RFC='EHP040219KX0' GROUP BY RFC) is null THEN 0
ELSE
(SELECT SUM(mkt_impotemporal.Tons)*0.58 FROM mkt_impotemporal where RFC='EHP040219KX0' GROUP BY RFC)
END;
--DELETE FROM mkt_impotemporal WHERE RFC = 'EHP040219KX0'
INSERT INTO mkt_impotemporal
VALUES
('EHP040219KX0',
@TonsE);
INSERT INTO mkt_impotemporal
VALUES
('EHP040219KX0',
@TonsE2)