SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Display the shortest menu path of a transaction



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Programming Techniques | Приемы программирования
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1640

PostPosted: Sun Nov 18, 2007 8:42 pm    Post subject: Display the shortest menu path of a transaction Reply with quote

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.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Programming Techniques | Приемы программирования All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.