You should use Go to Related records to go to the child service call table. Base your report off of those service call records.
Note that GTRR will NOT work if the script is performed while the current portal row is the bottom blank row where you'd enter data for a new related record. Since there is no related record, your script that uses GTRR will appear to "skip" the GTRR step with potentially disastrous results.
To avoid this, include a check for the existance of a related record on the current row of your portal.
If [ isempty [Portaltable:: PortalIDnumberfield]
Exit script 
is one possible test to avoid this issue.
or my preference:
If [ not IsEmpty [ Portaltable:: PortalIDnumberfield ]
Go to Related Record [ ] // matching current record, not for matching found set.
I am not sure about the scripting part of this. Could you walk me thru it a little better? Thanks