SAP-系统操作记录

 

REPORT ZBS_VIEW01.

TABLES: CDHDR,
        CDPOS.


TYPES: BEGIN OF TY_ALV,
         TCODE      TYPE CDHDR-TCODE,
         TTEXT      TYPE TSTCT-TTEXT,
         USERNAME   TYPE CDHDR-USERNAME,
         UNAME      TYPE STRING,
         UDATE      TYPE CDHDR-UDATE,
         UTIME      TYPE CDHDR-UTIME,
         CHANGE_IND TYPE CDHDR-CHANGE_IND,
         TABNAME    TYPE CDPOS-TABNAME,
         FNAME      TYPE CDPOS-FNAME,
         CHNGIND    TYPE CDPOS-CHNGIND,
         VALUE_NEW  TYPE CDPOS-VALUE_NEW,
         VALUE_OLD  TYPE CDPOS-VALUE_OLD,
       END OF TY_ALV,

       BEGIN OF TY_TCODE,
         TCODE TYPE CDHDR-TCODE,
         TTEXT TYPE TSTCT-TTEXT,
       END OF TY_TCODE,

       BEGIN OF TY_CHANGE,
         CHANGE_IND TYPE CDHDR-CHANGE_IND,
         CTEXT      TYPE STRING,
       END OF TY_CHANGE,

       BEGIN OF TY_UNAME,
         USERNAME   TYPE CDHDR-USERNAME,
         UNAME      TYPE STRING,
       END OF TY_UNAME.


DATA: TA_ALV    TYPE STANDARD TABLE OF TY_ALV,
      TA_ALV_O  TYPE STANDARD TABLE OF TY_ALV,
      TA_TCODE  TYPE STANDARD TABLE OF TY_TCODE,
      TA_CHANGE TYPE STANDARD TABLE OF TY_CHANGE,
      TA_UNAME  TYPE STANDARD TABLE OF TY_UNAME,
      TA_NODE   TYPE STANDARD TABLE OF MTREESNODE,
      TA_FCAT   TYPE LVC_T_FCAT,
      WA_LAYOUT TYPE LVC_S_LAYO.

DATA: VG_DOCKING_CONTAINER_L TYPE REF TO CL_GUI_DOCKING_CONTAINER,
      VG_DOCKING_CONTAINER_R TYPE REF TO CL_GUI_DOCKING_CONTAINER,
      VG_TREE                TYPE REF TO CL_GUI_SIMPLE_TREE,
      VG_ALV                 TYPE REF TO CL_GUI_ALV_GRID.




SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-001.

  SELECT-OPTIONS: S_UNAME   FOR CDHDR-USERNAME,
                  S_TCODE   FOR CDHDR-TCODE,
                  S_UDATE   FOR CDHDR-UDATE OBLIGATORY,
                  S_UTIME   FOR CDHDR-UTIME,
                  S_TNAME   FOR CDPOS-TABNAME,
                  S_FNAME   FOR CDPOS-FNAME.
SELECTION-SCREEN END OF BLOCK B01.

*&---------------------------------------------------------------------*
*&       Class (Implementation)  CLG_EVENT_RECEIVER
*&---------------------------------------------------------------------*
*        TREE-EVENT-CLASS
*----------------------------------------------------------------------*
CLASS CLG_EVENT_RECEIVER DEFINITION.

  PUBLIC SECTION.
    METHODS:
*     DOUBLE CLICK
      HANDLE_NODE_DOUBLE_CLICK FOR EVENT NODE_DOUBLE_CLICK
                                      OF CL_GUI_SIMPLE_TREE
                               IMPORTING NODE_KEY.

