Hi
,
I have developed logic for the same.
START-OF-SELECTION.
PERFORM GET_SOURCE USING 'X' ' ' ' ' 'MV45AFZZ'. "report
PERFORM GET_SOURCE USING ' ' 'X' ' ' 'CL_WB_PGEDITOR'. "Class
PERFORM GET_SOURCE USING ' ' ' ' 'X' 'READ_IBAN_EXT'. "fm
*&---------------------------------------------------------------------*
*& Form GET_SOURCE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->U_PROG text
* -->U_CLASS text
* -->U_FM text
* -->U_NAME text
*----------------------------------------------------------------------*
FORM GET_SOURCE USING U_PROG TYPE BOOLEAN
U_CLASS TYPE BOOLEAN
U_FM TYPE BOOLEAN
U_NAME TYPE STRING.
DATA ABAP_EDITOR TYPE REF TO CL_WB_PGEDITOR.
DATA SOURCE_TAB TYPE SEDI_SOURCE.
DATA SOURCE_NAME TYPE SY-REPID.
DATA LV_COUNT TYPE STRING.
CASE 'X'.
WHEN U_PROG.
SOURCE_NAME = U_NAME.
IF SOURCE_NAME IS NOT INITIAL.
CREATE OBJECT ABAP_EDITOR
EXPORTING
P_IS_IN_ADJUSTMENT_MODE = ' '.
CALL METHOD ABAP_EDITOR->READ_SOURCE
EXPORTING
SOURCE_NAME = SOURCE_NAME
INITIALIZE_EDIT_CONTROL = ' '
STATUS = ' '
WITH_IMPL_ENHANCEMENTS = ' '
SINGLE_ENHNAME = ' '
IMPORTING
SOURCE_TAB = SOURCE_TAB
EXCEPTIONS
NOT_FOUND = 1
CANCELLED = 2
READ_PROTECTED = 3.
LV_COUNT = LINES( SOURCE_TAB ).
WRITE : / LV_COUNT.
REFRESH SOURCE_TAB[].
ENDIF.
WHEN U_CLASS.
DATA CLSKEY TYPE SEOCLSKEY.
DATA INCLUDES TYPE SEOP_METHODS_W_INCLUDE.
DATA LS_INCLUDES LIKE LINE OF INCLUDES.
CLSKEY = U_NAME.
CALL FUNCTION 'SEO_CLASS_GET_METHOD_INCLUDES'
EXPORTING
CLSKEY = CLSKEY
IMPORTING
INCLUDES = INCLUDES
EXCEPTIONS
_INTERNAL_CLASS_NOT_EXISTING = 1.
CASE SY-SUBRC.
WHEN 0.
LOOP AT INCLUDES INTO LS_INCLUDES.
SOURCE_NAME = LS_INCLUDES-INCNAME.
IF SOURCE_NAME IS NOT INITIAL.
CREATE OBJECT ABAP_EDITOR
EXPORTING
P_IS_IN_ADJUSTMENT_MODE = ' '.
CALL METHOD ABAP_EDITOR->READ_SOURCE
EXPORTING
SOURCE_NAME = SOURCE_NAME
INITIALIZE_EDIT_CONTROL = ' '
STATUS = ' '
WITH_IMPL_ENHANCEMENTS = ' '
SINGLE_ENHNAME = ' '
IMPORTING
SOURCE_TAB = SOURCE_TAB
EXCEPTIONS
NOT_FOUND = 1
CANCELLED = 2
READ_PROTECTED = 3.
LV_COUNT = LINES( SOURCE_TAB ).
WRITE : / LV_COUNT.
REFRESH SOURCE_TAB[].
ENDIF.
ENDLOOP.
ENDCASE.
WHEN U_FM.
DATA FUNCNAME TYPE RS38L-NAME.
DATA R3STATE TYPE D010SINF-R3STATE.
DATA PTFDIR TYPE STANDARD TABLE OF TFDIR.
DATA PTFTIT TYPE STANDARD TABLE OF TFTIT.
DATA PFUNCT TYPE STANDARD TABLE OF FUNCT.
DATA PENLFDIR TYPE STANDARD TABLE OF ENLFDIR.
DATA PTRDIR TYPE STANDARD TABLE OF TRDIR.
DATA LS_PTRDIR LIKE LINE OF PTRDIR.
DATA PFUPARAREF TYPE STANDARD TABLE OF SFUPARAREF.
DATA UINCL TYPE STANDARD TABLE OF ABAPTXT255.
FUNCNAME = U_NAME.
CALL FUNCTION 'FUNC_GET_OBJECT'
EXPORTING
FUNCNAME = FUNCNAME
* R3STATE = 'A'
TABLES
PTFDIR = PTFDIR
PTFTIT = PTFTIT
PFUNCT = PFUNCT
PENLFDIR = PENLFDIR
PTRDIR = PTRDIR
PFUPARAREF = PFUPARAREF
UINCL = UINCL
EXCEPTIONS
FUNCTION_NOT_EXIST = 1
VERSION_NOT_FOUND = 2.
CASE SY-SUBRC.
WHEN 0.
READ TABLE PTRDIR INTO LS_PTRDIR INDEX 1.
CASE SY-SUBRC.
WHEN 0.
IF LS_PTRDIR-NAME IS NOT INITIAL.
SOURCE_NAME = LS_PTRDIR-NAME.
IF SOURCE_NAME IS NOT INITIAL.
CREATE OBJECT ABAP_EDITOR
EXPORTING
P_IS_IN_ADJUSTMENT_MODE = ' '.
CALL METHOD ABAP_EDITOR->READ_SOURCE
EXPORTING
SOURCE_NAME = SOURCE_NAME
INITIALIZE_EDIT_CONTROL = ' '
STATUS = ' '
WITH_IMPL_ENHANCEMENTS = ' '
SINGLE_ENHNAME = ' '
IMPORTING
SOURCE_TAB = SOURCE_TAB
EXCEPTIONS
NOT_FOUND = 1
CANCELLED = 2
READ_PROTECTED = 3.
LV_COUNT = LINES( SOURCE_TAB ).
WRITE : / LV_COUNT."Print lines of souce code with enahncement lines as well
REFRESH SOURCE_TAB[].
ENDIF.
ENDIF.
ENDCASE.
ENDCASE.
ENDCASE.
ENDFORM. "get_source
regards,
Rahul Bhayani