Posted: Sun Nov 18, 2007 8:42 pm Post subject: Display the shortest menu path of a transaction
Code:
REPORT ZMENPATH NO STANDARD PAGE HEADING.
************************************************************************
* This program displays the menu path for a transaction. If the user
* doubleclicks on the transaction name, it displays the transaction's
* start screen. It is useful when working with the profile generator,
* because it is much faster than extracting a menu branch and finding a
* transaction code in it. To run this program, the user menu has to be
* generated.
************************************************************************
TABLES: SMENCUSNEW, SMENENTT, TSTC.
DATA: BEGIN OF ITAB OCCURS 10.
INCLUDE STRUCTURE SMENCUSNEW.
DATA: END OF ITAB.
DATA: BEGIN OF STACK OCCURS 10,
ID(5) TYPE N,
END OF STACK.
DATA: I TYPE I.
PARAMETERS: TRANS LIKE TSTC-TCODE.
* Get the id of our transaction
SELECT * FROM SMENCUSNEW WHERE REPORT = TRANS AND CUSTOMIZED = 'S'.
MOVE-CORRESPONDING SMENCUSNEW TO ITAB.
APPEND ITAB.
ENDSELECT.
* Our transaction is not in smencusnew
IF SY-SUBRC <> 0.
WRITE: / TRANS COLOR 5.
SKIP.
WRITE: / 'Not in the profile generator''s table'.
EXIT.
ENDIF.
* Get the parent id that links us to the root with the fewest levels
SORT ITAB BY MENU_LEVEL.
READ TABLE ITAB INDEX 1.
STACK = ITAB-OBJECT_ID. APPEND STACK.
STACK = ITAB-PARENT_ID. APPEND STACK.
* Search for the grandparets ...
DO.
CLEAR ITAB. REFRESH ITAB.
SELECT * FROM SMENCUSNEW WHERE OBJECT_ID = STACK-ID AND
CUSTOMIZED = 'S'.
MOVE-CORRESPONDING SMENCUSNEW TO ITAB.
APPEND ITAB.
ENDSELECT.
SORT ITAB BY MENU_LEVEL.
READ TABLE ITAB INDEX 1.
IF ITAB-PARENT_ID = '00001'. EXIT. ENDIF.
STACK = ITAB-PARENT_ID. APPEND STACK.
ENDDO.
* Display the result
WRITE: / TRANS COLOR 5.HIDE TRANS. CLEAR TRANS.
WRITE: ' <<<< Doubleclick to see the transaction'.
SKIP.
WRITE: /(30) 'Main Menu' COLOR 2.
SORT STACK.
LOOP AT STACK.
I = I + 3.
SELECT SINGLE * FROM SMENENTT WHERE SPRAS = 'E' AND OBJECT_ID = STACK.
WRITE: /I(30) SMENENTT-TEXT COLOR 2.
ENDLOOP.
* Display the transaction when the user doubleclick on trans
AT LINE-SELECTION.
IF NOT TRANS IS INITIAL.
SELECT SINGLE * FROM TSTC WHERE TCODE = TRANS.
CALL TRANSACTION TRANS.
ENDIF.
CLEAR TRANS.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.