Try this
IF OBJECT_ID('tempdb..#Temp')IS NOT NULL
DROP TABLE #Temp
;WITH CTE(instance  ,host   ,servicename)
AS
(
SELECT 'DB,tomcat' ,'abc,xyz','sap,java' UNION ALL
SELECT null      ,'efg,ijn','D40,L90'
)
SELECT ROW_NUMBER()OVER(ORDER BY instance) AS Seq
        ,ISNULL(instance,'NA') AS instance
        ,Host
        ,servicename
 INTO #Temp FROM CTE
SELECT a.Seq
        ,Split.a.value('.','nvarchar(1000)') AS instance
        ,Split1.a.value('.','nvarchar(1000)') AS host
        ,Split2.a.value('.','nvarchar(1000)') AS servicename
FROM(
SELECT Seq
    ,CAST('<S>'+REPLACE(instance,',','</S><S>')+'</S>'  AS XML )AS instance
    ,CAST('<S>'+REPLACE(host,',','</S><S>')+'</S>'  AS XML )AS host
    ,CAST('<S>'+REPLACE(servicename,',','</S><S>')+'</S>'  AS XML )AS servicename
    FROM #Temp 
) As a
CROSS APPLY instance.nodes('S') AS Split(a)
CROSS APPLY host.nodes('S') AS Split1(a)
CROSS APPLY servicename.nodes('S') AS Split2(a)
ORDER BY seq