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.