Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV Tree

Former Member
0 Likes
1,566

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

14 REPLIES 14
Read only

Former Member
0 Likes
1,485

why can't I edit my coding as ?

Read only

0 Likes
1,485

   
 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.

Read only

0 Likes
1,485


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.

Read only

0 Likes
1,485

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

Read only

0 Likes
1,485

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.

Read only

0 Likes
1,485

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.

Read only

0 Likes
1,485

why does the format not work?

Edited by: ABAP OO Beginner on May 11, 2009 11:16 AM

Read only

0 Likes
1,485
 

 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.
Read only

0 Likes
1,485


test

Edited by: ABAP OO Beginner on May 11, 2009 11:21 AM

Read only

0 Likes
1,485

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

Read only

former_member242255
Active Contributor
0 Likes
1,485

can you be a bit more clear on ur problem?...

explain in neat points..

Read only

0 Likes
1,485

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.

Read only

0 Likes
1,485

did someone has an idea?

how can I add the lines of my internal table to an alv tree?

Read only

Former Member
0 Likes
1,485

can't add code, I create a new thread.