Si, si se puede.. aunque dejarla genérica te da el beneficio de reutilizarla en cualquier otra aplicación y/o proceso ya que tendría una funcionalidad especifica...
 
El resto es solo manejo de cadenas que no tienen que ver con la funcionalidad principal.. p.ejemplo..  
Código:
 DECLARE @HISAP2 NVARCHAR(10) = '420'
       ,@FISAP DATETIME = '20120710'
       
SET @hisap2 = RIGHT('0000' + @hisap2, 4)
SELECT CAST( CONVERT(VARCHAR, @fisap,112) 
             + ' ' 
             + SUBSTRING(@hisap2,1,2) 
             + ':' 
             + SUBSTRING(@HISAP2,3,2)  AS DATETIME) [FISAP]
  Y el resultado: 
Código:
 FISAP
-----------------------
2012-07-10 04:20:00.000
  
 Saludos!