1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
|
*----------------------------------------------------------------------*
***INCLUDE /BA1/LR2_OBJ_ODR_CORE_UIO04 .
*----------------------------------------------------------------------*
MODULE create_and_init_tree OUTPUT.
DATA:
l_progname TYPE PROGNAME,
l_status TYPE GUI_STATUS,
l_title TYPE GUI_TITLE,
lt_fcodes_excl TYPE /BA1/R0_TTY_FCODES,
l_program TYPE PROGRAM,
l_dynpro TYPE SCRADNUM,
l_dc_node_key TYPE tv_nodekey,
l_flg_new_selection(1) VALUE CON_TRUE,
l_tab_node TYPE /ba1/r2_tab_ce_online_node,
l_simple_tree TYPE REF TO cl_gui_simple_tree,
l_docking_left TYPE REF TO cl_gui_docking_container,
l_sub_panel TYPE SCRADNUM.
DATA:
l_sdl_timestamp TYPE TIMESTAMPL,
l_sdl_timestampl TYPE TZNTSTMPLL,
l_events TYPE CNTL_SIMPLE_EVENTS,
l_event TYPE CNTL_SIMPLE_EVENT,
l_package_id TYPE /BA1/F3_DTE_DS_PACKID,
l_package_no TYPE /BA1/F3_DTE_DS_PACKNO,
l_event_receiver TYPE REF TO LCL_TREE_EVENT_RECEIVER.
*----------------------------------------------------------------------*
g_ref_odr = g_ref_env->get_odr( ).
IF l_flg_new_selection = CON_TRUE.
*----------------------------------------------------------------------*
*& CLEAR OLD DATA
*----------------------------------------------------------------------*
IF l_simple_tree IS BOUND.
l_simple_tree->free( ).
ENDIF.
*----------------------------------------------------------------------*
IF l_docking_left IS BOUND.
l_docking_left->free( ).
ENDIF.
*----------------------------------------------------------------------*
*& CREATE DOCKING CONTAINER
*----------------------------------------------------------------------*
CREATE OBJECT l_docking_left
EXPORTING
REPID = SY-repid
DYNNR = SY-dynnr
SIDE = l_docking_left->dock_at_left
RATIO = CON_DC_RATIO
LIFETIME = l_docking_left->lifetime_default
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF sy-subrc <> 0.
* TODO
ENDIF.
*----------------------------------------------------------------------*
*& CREATE TREE
*----------------------------------------------------------------------*
CREATE OBJECT l_simple_tree
EXPORTING
LIFETIME = l_simple_tree->lifetime_default
PARENT = l_docking_left
NODE_SELECTION_MODE = l_simple_tree->node_sel_mode_single
EXCEPTIONS
LIFETIME_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
FAILED = 4
ILLEGAL_NODE_SELECTION_MODE = 5
OTHERS = 6.
IF sy-subrc <> 0.
* TODO
ENDIF.
*----------------------------------------------------------------------*
*& CREATE EVENTS AND REGISTER THEM
*----------------------------------------------------------------------*
l_event-eventid =
cl_gui_simple_tree=>eventid_node_double_click.
APPEND l_event TO l_events.
*----------------------------------------------------------------------*
l_event-eventid =
cl_gui_simple_tree=>eventid_node_context_menu_req.
APPEND l_event TO l_events.
*----------------------------------------------------------------------*
CALL METHOD l_simple_tree->set_registered_events
EXPORTING
EVENTS = l_events
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
ILLEGAL_EVENT_COMBINATION = 3.
IF sy-subrc <> 0.
* TODO
ENDIF.
CONVERT DATE /BA1/R2_STR_ODR_RUN_PARAMETERS-sdl_tsid_date
TIME /BA1/R2_STR_ODR_RUN_PARAMETERS-sdl_tsid_time
INTO TIME STAMP l_sdl_timestamp TIME ZONE sy-zonlo.
UNPACK l_sdl_timestamp TO l_sdl_timestampl.
*----------------------------------------------------------------------*
*& SET HANDLERS
*----------------------------------------------------------------------*
IF NOT l_event_receiver IS INITIAL.
l_event_receiver->set_timestamp( l_sdl_timestampl ).
SET HANDLER l_event_receiver->handle_node_double_click
FOR l_simple_tree.
SET HANDLER l_event_receiver->handle_node_context_menu_req
FOR l_simple_tree.
SET HANDLER l_event_receiver->handle_node_context_menu_sel
FOR l_simple_tree.
ELSE.
CREATE OBJECT l_event_receiver
EXPORTING
IM_SYSTEM_TIME = l_sdl_timestampl
IM_KEY_DATE = /BA1/R2_STR_ODR_RUN_PARAMETERS-keydate.
SET HANDLER l_event_receiver->handle_node_double_click
FOR l_simple_tree.
SET HANDLER l_event_receiver->handle_node_context_menu_req
FOR l_simple_tree.
SET HANDLER l_event_receiver->handle_node_context_menu_sel
FOR l_simple_tree.
ENDIF.
*----------------------------------------------------------------------*
*& FILL TREE
*----------------------------------------------------------------------*
TRY.
l_package_id = g_ref_odr->/BA1/IF_AL_R2_ODR_MAIN~get_package_id( ).
l_package_no = g_ref_odr->/BA1/IF_AL_R2_ODR_MAIN~get_package_no( ).
CALL FUNCTION '/BA1/R2_OBJ_ODR_STD_ALV_TREE'
EXPORTING
IM_PACKAGE_ID = l_package_id
IM_PACKAGE_NO = l_package_no
IMPORTING
EX_TAB_NODE = l_tab_node.
CATCH CX_BA1_R2_ERROR.
* TODO
ENDTRY.
CALL METHOD l_simple_tree->add_nodes
EXPORTING
TABLE_STRUCTURE_NAME = '/BA1/R2_STR_CE_ONLINE_NODE'
NODE_TABLE = l_tab_node
EXCEPTIONS
FAILED = 1
ERROR_IN_NODE_TABLE = 2
DP_ERROR = 3
TABLE_STRUCTURE_NAME_NOT_FOUND = 4
OTHERS = 5.
IF sy-subrc <> 0.
* TODO
ENDIF.
CALL METHOD l_simple_tree->expand_root_nodes
EXPORTING
LEVEL_COUNT = 0
EXPAND_SUBTREE = ''
EXCEPTIONS
FAILED = 1
ILLEGAL_LEVEL_COUNT = 2
CNTL_SYSTEM_ERROR = 3.
IF sy-subrc <> 0.
* TODO
ENDIF.
l_flg_new_selection = CON_FALSE.
ENDIF.
ENDMODULE. " CREATE_AND_INIT_TREE OUTPUT |
Partager