The difference are as follows:
Dynamic Program Calls
When you call executable programs dynamically, you can supply the selection screen with values by passing an internal table with the WITH SELECTION-TABLE addition. Define this internal table with the dictionary type RSPARAMS as the line type.
The components of the RSPARAMS structure type are as follows:
Persistent Program Generation
The INSERT REPORT statement creates a program that is stored permanently in the Repository. To use this statement, fill an internal table with the source code that has a REPORT statement in the first line. Do not forget the period at the end of each ABAP statement.
The contents of the internal table are saved as an executable program (program type 1). Once the program is saved, it can be called with the SUBMIT statement. The VIA SELECTION-SCREEN addition causes the selection screen (if any) to be displayed. The AND RETURN addition means control passes back to the calling program after the program ends.
For more information about generating executable programs, see the ABAP help and look up keyword INSERT REPORT .
Transient Subroutine Pool Generation
The GENERATE SUBROUTINE POOL statement generates a program with type S – a subroutine pool. This program exists only at runtime of the generating program and contains only subroutines. Call these subroutines with an external subroutine call (“external PERFORM”).
For more information about generating transient subroutine pools, see the ABAP help and look up keyword GENERATE.