Ich entdeckte einige sehr seltsame Verhalten mit hierarchischen SALV (Klasse CL_SALV_TREE
).Gibt es einen Fehler in CL_SALV_TREE?
Wenn ich die set_data_row
Methode direkt nach dem Erstellen der Knoteninstanz verwenden, dann erhalte ich die richtige Hierarchie.
REPORT zzy.
CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
main
RAISING cx_salv_msg cx_salv_error.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD main.
DATA: lt_data TYPE STANDARD TABLE OF t000.
cl_salv_tree=>factory(
IMPORTING
r_salv_tree = DATA(lo_salv_tree)
CHANGING
t_table = lt_data
).
DATA(lo_tree_settings) = lo_salv_tree->get_tree_settings().
lo_tree_settings->set_hierarchy_header(`Hierarchy`).
lo_tree_settings->set_hierarchy_size(30).
DATA(lo_nodes) = lo_salv_tree->get_nodes().
DATA(lo_root_node) = lo_nodes->add_node(
related_node = space
relationship = if_salv_c_node_relation=>last_child
data_row = VALUE t000(mandt = '100')
collapsed_icon = '@3S\QStatus: [email protected]'
expanded_icon = '@3T\QStatus: [email protected]'
row_style = if_salv_c_tree_style=>emphasized_positive
text = '100'
).
lo_root_node->set_data_row(VALUE t000(mandt = '100')).
lo_root_node->get_hierarchy_item()->set_icon('@0V\[email protected]').
DATA(lo_node1) = lo_nodes->add_node(
related_node = lo_root_node->get_key()
relationship = cl_gui_column_tree=>relat_last_child
text = '200'
).
lo_node1->set_data_row(VALUE t000(mandt = '200')).
DATA(lo_node2) = lo_nodes->add_node(
related_node = lo_node1->get_key()
relationship = cl_gui_column_tree=>relat_last_child
text = '300'
).
lo_node2->set_data_row(VALUE t000(mandt = '300')).
DATA(lo_node3) = lo_nodes->add_node(
related_node = lo_node2->get_key()
relationship = cl_gui_column_tree=>relat_last_child
text = '400'
).
lo_node3->set_data_row(VALUE t000(mandt = '400')).
lo_salv_tree->display().
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
TRY .
lcl_main=>main().
CATCH cx_salv_msg cx_salv_error.
ASSERT 0 = 1.
ENDTRY.
Allerdings, wenn ich set_data_row
Methode am Ende meiner main
Methode verwenden, dann ist das Ergebnis völlig unerwartet.
REPORT zzy.
CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
main
RAISING cx_salv_msg cx_salv_error.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD main.
DATA: lt_data TYPE STANDARD TABLE OF t000.
cl_salv_tree=>factory(
IMPORTING
r_salv_tree = DATA(lo_salv_tree)
CHANGING
t_table = lt_data
).
DATA(lo_tree_settings) = lo_salv_tree->get_tree_settings().
lo_tree_settings->set_hierarchy_header(`Hierarchy`).
lo_tree_settings->set_hierarchy_size(30).
DATA(lo_nodes) = lo_salv_tree->get_nodes().
DATA(lo_root_node) = lo_nodes->add_node(
related_node = space
relationship = if_salv_c_node_relation=>last_child
data_row = VALUE t000(mandt = '100')
collapsed_icon = '@3S\QStatus: [email protected]'
expanded_icon = '@3T\QStatus: [email protected]'
row_style = if_salv_c_tree_style=>emphasized_positive
text = '100'
).
lo_root_node->get_hierarchy_item()->set_icon('@0V\[email protected]').
DATA(lo_node1) = lo_nodes->add_node(
related_node = lo_root_node->get_key()
relationship = cl_gui_column_tree=>relat_last_child
text = '200'
).
DATA(lo_node2) = lo_nodes->add_node(
related_node = lo_node1->get_key()
relationship = cl_gui_column_tree=>relat_last_child
text = '300'
).
DATA(lo_node3) = lo_nodes->add_node(
related_node = lo_node2->get_key()
relationship = cl_gui_column_tree=>relat_last_child
text = '400'
).
lo_root_node->set_data_row(VALUE t000(mandt = '100')).
lo_node1->set_data_row(VALUE t000(mandt = '200')).
lo_node2->set_data_row(VALUE t000(mandt = '300')).
lo_node3->set_data_row(VALUE t000(mandt = '400')).
lo_salv_tree->display().
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
TRY .
lcl_main=>main().
CATCH cx_salv_msg cx_salv_error.
ASSERT 0 = 1.
ENDTRY.
Ist das ein Fehler in dieser Komponente? Ich konnte keine Dokumentation finden, die dieses seltsame Verhalten erklären würde.
Ausgezeichnete Art, eine Frage zu stellen und ein reproduzierbares Beispiel zu liefern! – vwegert
In welcher Version laufen Sie? –
@BryanCain SAP_BASIS und SAP_ABA haben die folgende Version: Release 740, SP-Level 0006, Support Package SAPKB74006 bzw. SAPKA74006. – Jagger