As long as the pgm has the parm observable information set to *ALL, you can RVTCLSRC for CLPs. For RPG pgms you still need observability but might have to run debug to see the source.
dsppgmref will show the objects/files used by the program
Check this discussion:
One other thing – OPM programs were often stored in a different source file
Typically QRPGSRC instead of QRPGLESRC. You may want to search your libraries for all files with attribute of PF-SRC.