Have you considered not using report writer data and analyzing the nets directly in the design data?
nets = pcbdoc.nets
for each net in nets
has_tp = false
pins = net.pins
for each pin in pins
if instr(pin.component.refdes, "ATP") > 0 then
has_tp = true
if has_tp = false then
'add the net to the list of nets without test points
This may be overall slower than creating the report writer data and analyzing it, but you never have to worry if your report writer data is up-to-date or not. But that difference would be measured in seconds for all but very large designs. Even then a minute or two would be plenty for such a script to go through an entire design.
Many ways to skin this cat. This is one of several methods that could work.
Another thing to consider is that many objects other than an actual test point can often be used as test points. Uncovered vias, some SMT component pads, some thru-pins, etc. Depends on your company standards. A comprehensive solution would include methods of evaluating all of these. Report Writer is probably not the best tool for gathering that kind of information. For example I don't believe RW can tell you if a via is under a part, but the Pick method in PCB automation can tell you this.
I realize I'm not answering your question about how to work with Report Writer. I hope this helps you get closer to a solution.