Application Development 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: 

Hierarchically-sequential alv lists with more than two levels

Former Member
0 Kudos

Hi All,

Can we have Hierarchically-sequential alv lists consisting of more than two levels.

My requirement is for three levels.

Please suggest.

If yes, then please describe the process.

Thanks in Advance,

Rekha

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Hierarchial ALV can be used only for two levels

7 REPLIES 7

Former Member
0 Kudos

Hi,

Hierarchial ALV can be used only for two levels

Former Member
0 Kudos

Thanks, but is there any other method by which purpose can be solved?

using OOPS? do we have any class for sequential alv for more than two levels?

Former Member
0 Kudos

Hi ,

Please check the following to link,

Thanks,

Sridhar.

0 Kudos

This message was moderated.

Former Member
0 Kudos

Hi

try this link ,

former_member206153
Participant
0 Kudos

Hi Rekha,

You can have ALV Hierarchically in levels.

Please refer the below code in which I have ALV hierarchy upto 4 levels :

***Building ALV Tree maintaining the Hierarchy of Plant,Functional Location,Equipment Number,& Object Number

***This part is for the Text to be displayed in the beginning of Hierarchy i.e Plant etc

WA_NODE-TYPE = 'T'.

WA_NODE-NAME = 'Plant'.

WA_NODE-TLEVEL = '01'.

WA_NODE-NLENGTH = '15'.

WA_NODE-COLOR = '5'.

WA_NODE-TPOS = '45'.

WA_NODE-TEXT = 'Actual Costs'.

WA_NODE-TLENGTH = '15'.

WA_NODE-TCOLOR = '3'.

WA_NODE-TPOS1 = '60'.

WA_NODE-TEXT1 = 'Planned Costs'.

WA_NODE-TLENGTH1 = '20'.

WA_NODE-TCOLOR1 = '3'.

APPEND WA_NODE TO WT_NODE.

CLEAR WA_NODE.

***First Level is Plant in this example - Hence looping on plant internal Table.

LOOP AT WT_P. " Plant Internal table

WA_NODE-TYPE = 'P'.

WA_NODE-TLEVEL = '02'.

WA_NODE-TEXT = WT_P-WERKS.

WA_NODE-TLENGTH = '15'.

WA_NODE-TCOLOR = '1'.

CLEAR WV_VALUE.

WV_VALUE = WT_P-WTGBTR.

CONDENSE WV_VALUE.

WA_NODE-TEXT1 = WV_VALUE.

WA_NODE-TLENGTH1 = '15'.

WA_NODE-TCOLOR1 = '1'.

WA_NODE-TPOS1 = '45'.

CLEAR WV_VALUE.

WV_VALUE = WT_P-WTG001.

CONDENSE WV_VALUE.

WA_NODE-TEXT2 = WV_VALUE.

WA_NODE-TLENGTH2 = '15'.

WA_NODE-TCOLOR2 = '1'.

WA_NODE-TPOS2 = '60'.

APPEND WA_NODE TO WT_NODE.

CLEAR WA_NODE.

**Second level is Functional Location - Hence looping on it inside Plant loop.

LOOP AT WT_FL WHERE WERKS = WT_P-WERKS.

WA_NODE-TYPE = 'P'.

WA_NODE-TLEVEL = '03'.

WA_NODE-TEXT = WT_FL-TPLNR.

WA_NODE-TLENGTH = '30'.

WA_NODE-TCOLOR = '1'.

CLEAR WV_VALUE.

WV_VALUE = WT_FL-AC.

CONDENSE WV_VALUE.

WA_NODE-TEXT1 = WV_VALUE.

WA_NODE-TLENGTH1 = '15'.

WA_NODE-TCOLOR1 = '1'.

WA_NODE-TPOS1 = '45'.

CLEAR WV_VALUE.

WV_VALUE = WT_FL-PC.

CONDENSE WV_VALUE.

WA_NODE-TEXT2 = WV_VALUE.

WA_NODE-TLENGTH2 = '15'.

WA_NODE-TCOLOR2 = '1'.

WA_NODE-TPOS2 = '60'.

APPEND WA_NODE TO WT_NODE.

