Tom
i did some testing and at first was not able to reproduce but by luck hit the jackpot. Generally when we use a Recnum array we do not use the server of the report to find the records (no set server in the report). In this case the problem you are describing did not happen.
With the server set and using a recnum array i was able to reproduce the issue.
What happens is that because we didnt expect the server to be in use for recnumarray reports the constraints are not being initialized at all. But at the end of the report a clear is sent to the dd which initializes the constraints which causes it to work the second time.
Two ways to fix it. One would be to not set the server in your report. The other is to add the following line of code (which is our permanent fix here as well)
In cszBusinessProcess.pkg in the Start_Main_Process procedure about 5 lines from the top of the procedure it says
If (pbUseRecnumArray(Self)) Begin
Send DoDeleteRecnumArray
Send DoFillRecnumArray
change that to
If (pbUseRecnumArray(Self)) Begin
If srvr# ne 0 Send Rebuild_Constraints to srvr#
Send DoDeleteRecnumArray
Send DoFillRecnumArray
Mike