PARAMETERS: p_tcode LIKE tstc-tcode DEFAULT 'ME23N'.
PARAMETERS: p_pgmna LIKE tstc-pgmna.
START-OF-SELECTION.
DATA(lv_tsct) = VALUE tstc( ).
IF NOT p_tcode IS INITIAL.
SELECT SINGLE FROM tstc
FIELDS *
WHERE tcode EQ @p_tcode
INTO @lv_tsct.
ELSEIF NOT p_pgmna IS INITIAL.
lv_tsct-pgmna = p_pgmna.
ENDIF.
IF sy-subrc = 0.
SELECT SINGLE FROM tadir
FIELDS *
WHERE pgmid = 'R3TR'
AND object = 'PROG'
AND obj_name = @lv_tsct-pgmna
INTO @DATA(lv_tadir).
DATA: lv_devclass TYPE tadir-devclass.
IF sy-subrc = 0.
lv_devclass = lv_tadir-devclass.
ELSE.
SELECT SINGLE FROM trdir
FIELDS *
WHERE name = @lv_tsct-pgmna
INTO @DATA(lv_trdir).
IF sy-subrc = 0.
* Wenn Programmtyp 'Funktionsgruppe'
IF lv_trdir-subc EQ 'F'.
SELECT SINGLE FROM tfdir
FIELDS *
WHERE pname = @lv_tsct-pgmna
INTO @DATA(lv_tfdir).
IF sy-subrc = 0.
SELECT SINGLE FROM enlfdir
FIELDS *
WHERE funcname = @lv_tfdir-funcname
INTO @DATA(lv_enlfdir).
IF sy-subrc = 0.
SELECT SINGLE FROM tadir
FIELDS *
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name = @lv_enlfdir-area
INTO @DATA(lv_tadir_area).
IF sy-subrc = 0.
lv_devclass = lv_tadir_area-devclass.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
SELECT FROM tadir
FIELDS *
WHERE pgmid = 'R3TR'
AND object IN ('SMOD', 'SXSD')
AND devclass = @lv_devclass
ORDER BY object
INTO TABLE @DATA(it_jtab).
IF sy-subrc = 0.
SELECT SINGLE FROM tstct
FIELDS *
WHERE sprsl = @sy-langu
AND tcode = @p_tcode
INTO @DATA(lv_tstct).
IF sy-subrc = 0.
WRITE: / 'Transaction:', p_tcode.
WRITE: / 'Bezeichnung:', lv_tstct-ttext.
ENDIF.
WRITE: / 'Programm:', lv_tsct-pgmna.
SKIP.
LOOP AT it_jtab ASSIGNING FIELD-SYMBOL(<o>).
DATA(lv_txt) = ||.
CASE <o>-object.
WHEN 'SMOD'. " Enhancement
SELECT SINGLE FROM modsapt
FIELDS modtext
WHERE sprsl = @sy-langu
AND name = @<o>-obj_name
INTO @lv_txt.
WHEN 'SXSD'. " BAdI
SELECT SINGLE FROM sxs_attrt
FIELDS text
WHERE sprsl = @sy-langu
AND exit_name = @<o>-obj_name
INTO @lv_txt.
WHEN OTHERS.
ENDCASE.
WRITE: / <o>-object, <o>-obj_name, lv_txt.
ENDLOOP.
ENDIF.
ENDIF.