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 display

Former Member
0 Likes
616

Hi,

I have to make a list with three hierarchical levels.

By the 2nd level I know how.

My dout is how to add the 3rd hierarchical level?

The code i use is:

FORM create_alvtree_hierarchy .

DATA: ld_ebeln_key TYPE lvc_nkey,

ld_ebelp_key TYPE lvc_nkey,

ld_zekkn_key type lvc_nkey.

LOOP AT it_ekko INTO wa_ekko.

PERFORM add_ekko_node USING wa_ekko

''

CHANGING ld_ebeln_key.

LOOP AT it_ekpo INTO wa_ekpo WHERE ebeln EQ wa_ekko-ebeln.

PERFORM add_ekpo_line USING wa_ekpo

ld_ebeln_key

CHANGING ld_ebelp_key.

  • LOOP AT it_ekbe INTO wa_ekbe WHERE ebeln EQ wa_ekpo-ebeln

  • AND ebelp EQ wa_ekpo-ebelp.

  • PERFORM add_ekbe_line USING wa_ekbe

  • ld_ebelp_key

  • CHANGING ld_zekkn_key.

  • ENDLOOP.

ENDLOOP.

ENDLOOP.

FORM add_ekko_node USING ps_ekko LIKE wa_ekko

value(p_relate_key)

CHANGING p_node_key.

DATA: ld_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-t_image = '@3P@'.

ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.

ls_item_layout-style = cl_gui_column_tree=>style_default.

ld_node_text = ps_ekko-ebeln.

APPEND ls_item_layout TO lt_item_layout.

  • Add node

CALL METHOD gd_tree->add_node

EXPORTING

i_relat_node_key = p_relate_key

i_relationship = cl_gui_column_tree=>relat_last_child

i_node_text = ld_node_text

is_outtab_line = ps_ekko

it_item_layout = lt_item_layout

IMPORTING

e_new_node_key = p_node_key.

ENDFORM. " ADD_EKKO_NODE

FORM add_ekpo_line USING ps_ekpo LIKE wa_ekpo

value(p_relate_key)

CHANGING p_node_key.

DATA: ld_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-t_image = '@3P@'.

ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.

ls_item_layout-style = cl_gui_column_tree=>style_default.

ld_node_text = ps_ekpo-ebelp.

APPEND ls_item_layout TO lt_item_layout.

  • Add node

CALL METHOD gd_tree->add_node

EXPORTING

i_relat_node_key = p_relate_key

i_relationship = cl_gui_column_tree=>relat_last_child

i_node_text = ld_node_text

is_outtab_line = ps_ekpo

it_item_layout = lt_item_layout

IMPORTING

e_new_node_key = p_node_key.

ENDFORM. " ADD_EKPO_LINE

Thanks in advance.

Rui

Hi,

I have to make a list with three hierarchical levels.

By the 2nd level I know how.

My dout is how to add the 3rd hierarchical level?

The code i use is:

FORM create_alvtree_hierarchy .

DATA: ld_ebeln_key TYPE lvc_nkey,

ld_ebelp_key TYPE lvc_nkey,

ld_zekkn_key type lvc_nkey.

LOOP AT it_ekko INTO wa_ekko.

PERFORM add_ekko_node USING wa_ekko

''

CHANGING ld_ebeln_key.

LOOP AT it_ekpo INTO wa_ekpo WHERE ebeln EQ wa_ekko-ebeln.

PERFORM add_ekpo_line USING wa_ekpo

ld_ebeln_key

CHANGING ld_ebelp_key.

  • LOOP AT it_ekbe INTO wa_ekbe WHERE ebeln EQ wa_ekpo-ebeln

  • AND ebelp EQ wa_ekpo-ebelp.

  • PERFORM add_ekbe_line USING wa_ekbe

  • ld_ebelp_key

  • CHANGING ld_zekkn_key.

  • ENDLOOP.

ENDLOOP.

ENDLOOP.

FORM add_ekko_node USING ps_ekko LIKE wa_ekko

value(p_relate_key)

CHANGING p_node_key.

DATA: ld_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-t_image = '@3P@'.

ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.

ls_item_layout-style = cl_gui_column_tree=>style_default.

ld_node_text = ps_ekko-ebeln.

APPEND ls_item_layout TO lt_item_layout.

  • Add node

CALL METHOD gd_tree->add_node

EXPORTING

i_relat_node_key = p_relate_key

i_relationship = cl_gui_column_tree=>relat_last_child

i_node_text = ld_node_text

is_outtab_line = ps_ekko

it_item_layout = lt_item_layout

IMPORTING

e_new_node_key = p_node_key.

ENDFORM. " ADD_EKKO_NODE

FORM add_ekpo_line USING ps_ekpo LIKE wa_ekpo

value(p_relate_key)