ENDCLASS.                    "CLG_EVENT_RECEIVER DEFINITION
*----------------------------------------------------------------------*
*       CLASS CLG_EVENT_RECEIVER IMPLEMENTATION
*----------------------------------------------------------------------*
*       DOUBLE CLICK
*----------------------------------------------------------------------*
CLASS CLG_EVENT_RECEIVER IMPLEMENTATION.

  METHOD HANDLE_NODE_DOUBLE_CLICK.

    DATA: LWA_TCODE  TYPE TY_TCODE,
          LWA_CHANGE TYPE TY_CHANGE,
          LWA_UNAME  TYPE TY_UNAME,
          LWA_NODE   TYPE MTREESNODE,
          LWA_ALV    TYPE TY_ALV.

    READ TABLE TA_NODE INTO LWA_NODE WITH KEY NODE_KEY = NODE_KEY.

    CHECK SY-SUBRC = 0.

    REFRESH: TA_ALV_O.

    CASE LWA_NODE-NODE_KEY.
      WHEN 'HEAD'.
        TA_ALV_O = TA_ALV.
      WHEN 'ITEM1_1'.

        LOOP AT TA_TCODE INTO LWA_TCODE.
          LOOP AT TA_ALV INTO LWA_ALV WHERE TCODE = LWA_TCODE-TCODE.
            APPEND LWA_ALV TO TA_ALV_O.
          ENDLOOP.
        ENDLOOP.

      WHEN 'ITEM1_2'.

        LOOP AT TA_CHANGE INTO LWA_CHANGE.
          LOOP AT TA_ALV INTO LWA_ALV WHERE CHANGE_IND = LWA_CHANGE-CHANGE_IND.
            APPEND LWA_ALV TO TA_ALV_O.
          ENDLOOP.
        ENDLOOP.

      WHEN 'ITEM1_3'.

        LOOP AT TA_UNAME INTO LWA_UNAME.
          LOOP AT TA_ALV INTO LWA_ALV WHERE USERNAME = LWA_UNAME-USERNAME.
            APPEND LWA_ALV TO TA_ALV_O.
          ENDLOOP.
        ENDLOOP.

      WHEN OTHERS.

        TA_ALV_O = TA_ALV.

        READ TABLE TA_TCODE INTO LWA_TCODE WITH KEY TCODE = LWA_NODE-NODE_KEY.

        IF SY-SUBRC = 0.
          DELETE TA_ALV_O WHERE TCODE <> LWA_NODE-NODE_KEY.
        ELSE.
          READ TABLE TA_CHANGE INTO LWA_CHANGE WITH KEY CHANGE_IND = LWA_NODE-NODE_KEY.
          IF SY-SUBRC = 0.
            DELETE TA_ALV_O WHERE CHANGE_IND <> LWA_NODE-NODE_KEY.
          ELSE.
            READ TABLE TA_UNAME INTO LWA_UNAME WITH KEY USERNAME = LWA_NODE-NODE_KEY.
            IF SY-SUBRC = 0.
              DELETE TA_ALV_O WHERE USERNAME <> LWA_NODE-NODE_KEY.
            ENDIF.
          ENDIF.
        ENDIF.
    ENDCASE.


    CALL METHOD VG_ALV->REFRESH_TABLE_DISPLAY.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.

* 取数
  PERFORM FRM_GET_DATA.

* 显示
  PERFORM FRM_OUT_DATA.


