Pattern matching sed

MSG="THERE WERE XX RECORDS IN ERROR TABLE,AAAA, WHEN LOADING THE BBBB TABLE WITH EXTRACT FROM CCCC INTO TABLES FOR , DATABASE DDDD."

echo "$MSG" > /tmp/mplanmsg.$$.out

I wan to replace XX with the content in $recordXX
cat /tmp/mplanmsg.$$.out|sed 's/XX/\$recordXX/g'| sed 's/AAAA/$errortblAA/g' | sed 's/BBBB/$mptblBB/g' | sed 's/CCCC/$sysnameCC/g' | sed 's/DDDD/$dbnameDD/g' > /tmp/mplanmsg2.$$.out
message=`cat /tmp/mplanmsg2.$$.out`
echo "My msg:$message:"

but my output is not what I expect

THERE WERE $recordXX RECORDS IN ERROR TABLE,$errortblAA, WHEN LOADING THE $mptblBB TABLE WITH EXTRACT FROM $sysnameCC INTO TERADATA TABLES , DATABASE $dbnameDD.

How do substitute a pattern with a variable?

use " [double-quote] instead of ' [single-quote]

use single quote around the variable
for example '$record' where record is a variable has some value assigned to it.

Perhaps use printf...

MSG="THERE WERE %s RECORDS IN ERROR TABLE,%s, WHEN LOADING THE %s TABLE WITH EXTRACT FROM %s INTO TABLES, FOR DATABASE %s.\\n"
printf "$MSG" $record $errortbl $mptbl $sysname $dbname