I've just been looking at an old IP31 "Z" clone.
What I did was stopped the report at the following point:
*--- cost report
PERFORM display_costs USING dy_datuv dy_datub proto_p. <-- do not perform this step
In my case I needed data, but didn't need to display the standard IP31 screen (can't remember why)!!!.
It looks like I then exported the IP31 data from (SAPLCK00)AUFNR_KALKTAB[] to a calling program.
This should make sense to your ABAP Team...
PeteA