*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       取数
*----------------------------------------------------------------------*
FORM FRM_GET_DATA .

  DATA: LTA_CDHDR TYPE STANDARD TABLE OF CDHDR,
        LTA_CDPOS TYPE STANDARD TABLE OF CDPOS,
        LWA_CDHDR TYPE CDHDR,
        LWA_CDPOS TYPE CDPOS,
        LWA_ALV   TYPE TY_ALV.

  SELECT *
    FROM CDHDR
    INTO CORRESPONDING FIELDS OF TABLE LTA_CDHDR
   WHERE USERNAME IN S_UNAME
     AND TCODE    IN S_TCODE
     AND UDATE    IN S_UDATE
     AND UTIME    IN S_UTIME.
  IF SY-SUBRC <> 0.
    MESSAGE '没有符合条件的数据' TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  SORT LTA_CDHDR BY OBJECTCLAS ASCENDING
                    OBJECTID   ASCENDING
                    CHANGENR   ASCENDING.


  SELECT *
    FROM CDPOS
    INTO CORRESPONDING FIELDS OF TABLE LTA_CDPOS
     FOR ALL ENTRIES IN LTA_CDHDR
   WHERE OBJECTCLAS =  LTA_CDHDR-OBJECTCLAS
     AND OBJECTID   =  LTA_CDHDR-OBJECTID
     AND CHANGENR   =  LTA_CDHDR-CHANGENR
     AND TABNAME    IN S_TNAME
     AND FNAME      IN S_FNAME.

  LOOP AT LTA_CDHDR INTO LWA_CDHDR.

    LWA_ALV-TCODE      = LWA_CDHDR-TCODE.
    LWA_ALV-USERNAME   = LWA_CDHDR-USERNAME.
    LWA_ALV-UDATE      = LWA_CDHDR-UDATE.
    LWA_ALV-UTIME      = LWA_CDHDR-UTIME.
    LWA_ALV-CHANGE_IND = LWA_CDHDR-CHANGE_IND.

    SELECT SINGLE
           TTEXT
      INTO LWA_ALV-TTEXT
      FROM TSTCT
     WHERE TCODE = LWA_ALV-TCODE
       AND SPRSL = SY-LANGU.

    SELECT NAME_TEXTC
      INTO LWA_ALV-UNAME
      FROM USER_ADDR
        UP TO 1 ROWS
     WHERE BNAME = LWA_ALV-USERNAME.
    ENDSELECT.

    LOOP AT LTA_CDPOS INTO LWA_CDPOS WHERE OBJECTCLAS = LWA_CDHDR-OBJECTCLAS
                                       AND OBJECTID   = LWA_CDHDR-OBJECTID
                                       AND CHANGENR   = LWA_CDHDR-CHANGENR.

      LWA_ALV-TABNAME   = LWA_CDPOS-TABNAME.
      LWA_ALV-FNAME     = LWA_CDPOS-FNAME.
      LWA_ALV-CHNGIND   = LWA_CDPOS-CHNGIND.
      LWA_ALV-VALUE_NEW = LWA_CDPOS-VALUE_NEW.
      LWA_ALV-VALUE_OLD = LWA_CDPOS-VALUE_OLD.
      APPEND LWA_ALV TO TA_ALV.

      CLEAR: LWA_CDPOS.
    ENDLOOP.
*
*    IF SY-SUBRC <> 0.
*      APPEND LWA_ALV TO TA_ALV.
*    ENDIF.
    CLEAR: LWA_ALV,
           LWA_CDHDR.
  ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  FRM_OUT_DATA
*&---------------------------------------------------------------------*
*       显示
*----------------------------------------------------------------------*
FORM FRM_OUT_DATA .

  DATA: LWA_ALV    TYPE TY_ALV,
        LWA_TCODE  TYPE TY_TCODE,
        LWA_CHANGE TYPE TY_CHANGE,
        LWA_UNAME  TYPE TY_UNAME,
        LWA_NODE   TYPE MTREESNODE.


  WA_LAYOUT-SEL_MODE   = 'A'.

* 设置FIELDCAT
  PERFORM FRM_SET_FCAT.

  LOOP AT TA_ALV INTO LWA_ALV.

    LWA_UNAME-USERNAME    = LWA_ALV-USERNAME.
    LWA_UNAME-UNAME       = LWA_ALV-UNAME.
    LWA_TCODE-TCODE       = LWA_ALV-TCODE.
    LWA_TCODE-TTEXT       = LWA_ALV-TTEXT.
    LWA_CHANGE-CHANGE_IND = LWA_ALV-CHANGE_IND.
    CASE LWA_CHANGE-CHANGE_IND.
      WHEN 'U'.
        LWA_CHANGE-CTEXT = '更新'.
      WHEN 'I'.
        LWA_CHANGE-CTEXT = '插入'.
      WHEN 'E'.
        LWA_CHANGE-CTEXT = '删除 (单字段文档)'.
      WHEN 'D'.
        LWA_CHANGE-CTEXT = '删除'.
      WHEN 'J'.
        LWA_CHANGE-CTEXT = '插入 (单字段文档)'.
    ENDCASE.

    APPEND LWA_UNAME  TO TA_UNAME.
    APPEND LWA_TCODE  TO TA_TCODE.
    APPEND LWA_CHANGE TO TA_CHANGE.
  ENDLOOP.

  SORT TA_TCODE  BY TCODE      ASCENDING.
  SORT TA_CHANGE BY CHANGE_IND ASCENDING.
  SORT TA_UNAME  BY USERNAME   ASCENDING.

  DELETE ADJACENT DUPLICATES FROM TA_TCODE  COMPARING TCODE.
  DELETE ADJACENT DUPLICATES FROM TA_CHANGE COMPARING CHANGE_IND.
  DELETE ADJACENT DUPLICATES FROM TA_UNAME  COMPARING USERNAME.

  CLEAR: LWA_NODE.
  LWA_NODE-NODE_KEY = 'HEAD'.
  CLEAR LWA_NODE-RELATKEY.
  CLEAR LWA_NODE-RELATSHIP.
  CLEAR LWA_NODE-N_IMAGE.
  CLEAR LWA_NODE-EXP_IMAGE.
  CLEAR LWA_NODE-EXPANDER.
