do not use PRINT there:
Set @ErrorMessage = 'Serial Number ' + ' ' + @varSerialNumber + ' ' + ' Already Exist'
'Asset Type' + ' ' + @varType
'Asset Make' + ' ' + @varMake
'Asset Model' + ' ' + @varModel
+ ' ' + 'Please Check Upload File'
PRINT @ErrorMessage
insert into invalid (record,Datetime)
Values (@ErrorMessage,getdate())
note: if any of the variables is not varchar, you might need to apply a explicit cast, like:
Set @ErrorMessage = 'Serial Number ' + ' ' + CAST( @varSerialNumber as VARCHAR(100)) + ' ' + ' Already Exist'
'Asset Type' + ' ' + @varType
'Asset Make' + ' ' + @varMake
'Asset Model' + ' ' + @varModel
+ ' ' + 'Please Check Upload File'
insert into invalid (record,Datetime)
Values (@ErrorMessage,getdate())