You can get all report names from the table TADIR , OBJECT = 'PROG' (object type).
DATA : IT_RETURN TYPESTANDARDTABLEOF DDSHRETVAL WITHHEADERLINE.
DATA: BEGINOF IT_report OCCURS0,
rep_name type SOBJ_NAME,
ENDOF IT_report.
parameter p_report type SOBJ_NAME.
AT SELECTION-SCREENONVALUE-REQUEST FOR P_REPORT.
select OBJ_NAME from tadir intoTABLE it_report where object = 'PROG'.
CALLFUNCTION'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'rep_name'
DYNPPROG = SY-REPID
DYNPROFIELD = 'P_REPORT'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_REPORT
RETURN_TAB = IT_RETURN
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGEID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.