*文件夹
  LWA_NODE-HIDDEN = ''.
  LWA_NODE-DISABLED = ''.
  LWA_NODE-ISFOLDER = 'X'.
  LWA_NODE-TEXT = '选择条件'.
  APPEND LWA_NODE TO TA_NODE.


  CLEAR: LWA_NODE.
  LWA_NODE-NODE_KEY  = 'ITEM1_1'.
  LWA_NODE-RELATKEY  = 'HEAD'.
  LWA_NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
  CLEAR LWA_NODE-N_IMAGE.
  CLEAR LWA_NODE-EXP_IMAGE.
  CLEAR LWA_NODE-EXPANDER.
*文件夹
  LWA_NODE-HIDDEN = ''.
  LWA_NODE-DISABLED = ''.
  LWA_NODE-ISFOLDER = 'X'.
  LWA_NODE-TEXT = '事物码'.
  APPEND LWA_NODE TO TA_NODE.

  CLEAR: LWA_NODE.
  LWA_NODE-NODE_KEY  = 'ITEM1_2'.
  LWA_NODE-RELATKEY  = 'HEAD'.
  LWA_NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
  CLEAR LWA_NODE-N_IMAGE.
  CLEAR LWA_NODE-EXP_IMAGE.
  CLEAR LWA_NODE-EXPANDER.
*文件夹
  LWA_NODE-HIDDEN = ''.
  LWA_NODE-DISABLED = ''.
  LWA_NODE-ISFOLDER = 'X'.
  LWA_NODE-TEXT = '事务操作类型'.
  APPEND LWA_NODE TO TA_NODE.

  CLEAR: LWA_NODE.
  LWA_NODE-NODE_KEY  = 'ITEM1_3'.
  LWA_NODE-RELATKEY  = 'HEAD'.
  LWA_NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
  CLEAR LWA_NODE-N_IMAGE.
  CLEAR LWA_NODE-EXP_IMAGE.
  CLEAR LWA_NODE-EXPANDER.
*文件夹
  LWA_NODE-HIDDEN = ''.
  LWA_NODE-DISABLED = ''.
  LWA_NODE-ISFOLDER = 'X'.
  LWA_NODE-TEXT = '用户'.
  APPEND LWA_NODE TO TA_NODE.

  LOOP AT TA_TCODE INTO LWA_TCODE.

    CLEAR: LWA_NODE.
    LWA_NODE-NODE_KEY  = LWA_TCODE-TCODE.
    LWA_NODE-RELATKEY  = 'ITEM1_1'.
    LWA_NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
    CLEAR LWA_NODE-N_IMAGE.
    CLEAR LWA_NODE-EXP_IMAGE.
    CLEAR LWA_NODE-EXPANDER.
*  文件夹
    LWA_NODE-HIDDEN = ''.
    LWA_NODE-DISABLED = ''.
    LWA_NODE-ISFOLDER = ''.
    CONCATENATE LWA_TCODE-TCODE '(' LWA_TCODE-TTEXT ')' INTO LWA_NODE-TEXT.
*    LWA_NODE-TEXT = LWA_TCODE-TTEXT.
    APPEND LWA_NODE TO TA_NODE.

  ENDLOOP.

  LOOP AT TA_CHANGE INTO LWA_CHANGE.

    CLEAR: LWA_NODE.
    LWA_NODE-NODE_KEY  = LWA_CHANGE-CHANGE_IND.
    LWA_NODE-RELATKEY  = 'ITEM1_2'.
    LWA_NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
    CLEAR LWA_NODE-N_IMAGE.
    CLEAR LWA_NODE-EXP_IMAGE.
    CLEAR LWA_NODE-EXPANDER.
