I am submiting the report to batch and a spool is generated (which make a sense).
My 2 cents ...
As Raymond has also suggested that the the SY-PAGNO & SY-CPAGE variables are filled by the runtime environment only when a list is generated (or as is the case with your test, a spool is generated).
When the ALV is displayed in a screen container (or as a full-screen GRID), there is no such thing as "page". If i remember correctly the *-OF-PAGE events are also not triggered, only the *-OF-LIST do. (Please correct me if i am wrong).
I'm quite sure that if the OP uses an ALV list instead, he can make use of the SY-PAGNO & SY-CPAGE system fields.
Cheers,
Suhas