CLEAR WA_NODE.

***Third Level is Equipment Number , hence looping on it.

LOOP AT WT_EQ WHERE WERKS = WT_FL-WERKS AND

TPLNR = WT_FL-TPLNR.

WA_NODE-TYPE = 'P'.

WA_NODE-TLEVEL = '04'.

WA_NODE-TEXT = WT_EQ-EQUNR.

WA_NODE-TLENGTH = '18'.

WA_NODE-TCOLOR = '1'.

CLEAR WV_VALUE.

WV_VALUE = WT_EQ-AC.

CONDENSE WV_VALUE.

WA_NODE-TEXT1 = WV_VALUE.

WA_NODE-TLENGTH1 = '15'.

WA_NODE-TCOLOR1 = '1'.

WA_NODE-TPOS1 = '45'.

CLEAR WV_VALUE.

WV_VALUE = WT_EQ-PC.

CONDENSE WV_VALUE.

WA_NODE-TEXT2 = WV_VALUE.

WA_NODE-TLENGTH2 = '15'.

WA_NODE-TCOLOR2 = '1'.

WA_NODE-TPOS2 = '60'.

APPEND WA_NODE TO WT_NODE.

CLEAR WA_NODE.

***Fourth Level is Order , hence looping on it.

LOOP AT WT_OB WHERE WERKS = WT_EQ-WERKS AND

TPLNR = WT_EQ-TPLNR AND

EQUNR = WT_EQ-EQUNR.

WA_NODE-TYPE = 'P'.

WA_NODE-TLEVEL = '05'.

WA_NODE-TEXT = WT_OB-AUFNR.

WA_NODE-TLENGTH = '12'.

WA_NODE-TCOLOR = '1'.

CLEAR WV_VALUE.

WV_VALUE = WT_OB-AC.

CONDENSE WV_VALUE.

WA_NODE-TEXT1 = WV_VALUE.

WA_NODE-TLENGTH1 = '15'.

WA_NODE-TCOLOR1 = '1'.

WA_NODE-TPOS1 = '45'.

CLEAR WV_VALUE.

WV_VALUE = WT_OB-PC.

CONDENSE WV_VALUE.

WA_NODE-TEXT2 = WV_VALUE.

WA_NODE-TLENGTH2 = '15'.

WA_NODE-TCOLOR2 = '1'.

WA_NODE-TPOS2 = '60'.

APPEND WA_NODE TO WT_NODE.

CLEAR WA_NODE.

ENDLOOP.

ENDLOOP.

ENDLOOP.

ENDLOOP.

You can build your ALV on the same grounds.

Thanks & Regards,

Bhavika

Former Member
0 Kudos

check this

REPORT ZHIERSEQ_ALV.

TYPE-POOLS: slis. " ALV Global types

----


CONSTANTS :

c_x VALUE 'X',

c_gt_vbap TYPE slis_tabname VALUE 'GT_VBAP',

c_gt_vbak TYPE slis_tabname VALUE 'GT_VBAK'.

----


SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(02) TYPE n DEFAULT '10' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_2 FOR FIELD p_expand. "#EC NEEDED

PARAMETERS p_expand AS CHECKBOX DEFAULT c_x.

SELECTION-SCREEN END OF LINE.

----


TYPES :

  • 1st Table

BEGIN OF ty_vbak,

vbeln TYPE vbak-vbeln, " Sales document

kunnr TYPE vbak-kunnr, " Sold-to party

netwr TYPE vbak-netwr, " Net Value of the Sales Order

erdat TYPE vbak-erdat, " Creation date

waerk TYPE vbak-waerk, " SD document currency

expand TYPE xfeld,

END OF ty_vbak,

  • 2nd Table

BEGIN OF ty_vbap,

vbeln TYPE vbap-vbeln, " Sales document

posnr TYPE vbap-posnr, " Sales document

matnr TYPE vbap-matnr, " Material number

arktx TYPE vbap-arktx, " Material description

netwr TYPE vbap-netwr, " Net Value of the Sales Order

waerk TYPE vbap-waerk, " SD document currency

END OF ty_vbap.