*  文件夹
    LWA_NODE-HIDDEN = ''.
    LWA_NODE-DISABLED = ''.
    LWA_NODE-ISFOLDER = ''.
    CONCATENATE LWA_CHANGE-CHANGE_IND '(' LWA_CHANGE-CTEXT ')' INTO LWA_NODE-TEXT.
*    LWA_NODE-TEXT = LWA_CHANGE-CTEXT.
    APPEND LWA_NODE TO TA_NODE.

  ENDLOOP.

  LOOP AT TA_UNAME INTO LWA_UNAME.

    CLEAR: LWA_NODE.
    LWA_NODE-NODE_KEY  = LWA_UNAME-USERNAME.
    LWA_NODE-RELATKEY  = 'ITEM1_3'.
    LWA_NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
    CLEAR LWA_NODE-N_IMAGE.
    CLEAR LWA_NODE-EXP_IMAGE.
    CLEAR LWA_NODE-EXPANDER.
*  文件夹
    LWA_NODE-HIDDEN = ''.
    LWA_NODE-DISABLED = ''.
    LWA_NODE-ISFOLDER = ''.
    LWA_NODE-TEXT = LWA_UNAME-UNAME.
    APPEND LWA_NODE TO TA_NODE.

  ENDLOOP.


  TA_ALV_O = TA_ALV.

  CALL SCREEN 9000.

** 显示ALV
*  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
*    EXPORTING
*      I_CALLBACK_PROGRAM = SY-REPID
*      I_SAVE             = 'A'
*      IS_LAYOUT_LVC      = WA_LAYOUT
*      IT_FIELDCAT_LVC    = TA_FCAT
*    TABLES
*      T_OUTTAB           = TA_ALV
*    EXCEPTIONS
*      PROGRAM_ERROR      = 1
*      OTHERS             = 2.
*
*  IF SY-SUBRC <> 0.
*
*  ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_FCAT
*&---------------------------------------------------------------------*
*       设置FIELDCAT
*----------------------------------------------------------------------*
FORM FRM_SET_FCAT .

  DATA: LWA_FCAT  LIKE LINE OF TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 1.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'TCODE'.
  LWA_FCAT-COLTEXT   = '事务码'.
  LWA_FCAT-OUTPUTLEN = 10.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 2.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'TTEXT'.
  LWA_FCAT-COLTEXT   = '事务名称'.
  LWA_FCAT-OUTPUTLEN = 15.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 3.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'USERNAME'.
  LWA_FCAT-COLTEXT   = '用户ID'.
  LWA_FCAT-OUTPUTLEN = 10.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 4.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'UNAME'.
  LWA_FCAT-COLTEXT   = '用户姓名'.
  LWA_FCAT-OUTPUTLEN = 10.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 5.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'UDATE'.
  LWA_FCAT-COLTEXT   = '操作日期'.
  LWA_FCAT-OUTPUTLEN = 10.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 6.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'UTIME'.
  LWA_FCAT-COLTEXT   = '操作时间'.
  LWA_FCAT-OUTPUTLEN = 10.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 7.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'CHANGE_IND'.
  LWA_FCAT-COLTEXT   = '事务操作类型'.
  LWA_FCAT-REF_TABLE = 'CDHDR'.
  LWA_FCAT-REF_FIELD = 'CHANGE_IND'.
  LWA_FCAT-OUTPUTLEN = 12.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 8.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'TABNAME'.
  LWA_FCAT-COLTEXT   = '操作表'.
  LWA_FCAT-OUTPUTLEN = 10.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 9.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'CHNGIND'.
  LWA_FCAT-COLTEXT   = '表操作类型'.
  LWA_FCAT-REF_TABLE = 'CDPOS'.
  LWA_FCAT-REF_FIELD = 'CHNGIND'.
  LWA_FCAT-OUTPUTLEN = 8.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 10.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'FNAME'.
  LWA_FCAT-COLTEXT   = '操作字段'.
  LWA_FCAT-OUTPUTLEN = 10.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 11.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'VALUE_NEW'.
  LWA_FCAT-COLTEXT   = '表字段新值'.
  LWA_FCAT-OUTPUTLEN = 15.
  APPEND LWA_FCAT TO TA_FCAT.

  CLEAR: LWA_FCAT.
  LWA_FCAT-ROW_POS   = 12.
  LWA_FCAT-TABNAME   = 'TA_ALV'.
  LWA_FCAT-FIELDNAME = 'VALUE_OLD'.
  LWA_FCAT-COLTEXT   = '表字段旧值'.
  LWA_FCAT-OUTPUTLEN = 15.
  APPEND LWA_FCAT TO TA_FCAT.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Module  STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
  SET PF-STATUS 'STATUS_9000'.
  SET TITLEBAR 'T9000'.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  ALV_OUT_9000  OUTPUT
