In theory you should be able to do this with a combination of RBREAK BEFORE /PAGE and the CONTENTS= option. However, CONTENTS= is pretty much broken in 9.1.3. Tech. Support and I have been discussing how PROC REPORT should handle TOC entries and I hope to give it some useful behavior in 9.2.
Theoretically, you could also wrap your PROC REPORT into a SAS macro program and then use ODS PROCLABEL for the group being passed to the macro. So, each run of the macro program would put an entry into the TOC. This is a workaround but might work, depending on the other requirements of your PROC REPORT process.
Here's a sample of the basic macro program. Playing with PROCLABEL and/or CONTENTS= you can sort of control or eliminate items in the TOC, but as somebody said, it is a kind of hit and miss affair (eliminating ODS PROCLABEL gives you an index number, with a line feed and the region on the next line; while eliminating the CONTENTS= will give you the PROCLABEL line, but no hyperlink to the section of the report associated with the region.)
In most instances, I would recommend PROC DOCUMENT/ODS DOCUMENT for rearranging your output objects and your TOC on replay, but PROC REPORT does not play nice with ODS DOCUMENT (or vice versa).
There are some style template things you can also do to streamline the TOC (playing with IndexItem, etc).
Another alternative is to replace the SAS-generated TOC file with your own TOC/Frame file if you're doing HTML. If you're doing RTF, I think some folks use RTF control strings to insert TOC info into the RTF file for TOC generation.
ods proclabel "PROCLABEL: &sreg";
proc report data=sashelp.shoes nowd
where region = "&sreg";
title "Report for &sreg";
column subsidiary product sales;r
define subsidiary /group;
define product /group;
define sales /sum;
rbreak after /summarize;