PROCEDURE GetCustomReportFromApp(; tSourceFRX, tResultPath, tResultFRX) LOCAL lcResultFRX, lcSourceFRX * you need an ASSERT or early quit * if method is called incorrectly: lcSourceFRX = ; FORCEXT(FULLPATH(TRANS(tSourceFRX)),"FRX") IF NOT FILE(lcSourceFRX) * FILE() should find it in the custom app * because we're in the custom app RETURN .F. ENDIF * source file must be found IF EMPTY(tResultFRX) lcResultFRX = JUSTFNAME(lcSourceFRX) ELSE lcResultFRX = tResultFRX ENDIF IF EMPTY(tResultPath) lcResultFRX = FULLPATH(lcResultFRX) ELSE lcResultFRX = FORCEPATH(lcResultFRX, ; tResultPath) ENDIF lcResultFRX = FORCEEXT(lcResultFRX,"FRX") IF EMPTY(SYS(2000,lcResultFRX)) USE (lcSourceFRX) && as a table COPY TO (lcResultFRX) && or SELECT INTO a TABLE if you prefer ENDIF RETURN ( NOT EMPTY(SYS(2000,lcResultFRX)) )After a RETURN .T. from this method call or proc, you should be able to go ahead with your generic.app processing.