*&---------------------------------------------------------------------*
MODULE ALV_OUT_9000 OUTPUT.

  DATA: TL_EVENT        TYPE CNTL_SIMPLE_EVENTS,
        WL_EVENT        TYPE CNTL_SIMPLE_EVENT,
        LGV_APPLICATION TYPE REF TO CLG_EVENT_RECEIVER,
        LGV_SIDE_L      TYPE I VALUE CL_GUI_DOCKING_CONTAINER=>DOCK_AT_LEFT,
        LGV_SIDE_R      TYPE I VALUE CL_GUI_DOCKING_CONTAINER=>DOCK_AT_LEFT."RIGHT."DOCK_AT_BOTTOM.

  IF VG_TREE IS INITIAL.

    CREATE OBJECT VG_DOCKING_CONTAINER_L
      EXPORTING
        REPID = SY-REPID
        DYNNR = '9000'
        RATIO = 15
        SIDE  = LGV_SIDE_L.

    CREATE OBJECT VG_TREE
      EXPORTING
        PARENT                      = VG_DOCKING_CONTAINER_L
        NODE_SELECTION_MODE         = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE
      EXCEPTIONS
        LIFETIME_ERROR              = 1
        CNTL_SYSTEM_ERROR           = 2
        CREATE_ERROR                = 3
        FAILED                      = 4
        ILLEGAL_NODE_SELECTION_MODE = 5.


    WL_EVENT-EVENTID    = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.
    WL_EVENT-APPL_EVENT = 'X'.
    APPEND WL_EVENT TO TL_EVENT.

    CALL METHOD VG_TREE->SET_REGISTERED_EVENTS
      EXPORTING
        EVENTS                    = TL_EVENT
      EXCEPTIONS
        CNTL_ERROR                = 1
        CNTL_SYSTEM_ERROR         = 2
        ILLEGAL_EVENT_COMBINATION = 3.


    CREATE OBJECT LGV_APPLICATION.
    SET HANDLER LGV_APPLICATION->HANDLE_NODE_DOUBLE_CLICK FOR VG_TREE.

    CALL METHOD VG_TREE->ADD_NODES
      EXPORTING
        TABLE_STRUCTURE_NAME           = 'MTREESNODE'
        NODE_TABLE                     = TA_NODE
      EXCEPTIONS
        FAILED                         = 1
        ERROR_IN_NODE_TABLE            = 2
        DP_ERROR                       = 3
        TABLE_STRUCTURE_NAME_NOT_FOUND = 4
        OTHERS                         = 5.

*    CALL METHOD VG_TREE->EXPAND_ROOT_NODES
*      EXPORTING
*        LEVEL_COUNT         = 2
*        EXPAND_SUBTREE      = 'X'
*      EXCEPTIONS
*        FAILED              = 1
*        ILLEGAL_LEVEL_COUNT = 2
*        CNTL_SYSTEM_ERROR   = 3
*        OTHERS              = 4.

    IF VG_ALV IS INITIAL.

    CREATE OBJECT VG_DOCKING_CONTAINER_R
      EXPORTING
        REPID = SY-REPID
        DYNNR = '9000'
        RATIO = 85
        SIDE  = LGV_SIDE_R.

    CREATE OBJECT VG_ALV
      EXPORTING
        I_PARENT = VG_DOCKING_CONTAINER_R.

    CALL METHOD VG_ALV->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
        I_SAVE               = 'U'
        IS_LAYOUT            = WA_LAYOUT
      CHANGING
        IT_OUTTAB            = TA_ALV_O
        IT_FIELDCATALOG      = TA_FCAT.

    ENDIF.

  ENDIF.


ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_EXIT_9000  INPUT
*&---------------------------------------------------------------------*
MODULE USER_EXIT_9000 INPUT.
  LEAVE TO SCREEN 0.
ENDMODULE.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小啊曼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值