----


DATA :

  • 1st Table

gt_vbak TYPE TABLE OF ty_vbak,

  • 2nd Table

gt_vbap TYPE TABLE OF ty_vbap.

----


INITIALIZATION.

v_1 = 'Maximum of records to read'.

v_2 = 'With ''EXPAND'' field'.

----


START-OF-SELECTION.

  • Read Sales Document: Header Data

SELECT vbeln kunnr netwr waerk erdat

FROM vbak

UP TO p_max ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_vbak.

IF gt_vbak[] IS NOT INITIAL.

  • Read Sales Document: Item Data

SELECT vbeln posnr matnr arktx netwr waerk

FROM vbap

INTO CORRESPONDING FIELDS OF TABLE gt_vbap

FOR ALL ENTRIES IN gt_vbak

WHERE vbeln = gt_vbak-vbeln.

ENDIF.

----


END-OF-SELECTION.

PERFORM f_display.

----


  • Form F_DISPLAY

----


FORM f_display.

  • Macro definition

DEFINE m_fieldcat.

ls_fieldcat-tabname = &1.

ls_fieldcat-fieldname = &2.

ls_fieldcat-ref_tabname = &3.

ls_fieldcat-cfieldname = &4. " Field with currency unit

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

DEFINE m_sort.

ls_sort-tabname = &1.

ls_sort-fieldname = &2.

ls_sort-up = c_x.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA:

ls_layout TYPE slis_layout_alv,

ls_keyinfo TYPE slis_keyinfo_alv,

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv," Sort table

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv." Field catalog

ls_layout-group_change_edit = c_x.

ls_layout-colwidth_optimize = c_x.

ls_layout-zebra = c_x.

ls_layout-detail_popup = c_x.

ls_layout-get_selinfos = c_x.

IF p_expand = c_x.

ls_layout-expand_fieldname = 'EXPAND'.

ENDIF.

  • Build field catalog and sort table

m_fieldcat c_gt_vbak 'VBELN' 'VBAK' ''.

m_fieldcat c_gt_vbak 'KUNNR' 'VBAK' ''.

m_fieldcat c_gt_vbak 'NETWR' 'VBAK' 'WAERK'.

m_fieldcat c_gt_vbak 'WAERK' 'VBAK' ''.

m_fieldcat c_gt_vbak 'ERDAT' 'VBAK' ''.

m_fieldcat c_gt_vbap 'POSNR' 'VBAP' ''.

m_fieldcat c_gt_vbap 'MATNR' 'VBAP' ''.

m_fieldcat c_gt_vbap 'ARKTX' 'VBAP' ''.

m_fieldcat c_gt_vbap 'NETWR' 'VBAP' 'WAERK'.

m_fieldcat c_gt_vbap 'WAERK' 'VBAP' ''.

m_sort c_gt_vbak 'KUNNR'.

m_sort c_gt_vbap 'NETWR'.

ls_keyinfo-header01 = 'VBELN'.

ls_keyinfo-item01 = 'VBELN'.

ls_keyinfo-item02 = 'POSNR'.

  • Dipslay Hierarchical list

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'

is_layout = ls_layout

it_fieldcat = lt_fieldcat

it_sort = lt_sort

i_tabname_header = c_gt_vbak

i_tabname_item = c_gt_vbap

is_keyinfo = ls_keyinfo

i_save = 'A'

TABLES

t_outtab_header = gt_vbak

t_outtab_item = gt_vbap

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. " F_LIST_DISPLAY

----


  • Form USER_COMMAND *

----


FORM user_command USING i_ucomm TYPE sy-ucomm

is_selfield TYPE slis_selfield. "#EC CALLED

DATA ls_vbak TYPE ty_vbak.

CASE i_ucomm.

WHEN '&IC1'. " Pick

CASE is_selfield-tabname.

WHEN c_gt_vbap.

WHEN c_gt_vbak.

READ TABLE gt_vbak INDEX is_selfield-tabindex INTO ls_vbak.

IF sy-subrc EQ 0.

  • Sales order number

SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.

  • Display Sales Order

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDCASE.

ENDFORM. " USER_COMMAND