I am not clear on why you would need to use the split function twice. Simply remove the cross apply and the subquery that follows it. Wouldn't that give you what you are looking for?
If you do need the cross apply (for some reason that is not clear to me) you need to correlate the inner select in the cross apply with something fromthe outer query. Does your split function give you a serial number also? If so, you would do something like
Cross Apply(Select * From dbo.Split(@frame_id,',') WHERE itemNumber = a.itemNumber )B