SAP R/3 Menu Tree
Author: Mr. Rajeev Kaul. (
This e-mail address is being protected from spambots. You need JavaScript enabled to view it
)
************************************************************************
The number of Menu paths available in SAP R/3 versions are enormous and
and the same is true with the Transaction Codes .
To remember all the menu paths and T-Codes is a difficult task and at times
Frustrating.
The program below shows a simple approach of how to find a particular
T-Code or a Menu path in your Logon SAP system.
the input parameter is the String name ( partly or fully represented in any SAP menu)
or a T-Code used in the system.
User has the option to choose a range of as to how many different paths would he like
to explore for the given string.
REPORT ZAAAA1 .
TABLES: SMENSAPNEW, SMENSAPT.
************************************************************************
* internal tables
************************************************************************
DATA: BEGIN OF IMENSAP OCCURS 20.
INCLUDE STRUCTURE SMENSAPNEW.
DATA TEXT LIKE SMENSAPT-TEXT.
DATA END OF IMENSAP.
* data: begin of imensap1 occurs 20.
* include structure smensapnew.
* data text like smensapt-text.
* data end of imensap1.
************************************************************************
* Internal data fields
************************************************************************
DATA: ISORT LIKE SMENSAPNEW-SORT_ORDER,
TEMPLATE(82).
************************************************************************
* Constants
************************************************************************
************************************************************************
* Parameters and Selection Options
************************************************************************
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF BLOCK ENTRY WITH FRAME TITLE T_BOX.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(17) TLABEL.
PARAMETERS TBUTTON RADIOBUTTON GROUP G1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 40(28) DLABEL.
PARAMETERS DBUTTON RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 40(22) CASENS.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 40(8) LLABEL.
PARAMETERS LIMIT(5) TYPE N DEFAULT 10.
SELECTION-SCREEN COMMENT 56(6) PLABEL.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(14) FLABEL.
PARAMETERS STRING(80) OBLIGATORY LOWER CASE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN END OF BLOCK ENTRY.
INITIALIZATION.
T_BOX = ' Find the menu paths '.
TLABEL = 'Transaction Code'.
DLABEL = 'Menu description (sub)string'.
CASENS = '(Case-sensitive)'.
FLABEL = 'Search string:'.
LLABEL = 'Limit to'.
PLABEL = 'paths.'.
************************************************************************
* Event Start of Selection
************************************************************************
START-OF-SELECTION.
IF TBUTTON = 'X'. "Paths to Transaction CODE.
TRANSLATE STRING TO UPPER CASE.
SELECT * FROM SMENSAPNEW
WHERE REPORTTYPE = 'TR' AND REPORT = STRING
AND CUSTOMIZED = 'S'.
SELECT SINGLE * FROM SMENSAPT
WHERE OBJECT_ID = SMENSAPNEW-OBJECT_ID AND SPRAS = 'E'.
PERFORM APPEND_IMENSAP.
WHILE IMENSAP-MENU_LEVEL GT 1.
PERFORM GETNEXTHIGHERLEVEL.
ENDWHILE.
ENDSELECT.
ELSE. "Paths to menu description (sub)string
CONCATENATE '%' STRING '%' INTO TEMPLATE.
SELECT * FROM SMENSAPT UP TO LIMIT ROWS
WHERE TEXT LIKE TEMPLATE AND SPRAS = 'E'.
SELECT SINGLE * FROM SMENSAPNEW
WHERE CUSTOMIZED = 'S' AND OBJECT_ID = SMENSAPT-OBJECT_ID.
IF SY-SUBRC = 0.
PERFORM APPEND_IMENSAP.
WHILE IMENSAP-MENU_LEVEL GT 1.
PERFORM GETNEXTHIGHERLEVEL.
ENDWHILE.
ELSE.
CLEAR IMENSAP.
CONCATENATE SMENSAPT-TEXT
' (No menu path found for this description.)'
INTO IMENSAP-TEXT.
IMENSAP-MENU_LEVEL = 1.
ADD 1 TO ISORT.
IMENSAP-SORT_ORDER = ISORT.
APPEND IMENSAP.
ENDIF.
ENDSELECT.
ENDIF.
************************************************************************
* End of Selection
************************************************************************
END-OF-SELECTION.
*break-point.
PERFORM WRITE_MENU_PATH.
FORM APPEND_IMENSAP.
MOVE-CORRESPONDING SMENSAPNEW TO IMENSAP.
IF SMENSAPNEW-REPORTTYPE = 'TR' OR SMENSAPNEW-REPORTTYPE = 'MN'.
CONCATENATE SMENSAPT-TEXT SMENSAPNEW-REPORT INTO IMENSAP-TEXT
SEPARATED BY ' ===>> '.
ELSE.
IMENSAP-TEXT = SMENSAPT-TEXT.
ENDIF.
ADD 1 TO ISORT.
IMENSAP-SORT_ORDER = ISORT.
APPEND IMENSAP.
ENDFORM. "Append_imensap
FORM GETNEXTHIGHERLEVEL.
SELECT * FROM SMENSAPNEW WHERE OBJECT_ID = IMENSAP-PARENT_ID
AND CUSTOMIZED = 'S'.
SELECT SINGLE * FROM SMENSAPT
WHERE OBJECT_ID = IMENSAP-PARENT_ID AND SPRAS = 'E'.
PERFORM APPEND_IMENSAP.
ENDSELECT.
ENDFORM. "GetNextHigherLevel
FORM WRITE_MENU_PATH.
* data: nlines type i, slen type i, npath type i,
DATA: NLINES TYPE I, SLEN TYPE I, NPATH TYPE I, PLEN TYPE I,
TLEN TYPE I, TEXT LIKE IMENSAP-TEXT,
TEXT1 LIKE IMENSAP-TEXT, TEXT2 LIKE IMENSAP-TEXT.
DESCRIBE TABLE IMENSAP LINES NLINES.
SLEN = STRLEN( STRING ).
IF NLINES IS INITIAL.
IF TBUTTON = 'X'.
WRITE /'No menu path found for transaction code'.
WRITE AT (SLEN) STRING INVERSE COLOR 5.
ELSE.
WRITE: /'No menu path found for description'.
WRITE AT (SLEN) STRING INVERSE COLOR 5.
ENDIF.
EXIT.
ENDIF.
IF TBUTTON = 'X'.
WRITE: /'Menu paths for the transaction code'.
WRITE AT (SLEN) STRING INVERSE COLOR 5.
ELSE.
WRITE: /'Menu paths for description'.
WRITE AT (SLEN) STRING INVERSE COLOR 5.
ENDIF.
SORT IMENSAP BY SORT_ORDER DESCENDING.
LOOP AT IMENSAP.
IF IMENSAP-MENU_LEVEL = 1.
SKIP.
ADD 1 TO NPATH. PLEN = STRLEN( NPATH ).
WRITE / '--------' NO-GAP.
WRITE AT: (PLEN) NPATH. WRITE '--------'.
ENDIF.
WRITE AT /IMENSAP-MENU_LEVEL ' '.
TEXT = IMENSAP-TEXT.
REPLACE STRING LENGTH SLEN WITH '~~' INTO TEXT.
IF SY-SUBRC IS INITIAL.
SPLIT TEXT AT '~~' INTO TEXT1 TEXT2.
TLEN = STRLEN( TEXT1 ).
WRITE AT (TLEN) TEXT1 NO-GAP.
WRITE AT (SLEN) STRING INVERSE NO-GAP COLOR 5.
TLEN = STRLEN( TEXT2 ).
WRITE AT (TLEN) TEXT2.
ELSE.
WRITE TEXT.
ENDIF.
ENDLOOP.
ENDFORM. "Write_Menu_Path







