05-19-2010 9:36 AM
Hi all
i had programing a simple tree with alv, check URL
[http://bildupload.sro.at/p/350813.html]
on the left side, you see database. Now, when you click ones of db, it should show the db with data fields in ALV. The first click work, but continue doens't work. Why?
thx
05-19-2010 7:51 PM
Hi,
You clear (REFRESH I_TAB...) in event generated by theclick on left side?
May be you are appending at the end of internal table...
Best regards,
Leandro Mengue
05-19-2010 7:51 PM
Hi,
You clear (REFRESH I_TAB...) in event generated by theclick on left side?
May be you are appending at the end of internal table...
Best regards,
Leandro Mengue
05-20-2010 6:23 AM
05-20-2010 9:10 AM
the event generated table is private class instance variable.
here the code
method create_and_init_tree.
data lt_tabname type tt_tabname.
* data lt_simple_events type cntl_simple_events.
* data lrf_tree_events type ref to gcl_tree_events.
* data lt_node_table_type type tt_node_table_type.
if c_grf_custom_container is bound.
c_grf_custom_container->free( ).
clear c_grf_custom_container.
endif.
* create object lrf_tree_events
* exporting
* irf_create_tree_node = me.
me->build_table_db_index(
changing
ct_tabname = lt_tabname
).
"Container erstellen
create object c_grf_custom_container
exporting
container_name = 'TREE_CONTAINER'
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc <> 0.
message a000.
endif.
"Tree in Container inserten
create object c_grf_simple_tree
exporting
parent = c_grf_custom_container
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.
if sy-subrc <> 0.
message a000.
endif.
me->create_events(
changing
ct_simple_events = c_gt_simple_events
).
"Events registrieren
c_grf_simple_tree->set_registered_events(
exporting
events = c_gt_simple_events
exceptions
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3
).
if sy-subrc <> 0.
message a000.
endif.
set handler me->handle_node_double_click for c_grf_simple_tree.
me->build_node_table(
changing
ct_tabname = lt_tabname
ct_node_table_type = c_gt_node_table_type
).
c_grf_simple_tree->add_nodes(
exporting
table_structure_name = 'MTREESNODE'
node_table = c_gt_node_table_type
exceptions
failed = 1
error_in_node_table = 2
dp_error = 3
table_structure_name_not_found = 4
others = 5
).
if sy-subrc <> 0.
message a000.
endif.
endmethod. "create_and_init_tree
method create_events.
data ls_simple_event type cntl_simple_event.
ls_simple_event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
ls_simple_event-appl_event = 'X'.
append ls_simple_event to ct_simple_events.
endmethod. "create_event
method build_node_table.
field-symbols <ls_tabname> type tabname.
data ls_node_table_type like line of ct_node_table_type.
data ls_tab_map type ts_tab_map.
if not c_gt_tab_map is initial.
exit.
endif.
loop at ct_tabname assigning <ls_tabname>.
ls_node_table_type-node_key = sy-tabix.
clear ls_node_table_type-relatkey.
clear ls_node_table_type-relatship.
ls_node_table_type-hidden = ' '.
ls_node_table_type-disabled = ' '.
ls_node_table_type-n_image = icon_database_table.
clear ls_node_table_type-isfolder.
ls_node_table_type-text = <ls_tabname>.
ls_tab_map-id = ls_node_table_type-node_key.
ls_tab_map-tabname = ls_node_table_type-text.
append ls_node_table_type to ct_node_table_type.
append ls_tab_map to c_gt_tab_map.
endloop.
endmethod. "build_node_table
method handle_node_double_click.
constants co_tabname type string value 'C_GT_'.
data lrf_show_db_alv type ref to gcl_show_db_alv.
data ls_tab_map type ts_tab_map.
data lf_tabname type string.
field-symbols <lt_any> type any table.
read table c_gt_tab_map into ls_tab_map
with key id = node_key.
if sy-subrc = 0.
concatenate co_tabname ls_tab_map-tabname
into lf_tabname.
assign (lf_tabname) to <lt_any>.
if sy-subrc = 0.
* create object lrf_show_db_alv.
* lrf_show_db_alv->create_alv(
* changing
* cf_tabname = ls_tab_map-tabname
* ct_any = <lt_any>
* ).
grf_show_db_alv->create_alv(
changing
cf_tabname = ls_tab_map-tabname
ct_any = <lt_any>
).
endif.
endif.
endmethod. "handle_node_double_click
05-20-2010 9:11 AM
the event generated table is private class instance variable.
here the code
method create_and_init_tree.
data lt_tabname type tt_tabname.
* data lt_simple_events type cntl_simple_events.
* data lrf_tree_events type ref to gcl_tree_events.
* data lt_node_table_type type tt_node_table_type.
if c_grf_custom_container is bound.
c_grf_custom_container->free( ).
clear c_grf_custom_container.
endif.
* create object lrf_tree_events
* exporting
* irf_create_tree_node = me.
me->build_table_db_index(
changing
ct_tabname = lt_tabname
).
"Container erstellen
create object c_grf_custom_container
exporting
container_name = 'TREE_CONTAINER'
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc <> 0.
message a000.
endif.
"Tree in Container inserten
create object c_grf_simple_tree
exporting
parent = c_grf_custom_container
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.
if sy-subrc <> 0.
message a000.
endif.
me->create_events(
changing
ct_simple_events = c_gt_simple_events
).
"Events registrieren
c_grf_simple_tree->set_registered_events(
exporting
events = c_gt_simple_events
exceptions
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3
).
if sy-subrc <> 0.
message a000.
endif.
set handler me->handle_node_double_click for c_grf_simple_tree.
me->build_node_table(
changing
ct_tabname = lt_tabname
ct_node_table_type = c_gt_node_table_type
).
c_grf_simple_tree->add_nodes(
exporting
table_structure_name = 'MTREESNODE'
node_table = c_gt_node_table_type
exceptions
failed = 1
error_in_node_table = 2
dp_error = 3
table_structure_name_not_found = 4
others = 5
).
if sy-subrc <> 0.
message a000.
endif.
endmethod. "create_and_init_tree
method create_events.
data ls_simple_event type cntl_simple_event.
ls_simple_event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
ls_simple_event-appl_event = 'X'.
append ls_simple_event to ct_simple_events.
endmethod. "create_event
method build_node_table.
field-symbols <ls_tabname> type tabname.
data ls_node_table_type like line of ct_node_table_type.
data ls_tab_map type ts_tab_map.
if not c_gt_tab_map is initial.
exit.
endif.
loop at ct_tabname assigning <ls_tabname>.
ls_node_table_type-node_key = sy-tabix.
clear ls_node_table_type-relatkey.
clear ls_node_table_type-relatship.
ls_node_table_type-hidden = ' '.
ls_node_table_type-disabled = ' '.
ls_node_table_type-n_image = icon_database_table.
clear ls_node_table_type-isfolder.
ls_node_table_type-text = <ls_tabname>.
ls_tab_map-id = ls_node_table_type-node_key.
ls_tab_map-tabname = ls_node_table_type-text.
append ls_node_table_type to ct_node_table_type.
append ls_tab_map to c_gt_tab_map.
endloop.
endmethod. "build_node_table
method handle_node_double_click.
constants co_tabname type string value 'C_GT_'.
data lrf_show_db_alv type ref to gcl_show_db_alv.
data ls_tab_map type ts_tab_map.
data lf_tabname type string.
field-symbols <lt_any> type any table.
read table c_gt_tab_map into ls_tab_map
with key id = node_key.
if sy-subrc = 0.
concatenate co_tabname ls_tab_map-tabname
into lf_tabname.
assign (lf_tabname) to <lt_any>.
if sy-subrc = 0.
* create object lrf_show_db_alv.
* lrf_show_db_alv->create_alv(
* changing
* cf_tabname = ls_tab_map-tabname
* ct_any = <lt_any>
* ).
grf_show_db_alv->create_alv(
changing
cf_tabname = ls_tab_map-tabname
ct_any = <lt_any>
).
endif.
endif.
endmethod. "handle_node_double_click
05-20-2010 9:12 AM
the event generated table is private class instance variable.
here the code
method create_and_init_tree.
data lt_tabname type tt_tabname.
* data lt_simple_events type cntl_simple_events.
* data lrf_tree_events type ref to gcl_tree_events.
* data lt_node_table_type type tt_node_table_type.
if c_grf_custom_container is bound.
c_grf_custom_container->free( ).
clear c_grf_custom_container.
endif.
* create object lrf_tree_events
* exporting
* irf_create_tree_node = me.
me->build_table_db_index(
changing
ct_tabname = lt_tabname
).
"Container erstellen
create object c_grf_custom_container
exporting
container_name = 'TREE_CONTAINER'
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc <> 0.
message a000.
endif.
"Tree in Container inserten
create object c_grf_simple_tree
exporting
parent = c_grf_custom_container
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.
if sy-subrc <> 0.
message a000.
endif.
me->create_events(
changing
ct_simple_events = c_gt_simple_events
).
"Events registrieren
c_grf_simple_tree->set_registered_events(
exporting
events = c_gt_simple_events
exceptions
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3
).
if sy-subrc <> 0.
message a000.
endif.
set handler me->handle_node_double_click for c_grf_simple_tree.
me->build_node_table(
changing
ct_tabname = lt_tabname
ct_node_table_type = c_gt_node_table_type
).
c_grf_simple_tree->add_nodes(
exporting
table_structure_name = 'MTREESNODE'
node_table = c_gt_node_table_type
exceptions
failed = 1
error_in_node_table = 2
dp_error = 3
table_structure_name_not_found = 4
others = 5
).
if sy-subrc <> 0.
message a000.
endif.
endmethod. "create_and_init_tree
--------------------------------------------------------------
method create_events.
data ls_simple_event type cntl_simple_event.
ls_simple_event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
ls_simple_event-appl_event = 'X'.
append ls_simple_event to ct_simple_events.
endmethod. "create_event
--------------------------------------------------------------
method build_node_table.
field-symbols <ls_tabname> type tabname.
data ls_node_table_type like line of ct_node_table_type.
data ls_tab_map type ts_tab_map.
if not c_gt_tab_map is initial.
exit.
endif.
loop at ct_tabname assigning <ls_tabname>.
ls_node_table_type-node_key = sy-tabix.
clear ls_node_table_type-relatkey.
clear ls_node_table_type-relatship.
ls_node_table_type-hidden = ' '.
ls_node_table_type-disabled = ' '.
ls_node_table_type-n_image = icon_database_table.
clear ls_node_table_type-isfolder.
ls_node_table_type-text = <ls_tabname>.
ls_tab_map-id = ls_node_table_type-node_key.
ls_tab_map-tabname = ls_node_table_type-text.
append ls_node_table_type to ct_node_table_type.
append ls_tab_map to c_gt_tab_map.
endloop.
endmethod. "build_node_table
--------------------------------------------------------------
method handle_node_double_click.
constants co_tabname type string value 'C_GT_'.
data lrf_show_db_alv type ref to gcl_show_db_alv.
data ls_tab_map type ts_tab_map.
data lf_tabname type string.
field-symbols <lt_any> type any table.
read table c_gt_tab_map into ls_tab_map
with key id = node_key.
if sy-subrc = 0.
concatenate co_tabname ls_tab_map-tabname
into lf_tabname.
assign (lf_tabname) to <lt_any>.
if sy-subrc = 0.
* create object lrf_show_db_alv.
* lrf_show_db_alv->create_alv(
* changing
* cf_tabname = ls_tab_map-tabname
* ct_any = <lt_any>
* ).
grf_show_db_alv->create_alv(
changing
cf_tabname = ls_tab_map-tabname
ct_any = <lt_any>
).
endif.
endif.
endmethod. "handle_node_double_click
05-20-2010 9:13 AM
the event generated table is private class instance variable.
here the code
method create_and_init_tree.
data lt_tabname type tt_tabname.
* data lt_simple_events type cntl_simple_events.
* data lrf_tree_events type ref to gcl_tree_events.
* data lt_node_table_type type tt_node_table_type.
if c_grf_custom_container is bound.
c_grf_custom_container->free( ).
clear c_grf_custom_container.
endif.
* create object lrf_tree_events
* exporting
* irf_create_tree_node = me.
me->build_table_db_index(
changing
ct_tabname = lt_tabname
).
"Container erstellen
create object c_grf_custom_container
exporting
container_name = 'TREE_CONTAINER'
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc <> 0.
message a000.
endif.
"Tree in Container inserten
create object c_grf_simple_tree
exporting
parent = c_grf_custom_container
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.
if sy-subrc <> 0.
message a000.
endif.
me->create_events(
changing
ct_simple_events = c_gt_simple_events
).
"Events registrieren
c_grf_simple_tree->set_registered_events(
exporting
events = c_gt_simple_events
exceptions
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3
).
if sy-subrc <> 0.
message a000.
endif.
set handler me->handle_node_double_click for c_grf_simple_tree.
me->build_node_table(
changing
ct_tabname = lt_tabname
ct_node_table_type = c_gt_node_table_type
).
c_grf_simple_tree->add_nodes(
exporting
table_structure_name = 'MTREESNODE'
node_table = c_gt_node_table_type
exceptions
failed = 1
error_in_node_table = 2
dp_error = 3
table_structure_name_not_found = 4
others = 5
).
if sy-subrc <> 0.
message a000.
endif.
endmethod. "create_and_init_tree
05-20-2010 9:16 AM