I want to search for S+P and replace it with S&P. Following doesn't seem to be working.
sed 's~"S+P"~"S&P"~' filename1 > filename2
& is metacharacter and should be escaped for literal matching. Within sed replacement section & points to the whole matched string (in your example, & represents the whole S+P):
sed 's~S+P~S\&P~g' file