I would refine the text just like SAPScript does. You can create an element tag (I think '/E' 'NAME' for TDFORMAT and TDLINE where 'NAME' is a tag you choose) followed by normal text. You can read the whole text at once and parse it, i.e., split it into many tables. Most texts are small enough where a nested internal table is not a performance issue.
Not syntax-checked - treat as pseudo code:
DATA: BEGIN OF GT_TEXT OCCURS 0,
ID type string,
TLINE type table of TLINE,
END OF GT_TEXT.
Text:
/E PART1
* Text
* Text
/E LOOP
* &myvar&
/E PART2
* More text
You can make a fancy class for reuse, it is generic. You can parse the text into such a table and later read the line for 'PART1', print GT_TEXT-TLINE, read 'LOOP' and go into a loop on the data while replacing and appending the contents of GT_TEXT-TLINE to your e-mail and finish with a read on 'PART2'.
It's what Simone said, I just wanted to give you an idea of how you can manage the parts.