Lo que necesitas es una 'protección de huerfanos' tal como es posible en word.
No sé si podrás hacer un datawindow tipo composite y que de alguna forma lo podrás indicar al report, pero no me gustan mucho, son lentos y problemáticos.
Te voy a dar tan sólo unas ideas, (por falta de tiempo). Hicé algo parecido hace años pero ya no tengo ni el código.
Creo que vas a tener que recorrer el datawindow después de haberlo recuperado y tener 2 columnas computadas:
una que indica de alguna forma la primera fila de un grupo con la expresión "first( contador for group 1 )". el otro indicará el último valor de 'contador' del grupo: "last( contador for group 1)"
desde código (por ejemplo el retrieveEnd):
FirstRowOnPage, LastRowOnPage, te darán los valores de la primero y última fila de una página. Con esos valores debería ser posible de determinar si se ha producido el caso que no deseas. Posiblemente tendrás que poner otra columna que contenga page() para saber en qué página una fila está.
Podrás insertar filas antes de la primera fila de un grupo, con tan sólo los valores necesarias para pertenecer al grupo pero sin visualizar ningún valor, hasta que deje de existir la situación deseada.
Esto con la versión 5 de powerbuilder (nuestro cliente tiene miedo a modernizarse). Posiblemente en versiones más nuevas se puede hacer algo más sencillo.
Espero que te he dado alguna idea o dirección para resolver tu problema,
suerte,
Miguel