• [转]Displays the menu path for a transaction


    *********************************************************************
    * 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.
    *********************************************************************

    REPORT ZMENPATH NO STANDARD PAGE HEADING.
    TABLES: SMENCUSNEW, SMENCUST, 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 SMENCUST WHERE SPRAS = 'E' AND OBJECT_ID = STACK.
      WRITE: /I(30) SMENCUST-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.

  • 相关阅读:
    复制文件-用FileOutputStream和FileInputStream读写文件
    向属性文件中添加属性
    合并多个文件的内容
    EVA4400存储RAID信息丢失数据恢复过程
    DELL Eq PS4000数据恢复成功案例
    华为OceanStor S5600T服务器数据恢复
    IBM ds4700崩溃重组raid及修复数据库
    分析IBM AIX存储层结构 / 常用存储命令整理
    riad5阵列崩溃,恢复数据过程
    如何使用Handy Backup 6.2进行数据备份(步骤阅读)
  • 原文地址:https://www.cnblogs.com/wequst/p/1513867.html
Copyright © 2020-2023  润新知