You don't need to put all those end of line characters (@CRLF) when building the string. You can do something like the following:
Declare @VCM int = 10
, @ID varchar(25) = 'SomeIDValue'
, @SCHEMA_NAME sysname = 'test';
Declare @SQL nvarchar(max) = '';
Set @SQL = @SQL + '
Drop Table If Exists ' + quotename(@SCHEMA_NAME) + '.[stock];
Select STOCKNUMBER
, STOCKBOOKS
, ''No'' As ISCHANGEMANAGEMENTACTIVATED
, 0 As PERSONANNIVERSARYDAY
, '''' As NEWCOL
, ''Normal'' As DEFAULTCASHDISCOUNTUSAGE
, CASE WHEN VENDOR=23490 then ''30-INTERCO'' END AS VENDID
INTO ' + quotename(@SCHEMA_NAME) + '.[stock]
FROM [USA_PHILIPS].[DMARTSTOCK]
WHERE VCM = @VCM
AND ID = @ID;';
Print @SQL;
This makes it much easier to read - and that means it is much easier to manage and maintain. You could also make it simpler by doing something like this:
Declare @VCM int = 10
, @ID varchar(25) = 'SomeIDValue'
, @SCHEMA_NAME sysname = 'test';
Declare @SQL nvarchar(max) = ''
, @tableReference sysname = concat(quotename(@SCHEMA_NAME), '.', quotename('stock'));
Set @SQL = replace('
Drop Table If Exists ##table_reference##;
Select STOCKNUMBER
, STOCKBOOKS
, ''No'' As ISCHANGEMANAGEMENTACTIVATED
, 0 As PERSONANNIVERSARYDAY
, '''' As NEWCOL
, ''Normal'' As DEFAULTCASHDISCOUNTUSAGE
, CASE WHEN VENDOR=23490 then ''30-INTERCO'' END AS VENDID
INTO ##table_reference##
FROM [USA_PHILIPS].[DMARTSTOCK]
WHERE VCM = @VCM
AND ID = @ID;', '##table_reference##', @tableReference);
Print @SQL;