‎2009 May 07 1:13 PM
Hello I want to create an alv tree but if I want to display the positions I get a dump. here is my coding:
CREATE OBJECT container
EXPORTING
container_name = 'CONTAINER'.
* create tree control
CREATE OBJECT grid
EXPORTING
parent = container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = 'X'
no_html_header = 'X'
no_toolbar = ''
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.
CALL METHOD grid->set_table_for_first_display
EXPORTING
i_structure_name = 'KNA1'
CHANGING
it_outtab = gt_tab
it_fieldcatalog = gt_fct.
SELECT * FROM kna1 INTO gs_tab UP TO 50 ROWS.
APPEND gs_tab TO gt_tab.
ENDSELECT.
SORT gt_tab BY mandt land1 kunnr.
DATA: l_land1_key TYPE lvc_nkey,
l_mandt_key TYPE lvc_nkey,
l_last_key TYPE lvc_nkey.
LOOP AT gt_tab INTO gs_tab.
ON CHANGE OF gs_tab-mandt.
PERFORM add_mandt_line USING gs_tab
''
CHANGING l_mandt_key.
ENDON.
ON CHANGE OF gs_tab-land1.
PERFORM add_land1_line USING gs_tab
l_mandt_key
CHANGING l_land1_key.
ENDON.
PERFORM add_complete_line USING gs_tab
l_land1_key
CHANGING l_last_key.
ENDLOOP.
CALL METHOD grid->frontend_update.
FORM add_mandt_line USING p_gs_tab LIKE LINE OF gt_tab
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value,
ls_tab LIKE LINE OF gt_tab.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@3P@'.
ls_item_layout-fieldname = grid->c_hierarchy_column_name.
ls_item_layout-style =
cl_gui_column_tree=>style_intensifd_critical.
APPEND ls_item_layout TO lt_item_layout.
* add node
l_node_text = p_gs_tab-mandt.
CALL METHOD grid->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_tab
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.
ENDFORM.
FORM add_land1_line USING p_gs_tab LIKE LINE OF gt_tab
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value,
ls_tab LIKE LINE OF gt_tab.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@3Y@'.
ls_item_layout-style =
cl_gui_column_tree=>style_intensified.
ls_item_layout-fieldname = grid->c_hierarchy_column_name.
APPEND ls_item_layout TO lt_item_layout.
* add node
l_node_text = p_gs_tab-land1.
CALL METHOD grid->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_tab
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.
ENDFORM.
FORM add_complete_line USING p_gs_tab LIKE LINE OF gt_tab
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-fieldname = grid->c_hierarchy_column_name.
ls_item_layout-class = cl_gui_column_tree=>item_class_checkbox.
ls_item_layout-editable = 'X'.
APPEND ls_item_layout TO lt_item_layout.
l_node_text = p_gs_tab-kunnr.
CALL METHOD grid->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = p_gs_tab
i_node_text = l_node_text
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.
ENDFORM.
Where is the mistake? If I only display mandt and landt1 it works but when I want to add complete line I get a dump.
Edited by: ABAP OO Beginner on May 7, 2009 2:16 PM
‎2009 May 07 1:18 PM
‎2009 May 07 1:19 PM
CREATE OBJECT container
EXPORTING
container_name = 'CONTAINER'.
* create tree control
CREATE OBJECT grid
EXPORTING
parent = container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = 'X'
no_html_header = 'X'
no_toolbar = ''
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.
CALL METHOD grid->set_table_for_first_display
EXPORTING
i_structure_name = 'KNA1'
CHANGING
it_outtab = gt_tab
it_fieldcatalog = gt_fct.
SELECT * FROM kna1 INTO gs_tab UP TO 50 ROWS.
APPEND gs_tab TO gt_tab.
ENDSELECT.
SORT gt_tab BY mandt land1 kunnr.
DATA: l_land1_key TYPE lvc_nkey,
l_mandt_key TYPE lvc_nkey,
l_last_key TYPE lvc_nkey.
LOOP AT gt_tab INTO gs_tab.
ON CHANGE OF gs_tab-mandt.
PERFORM add_mandt_line USING gs_tab
''
CHANGING l_mandt_key.
ENDON.
ON CHANGE OF gs_tab-land1.
PERFORM add_land1_line USING gs_tab
l_mandt_key
CHANGING l_land1_key.
ENDON.
PERFORM add_complete_line USING gs_tab
l_land1_key
CHANGING l_last_key.
ENDLOOP.
CALL METHOD grid->frontend_update.
‎2009 May 07 1:20 PM
FORM add_mandt_line USING p_gs_tab LIKE LINE OF gt_tab
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value,
ls_tab LIKE LINE OF gt_tab.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@3P@'.
ls_item_layout-fieldname = grid->c_hierarchy_column_name.
ls_item_layout-style =
cl_gui_column_tree=>style_intensifd_critical.
APPEND ls_item_layout TO lt_item_layout.
* add node
l_node_text = p_gs_tab-mandt.
CALL METHOD grid->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_tab
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.
ENDFORM.
FORM add_land1_line USING p_gs_tab LIKE LINE OF gt_tab
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value,
ls_tab LIKE LINE OF gt_tab.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@3Y@'.
ls_item_layout-style =
cl_gui_column_tree=>style_intensified.
ls_item_layout-fieldname = grid->c_hierarchy_column_name.
APPEND ls_item_layout TO lt_item_layout.
* add node
l_node_text = p_gs_tab-land1.
CALL METHOD grid->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_tab
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.
ENDFORM.
FORM add_complete_line USING p_gs_tab LIKE LINE OF gt_tab
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-fieldname = grid->c_hierarchy_column_name.
ls_item_layout-class = cl_gui_column_tree=>item_class_checkbox.
ls_item_layout-editable = 'X'.
APPEND ls_item_layout TO lt_item_layout.
l_node_text = p_gs_tab-kunnr.
CALL METHOD grid->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = p_gs_tab
i_node_text = l_node_text
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.
ENDFORM.
‎2009 May 08 10:41 AM
Hello
My suspicion is that the editable checkbox may cause problems.
In order to find this out I would advise the following approach:
(1) Replace the editable checkbox with a simple icon
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-fieldname = grid->c_hierarchy_column_name.
" ls_item_layout-class = cl_gui_column_tree=>item_class_checkbox.
" ls_item_layout-editable = 'X'.
ls_item_layout-t_image = '@01@'. " New
APPEND ls_item_layout TO lt_item_layout.
(2) If you can see these child nodes then try to display a non-editable checkbox:
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-fieldname = grid->c_hierarchy_column_name.
ls_item_layout-class = cl_gui_column_tree=>item_class_checkbox.
ls_item_layout-editable = ' '. " i.e. not editable
APPEND ls_item_layout TO lt_item_layout.
(3) Try to find SAP sample reports which contain editable checkboxes in tree controls.
Regards
Uwe
‎2009 May 08 10:51 AM
Hello Uwe,
I have now deleted the line with the editable checkbox. the problem is following.
in the alv tree I can see the first folder with mandt. below this folder I have the land1 entries from my internal table. but when I want now to display the entries of kunnr in the perform complete line I get nothing on the screen, the program runs and run and run without doing anythin. Can someone copy my example program, mybe it is clearer when you try it. I can't add the line from my internal table below the data land1 in the tree.
‎2009 May 11 10:09 AM
Hello,
now I have this one:
IF container IS INITIAL.
CREATE OBJECT container
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT grid
EXPORTING
parent = container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = ''
no_html_header = ''
no_toolbar = ''
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'.
ENDIF.
l_hierarchy_header-width = 40.
l_hierarchy_header-heading = 'Kunden nach Ländern'.
CALL METHOD cl_ish_utl_base_conv=>conv_date_to_extern
EXPORTING
i_date = sy-datum
RECEIVING
r_date = gf_datum.
CALL METHOD grid->set_table_for_first_display
EXPORTING
is_hierarchy_header = l_hierarchy_header
it_list_commentary = gt_list_commentary
i_background_id = 'ALV_BACKGROUND'
i_structure_name = 'KNA1'
i_logo = 'MINDSOLUTIONS'
CHANGING
it_outtab = gt_tab
it_fieldcatalog = gt_fct.
CALL METHOD grid->column_optimize
EXPORTING
i_start_column = 'KUNNR'
i_end_column = 'KATR9'
i_include_heading = 'X'.
SELECT * FROM kna1 INTO gs_tab UP TO 50 ROWS.
APPEND gs_tab TO gt_tab.
ENDSELECT.
SORT gt_tab BY mandt land1 kunnr.
DATA: l_top_key TYPE lvc_nkey,
l_land1_key TYPE lvc_nkey,
l_kunnr_key TYPE lvc_nkey,
l_last_key TYPE lvc_nkey.
CALL METHOD grid->add_node
EXPORTING
i_relat_node_key = ''
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = text-002
IMPORTING
e_new_node_key = l_top_key.
LOOP AT gt_tab INTO gs_tab.
ON CHANGE OF gs_tab-land1.
IF gs_tab-land1 IS NOT INITIAL.
PERFORM add_land1_line USING gs_tab
l_top_key
CHANGING l_land1_key.
ENDIF.
ENDON.
ON CHANGE OF gs_tab-kunnr.
IF gs_tab-kunnr IS NOT INITIAL.
PERFORM add_kunnr_line USING gs_tab
l_land1_key
CHANGING l_last_key.
ENDIF.
ENDON.
ENDLOOP.
CALL METHOD grid->frontend_update.
CALL METHOD grid->expand_node
EXPORTING
i_node_key = l_top_key.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
‎2009 May 11 10:13 AM
why does the format not work?
Edited by: ABAP OO Beginner on May 11, 2009 11:16 AM
‎2009 May 11 10:17 AM
IF container IS INITIAL.
CREATE OBJECT container
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT grid
EXPORTING
parent = container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = ''
no_html_header = ''
no_toolbar = ''
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'.
ENDIF.
CALL METHOD grid->set_table_for_first_display
EXPORTING
is_hierarchy_header = l_hierarchy_header
it_list_commentary = gt_list_commentary
i_background_id = 'ALV_BACKGROUND'
i_structure_name = 'KNA1'
i_logo = 'MINDSOLUTIONS'
CHANGING
it_outtab = gt_tab
it_fieldcatalog = gt_fct.
CALL METHOD grid->column_optimize
EXPORTING
i_start_column = 'KUNNR'
i_end_column = 'KATR9'
i_include_heading = 'X'.
SELECT * FROM kna1 INTO gs_tab UP TO 50 ROWS.
APPEND gs_tab TO gt_tab.
ENDSELECT.
SORT gt_tab BY mandt land1 kunnr.
DATA: l_top_key TYPE lvc_nkey,
l_land1_key TYPE lvc_nkey,
l_kunnr_key TYPE lvc_nkey,
l_last_key TYPE lvc_nkey.
CALL METHOD grid->add_node
EXPORTING
i_relat_node_key = ''
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = text-002
IMPORTING
e_new_node_key = l_top_key.
LOOP AT gt_tab INTO gs_tab.
ON CHANGE OF gs_tab-land1.
IF gs_tab-land1 IS NOT INITIAL.
PERFORM add_land1_line USING gs_tab
l_top_key
CHANGING l_land1_key.
ENDIF.
ENDON.
ON CHANGE OF gs_tab-kunnr.
IF gs_tab-kunnr IS NOT INITIAL.
PERFORM add_kunnr_line USING gs_tab
l_land1_key
CHANGING l_last_key.
ENDIF.
ENDON.
ENDLOOP.
CALL METHOD grid->frontend_update.
CALL METHOD grid->expand_node
EXPORTING
i_node_key = l_top_key.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
‎2009 May 11 10:21 AM
‎2009 May 11 10:23 AM
IF container IS INITIAL.
CREATE OBJECT container
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT grid
EXPORTING
parent = container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = ''
no_html_header = ''
no_toolbar = ''
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'.
ENDIF.
CALL METHOD grid->set_table_for_first_display
EXPORTING
is_hierarchy_header = l_hierarchy_header
it_list_commentary = gt_list_commentary
i_background_id = 'ALV_BACKGROUND'
i_structure_name = 'KNA1'
i_logo = 'MINDSOLUTIONS'
CHANGING
it_outtab = gt_tab
it_fieldcatalog = gt_fct.
CALL METHOD grid->column_optimize
EXPORTING
i_start_column = 'KUNNR'
i_end_column = 'KATR9'
i_include_heading = 'X'.
SELECT * FROM kna1 INTO gs_tab UP TO 50 ROWS.
APPEND gs_tab TO gt_tab.
ENDSELECT.
SORT gt_tab BY mandt land1 kunnr.
DATA: l_top_key TYPE lvc_nkey,
l_land1_key TYPE lvc_nkey,
l_kunnr_key TYPE lvc_nkey,
l_last_key TYPE lvc_nkey.
CALL METHOD grid->add_node
EXPORTING
i_relat_node_key = ''
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = text-002
IMPORTING
e_new_node_key = l_top_key.
LOOP AT gt_tab INTO gs_tab.
ON CHANGE OF gs_tab-land1.
IF gs_tab-land1 IS NOT INITIAL.
PERFORM add_land1_line USING gs_tab
l_top_key
CHANGING l_land1_key.
ENDIF.
ENDON.
ON CHANGE OF gs_tab-kunnr.
IF gs_tab-kunnr IS NOT INITIAL.
PERFORM add_kunnr_line USING gs_tab
l_land1_key
CHANGING l_last_key.
ENDIF.
ENDON.
ENDLOOP.
CALL METHOD grid->frontend_update.
CALL METHOD grid->expand_node
EXPORTING
i_node_key = l_top_key.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
Edited by: ABAP OO Beginner on May 11, 2009 11:56 AM
‎2009 May 07 1:40 PM
can you be a bit more clear on ur problem?...
explain in neat points..
‎2009 May 07 2:08 PM
when I call the form PERFORM add_complete_line I get a dump, so something must be wrong in this form I think or?
If I delete the form I get mandt and land1 as tree.
‎2009 May 08 9:37 AM
did someone has an idea?
how can I add the lines of my internal table to an alv tree?
‎2009 May 11 10:57 AM