You cannot do that.
Make the report global (set the switch and recompile).
You can still @LFUNCT to the report from other parts of the system (frowned upon - but does work) OR create a wrapper function that calls the global report and @LFUNCT to that from other parts of the system (obviously code changes required for this implementation solution).
Alternatively, @LFUNCT to the Report. This solution will require the window to close and then exit the parent function.
You could enhance the window to pass back a parameter like #RunReport
...and in the parent function test the parameter
That is correct. A global function can and often is called from a screen and/or update.
Check the parameters in the interface to the global function are the same type as the parameters they are being mapped to i.e. Alpha to Alpha and Numeric to Numeric.
Are you passing an array to the global report?
Does the global report have the correct function security category for your operator?