CHANGING p_node_key.

DATA: ld_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-t_image = '@3P@'.

ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.

ls_item_layout-style = cl_gui_column_tree=>style_default.

ld_node_text = ps_ekpo-ebelp.

APPEND ls_item_layout TO lt_item_layout.

  • Add node

CALL METHOD gd_tree->add_node

EXPORTING

i_relat_node_key = p_relate_key

i_relationship = cl_gui_column_tree=>relat_last_child

i_node_text = ld_node_text

is_outtab_line = ps_ekpo

it_item_layout = lt_item_layout

IMPORTING

e_new_node_key = p_node_key.

ENDFORM. " ADD_EKPO_LINE

Thanks in advance.

Rui

3 REPLIES 3
Read only

Former Member
0 Likes
584

HI

check these report programs

BCALV_TREE_01
BCALV_TREE_02

you can even check this link for the alv tree

[https://www.sdn.sap.com/irj/scn/wiki?path=/display/abap/callFMtogeneratealvtreeanddealwithuseraction]

regards

sarves

Read only

Former Member
0 Likes
584

Hi,

Check this program 6 levels

  • type pool declarations for tree

TYPE-POOLS : fibs,stree.*Data declaration for additional node information

DATA : t_node TYPE snodetext.*Internal table and wa decl for nodes

DATA : it_node LIKE TABLE OF t_node INITIAL SIZE 0,

wa_node LIKE t_node.*Internal table and wa decl for Education table PA0022

DATA : it_0022 TYPE STANDARD TABLE OF pa0022 INITIAL SIZE 0,

wa_0022 TYPE pa0022.*Internal table and wa decl for text table t517x

DATA : it_517x TYPE STANDARD TABLE OF t517x INITIAL SIZE 0,

wa_517x TYPE t517x.*Internal table and wa decl for text table t517T

DATA : it_517t TYPE STANDARD TABLE OF t517t INITIAL SIZE 0,

wa_517t TYPE t517t.*Internal table and wa decl for text table t519T

DATA : it_519t TYPE STANDARD TABLE OF t519t INITIAL SIZE 0,

wa_519t TYPE t519t.*initialization event

INITIALIZATION.*Start of selection event

START-OF-SELECTION.*Select the data for tree

PERFORM fetch_data.*Build the hierarchy for tree

PERFORM build_hierarchy.*Build Tree for display

PERFORM build_tree.&----


*& Form fetch_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fetch_data .*select data from PA0022

SELECT * FROM pa0022 INTO CORRESPONDING FIELDS OF TABLE it_0022

UP TO 50 ROWS.*select data from T517x

SELECT * FROM t517x INTO CORRESPONDING FIELDS OF TABLE it_517x

WHERE langu = 'E'.*select data from T517T

SELECT * FROM t517t INTO CORRESPONDING FIELDS OF TABLE it_517t

WHERE sprsl = 'E'.*select data from T519t

SELECT * FROM t519t INTO CORRESPONDING FIELDS OF TABLE it_519t

WHERE sprsl = 'E'.ENDFORM. " fetch_data

&----


*& Form build_hierarchy

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_hierarchy .*Building the nodes and hierarchy for tree

CLEAR : it_node[], wa_node. wa_node-type = 'T'.

wa_node-name = 'Education'.

wa_node-tlevel = '01'.

wa_node-nlength = '15'.

wa_node-color = '4'.

wa_node-text = 'Infotype 0022'.

wa_node-tlength ='20'.

wa_node-tcolor = 3.

APPEND wa_node TO it_node.

CLEAR wa_node.*Filling the values of internal table into tree

LOOP AT it_0022 INTO wa_0022.

wa_node-type = 'P'.

wa_node-name = 'PERNR'.

wa_node-tlevel = '02'.

wa_node-nlength = '8'.

wa_node-color = '1'.

wa_node-text = wa_0022-pernr.

wa_node-tlength ='20'.

wa_node-tcolor = 4.

APPEND wa_node TO it_node.

CLEAR wa_node.*Filling the text of T517t

READ TABLE it_517t INTO wa_517t WITH KEY slart = wa_0022-slart. wa_node-type = 'P'.

wa_node-name = wa_0022-slart.

wa_node-tlevel = '03'.

wa_node-nlength = '8'.

wa_node-color = '1'.

wa_node-text = wa_517t-stext.

wa_node-tlength ='40'.

wa_node-tcolor = 4.

APPEND wa_node TO it_node.

CLEAR wa_node.*Filling the text of T519t

READ TABLE it_519t INTO wa_519t WITH KEY slabs = wa_0022-slabs. wa_node-type = 'P'.

wa_node-name = wa_0022-slabs.

wa_node-tlevel = '04'.

wa_node-nlength = '8'.

wa_node-color = '2'.

wa_node-text = wa_519t-stext.

wa_node-tlength ='40'.

wa_node-tcolor = 4.

APPEND wa_node TO it_node.

CLEAR wa_node.*Filling the text of T517x

READ TABLE it_517x INTO wa_517x WITH KEY faart = wa_0022-sltp1.

wa_node-type = 'P'.

wa_node-name = wa_0022-sltp1.

wa_node-tlevel = '05'.

wa_node-nlength = '8'.

wa_node-color = '1'.

wa_node-text = wa_517x-ftext.

wa_node-tlength ='40'.

wa_node-tcolor = 4.

APPEND wa_node TO it_node.

CLEAR wa_node. wa_node-type = 'P'.

wa_node-name = wa_0022-zzper.

wa_node-tlevel = '06'.

wa_node-nlength = '8'.

wa_node-color = '1'.

wa_node-text = '% Completed'.

wa_node-tlength ='15'.

wa_node-tcolor = 4.

APPEND wa_node TO it_node.

CLEAR wa_node. ENDLOOP.ENDFORM. " build_hierarchy

&----


*& Form build_tree

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_tree .*Fm for constructing the tree

CALL FUNCTION 'RS_TREE_CONSTRUCT'

TABLES

nodetab = it_node.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.*FM for displaying the tree

CALL FUNCTION 'RS_TREE_LIST_DISPLAY'

EXPORTING

callback_program = sy-repid

check_duplicate_name = '1'

color_of_node = '4'

color_of_mark = '3'

color_of_link = '1'

color_of_match = '5'

node_length = 30

text_length = 75

use_control = 'L'.ENDFORM. " build_treeOutput

Read only

Former Member
0 Likes
584

HI!

TRY THIS CODE


TYPE-POOLS : fibs,stree.
TYPE-POOLS:slis.

DATA : t_node TYPE snodetext.

DATA : it_node LIKE TABLE OF t_node,
       wa_node LIKE t_node.

DATA: t_fieldcat    TYPE slis_t_fieldcat_alv,
      fs_fieldcat   TYPE slis_fieldcat_alv.

DATA:w_repid LIKE sy-repid.

*Internal Table declarations
DATA: BEGIN OF fs_scarr,
        carrid LIKE scarr-carrid,
      END OF fs_scarr.

DATA:BEGIN OF fs_spfli,
      carrid LIKE spfli-carrid,
      connid LIKE spfli-connid,
     END OF fs_spfli.

DATA:BEGIN OF fs_sflight,
      carrid LIKE sflight-carrid,
      connid LIKE sflight-connid,
      fldate LIKE sflight-fldate,
     END OF fs_sflight.

DATA:BEGIN OF fs_sbook,
      carrid LIKE sbook-carrid,
      connid LIKE sbook-connid,
      fldate LIKE sbook-fldate,
      bookid LIKE sbook-bookid,
     END OF fs_sbook.

DATA:
     t_scarr LIKE
             TABLE
                OF fs_scarr,

     t_spfli LIKE
             TABLE
                OF fs_spfli,

     t_sflight LIKE
               TABLE
                  OF fs_sflight,
     t_sbook LIKE
             TABLE
                OF fs_sbook.

START-OF-SELECTION.

  PERFORM get_data.
  PERFORM build_tree.
  PERFORM display_tree.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data .

  SELECT carrid
    FROM scarr
    INTO TABLE t_scarr.

  SELECT carrid
         connid
   FROM  spfli
   INTO TABLE t_spfli
   FOR ALL ENTRIES IN t_scarr
   WHERE carrid EQ t_scarr-carrid.

 SELECT CARRID
        CONNID
        FLDATE
 FROM   SFLIGHT
 INTO CORRESPONDING FIELDS OF TABLE T_SFLIGHT
 FOR ALL ENTRIES IN T_SPFLI
 WHERE  CONNID EQ T_SPFLI-CONNID.


ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  BUILD_TREE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_tree .
  CLEAR: it_node,
        wa_node.

  SORT: t_scarr BY carrid,
        t_spfli BY carrid connid,
        t_sflight BY carrid connid fldate,
        t_sbook BY carrid connid fldate bookid.

  wa_node-type = 'T'.
  wa_node-name = 'Flight Details'.
  wa_node-tlevel = '01'.
  wa_node-nlength = '15'.
  wa_node-color = '4'.
  wa_node-text = 'Flight'.
  wa_node-tlength ='20'.
  wa_node-tcolor = 3.
  APPEND wa_node TO it_node.
  CLEAR wa_node.

  LOOP AT t_scarr INTO fs_scarr.

    wa_node-type = 'C'.
    wa_node-name = 'CARRID'.
    wa_node-tlevel = '02'.
    wa_node-nlength = '8'.
    wa_node-color = '1'.
    wa_node-text = fs_scarr-carrid.
    wa_node-tlength ='20'.
    wa_node-tcolor = 4.
    APPEND wa_node TO it_node.

    LOOP AT t_spfli INTO fs_spfli WHERE carrid EQ fs_scarr-carrid.

      wa_node-type = 'C'.
      wa_node-name = 'CONNID'.
      wa_node-tlevel = '03'.
      wa_node-nlength = '8'.
      wa_node-color = '1'.
      wa_node-text = fs_spfli-connid.
      wa_node-tlength ='20'.
      wa_node-tcolor = 4.
      APPEND wa_node TO it_node.

    ENDLOOP.


   LOOP AT t_sflight INTO fs_sflight WHERE  connid eq fs_spfli-connid.

      wa_node-type = 'C'.
      wa_node-name = 'FLDATE'.
      wa_node-tlevel = '04'.
      wa_node-nlength = '8'.
      wa_node-color = '1'.
      wa_node-text = fs_sflight-FLDATE.
      wa_node-tlength ='20'.
      wa_node-tcolor = 4.
      APPEND wa_node TO it_node.

    ENDLOOP.



  ENDLOOP.
ENDFORM.                    " BUILD_TREE
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_TREE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_tree .
  CALL FUNCTION 'RS_TREE_CONSTRUCT'
* EXPORTING
*   INSERT_ID                = '000000'
*   RELATIONSHIP             = ' '
*   LOG                      =
    TABLES
      nodetab                  = it_node
   EXCEPTIONS
     tree_failure             = 1
     id_not_found             = 2
     wrong_relationship       = 3
     OTHERS                   = 4
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  w_repid = sy-repid.

  CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
   EXPORTING
     callback_program                = w_repid
*     callback_user_command           = 'USER_COMMAND'
*   CALLBACK_TEXT_DISPLAY           =
*   CALLBACK_MOREINFO_DISPLAY       =
*   CALLBACK_COLOR_DISPLAY          =
*   CALLBACK_TOP_OF_PAGE            =
*     callback_gui_status             = 'SET_PF'
*   CALLBACK_CONTEXT_MENU           =
*   STATUS                          = 'IMPLICIT'
*   CHECK_DUPLICATE_NAME            = '1'
*   COLOR_OF_NODE                   = '4'
*   COLOR_OF_MARK                   = '3'
*   COLOR_OF_LINK                   = '1'
*   COLOR_OF_MATCH                  = '5'
*   LOWER_CASE_SENSITIVE            = ' '
*   MODIFICATION_LOG                = ' '
*   NODE_LENGTH                     = 30
*   TEXT_LENGTH                     = 75
*   TEXT_LENGTH1                    = 0
*   TEXT_LENGTH2                    = 0
*   RETURN_MARKED_SUBTREE           = ' '
*   SCREEN_START_COLUMN             = 0
*   SCREEN_START_LINE               = 0
*   SCREEN_END_COLUMN               = 0
*   SCREEN_END_LINE                 = 0
*   SUPPRESS_NODE_OUTPUT            = ' '
*   LAYOUT_MODE                     = ' '
*   USE_CONTROL                     = STREE_USE_LIST
* IMPORTING
*   F15                             =
            .

 CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
*    I_INTERFACE_CHECK              = ' '
*    I_BYPASSING_BUFFER             =
*    I_BUFFER_ACTIVE                = ' '
    I_CALLBACK_PROGRAM             = W_REPID
    I_CALLBACK_PF_STATUS_SET       = 'SET_PF'
    I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
*    I_STRUCTURE_NAME               =
*    IS_LAYOUT                      =
*    IT_FIELDCAT                    =
*    IT_EXCLUDING                   =
*    IT_SPECIAL_GROUPS              =
*    IT_SORT                        =
*    IT_FILTER                      =
*    IS_SEL_HIDE                    =
*    I_DEFAULT                      = 'X'
*    I_SAVE                         = ' '
*    IS_VARIANT                     =
*    IT_EVENTS                      =
*    IT_EVENT_EXIT                  =
*    IS_PRINT                       =
*    IS_REPREP_ID                   =
*    I_SCREEN_START_COLUMN          = 0
*    I_SCREEN_START_LINE            = 0
*    I_SCREEN_END_COLUMN            = 0
*    I_SCREEN_END_LINE              = 0
*    IR_SALV_LIST_ADAPTER           =
*    IT_EXCEPT_QINFO                =
*    I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
*  IMPORTING
*    E_EXIT_CAUSED_BY_CALLER        =
*    ES_EXIT_CAUSED_BY_USER         =
   TABLES
     t_outtab                       = T_SFLIGHT
  EXCEPTIONS
    PROGRAM_ERROR                  = 1
    OTHERS                         = 2
           .
 IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ENDIF.


ENDFORM.                    " DISPLAY_TREE