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: 

hierarchial alv grid

Former Member
0 Kudos

Hi friends,

here my requirement is to display details in one alv grid, and for that single record (for eg. based on the employee number), i've to to show some more multiple reords once i click on <b>[+]</b> like this. can any one send me sample program, or sap provided programs (in though i searched in Se83 or abapdocu).

thanks in advance,

priya

1 ACCEPTED SOLUTION

Former Member
0 Kudos

sample code....

also see the transaction DWDM where u got example....

TYPE-POOLS: slis.

*--tables declaration

TABLES: SFLIGHT,SPFLI.

*--types declaration

DATA: BEGIN OF i_SFLIGHT OCCURS 0,

CARRID LIKE SFLIGHT-CARRID,

CONNID LIKE SFLIGHT-CONNID,

FLDATE LIKE SFLIGHT-FLDATE,

END OF i_SFLIGHT.

DATA: BEGIN OF i_SPFLI OCCURS 0,

CARRID LIKE SPFLI-CARRID,

CONNID LIKE SPFLI-CONNID,

  • AIRPFROM LIKE SPFLI-AIRPFROM,

  • AIRPTO LIKE SPFLI-AIRPTO,

DISTANCE LIKE SPFLI-DISTANCE,

END OF i_SPFLI.

*--variables

DATA: i_repid LIKE sy-repid.

i_repid = sy-repid.

DATA: i_field TYPE slis_t_fieldcat_alv.

DATA: i_field2 TYPE slis_t_fieldcat_alv.

DATA: G_TABNAME_HEADER TYPE SLIS_TABNAME.

DATA: G_TABNAME_ITEM TYPE SLIS_TABNAME.

DATA: G_KEYINFO TYPE SLIS_KEYINFO_ALV.

*--select options

SELECT-OPTIONS : S_CARRID FOR SFLIGHT-CARRID .

*--initialosation

INITIALIZATION.

*--selection screen on

AT SELECTION-SCREEN .

*--start of selection

START-OF-SELECTION.

SELECT CARRID

CONNID

FLDATE

FROM SFLIGHT INTO TABLE i_SFLIGHT

WHERE CARRID IN S_CARRID.

IF i_SFLIGHT[] IS NOT INITIAL.

SELECT CARRID

CONNID

DISTANCE

INTO TABLE i_SPFLI FROM SPFLI

FOR ALL ENTRIES IN I_SFLIGHT

WHERE CARRID = i_SFLIGHT-CARRID.

IF sy-subrc NE 0.

MESSAGE e001(z538msg).

ENDIF.

ENDIF.

PERFORM fill_fieldcatalog1.

PERFORM fill_fieldcatalog2.

PERFORM HIERARCHY_ALV.

  • PERFORM alv_events.

G_KEYINFO-header01 = 'CARRID'.

G_KEYINFO-item01 = 'CONNID'.

G_TABNAME_HEADER = 'I_SFLIGHT'.

G_TABNAME_ITEM = 'I_SPFLI'.

&----


*& Form fill_fieldcatalog

&----


FORM fill_fieldcatalog1 .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = i_repid

i_internal_tabname = 'I_SFLIGHT'

  • i_structure_name = EKPO

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = i_repid

  • I_BYPASSING_BUFFER = 'X'

  • I_BUFFER_ACTIVE = ''

CHANGING

ct_fieldcat = i_field

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_ERROR = 2

  • OTHERS = 3

.

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

&----


*& Form fill_fieldcatalog2

&----


form fill_fieldcatalog2 .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = i_repid

i_internal_tabname = 'I_SPFLI'

  • i_structure_name = EKPO

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = i_repid

  • I_BYPASSING_BUFFER = 'X'

  • I_BUFFER_ACTIVE = ''

CHANGING

ct_fieldcat = i_field

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_ERROR = 2

  • OTHERS = 3

.

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

&----


*& Form HIERARCHY_ALV

&----


form HIERARCHY_ALV .

*G_KEYINFO-header01 = 'CARRID'.

G_KEYINFO-header01 = 'CONNID'.

G_KEYINFO-item01 = 'CONNID'.

G_TABNAME_HEADER = 'I_SFLIGHT'.

G_TABNAME_ITEM = 'I_SPFLI'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

I_CALLBACK_PROGRAM = I_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IS_LAYOUT =

IT_FIELDCAT = I_FIELD

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_DEFAULT = 'X'

I_SAVE = 'A'

  • IS_VARIANT =

  • IT_EVENTS = I_EVENTS

  • IT_EVENT_EXIT =

i_tabname_header = G_TABNAME_HEADER

i_tabname_item = G_TABNAME_ITEM

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

is_keyinfo = G_KEYINFO

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

tables

t_outtab_header = I_SFLIGHT

t_outtab_item = I_SPFLI

  • 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. " HIERARCHY_ALV

4 REPLIES 4

Former Member
0 Kudos

sample code....

also see the transaction DWDM where u got example....

TYPE-POOLS: slis.

*--tables declaration

TABLES: SFLIGHT,SPFLI.

*--types declaration

DATA: BEGIN OF i_SFLIGHT OCCURS 0,

CARRID LIKE SFLIGHT-CARRID,

CONNID LIKE SFLIGHT-CONNID,

FLDATE LIKE SFLIGHT-FLDATE,

END OF i_SFLIGHT.

DATA: BEGIN OF i_SPFLI OCCURS 0,

CARRID LIKE SPFLI-CARRID,

CONNID LIKE SPFLI-CONNID,

  • AIRPFROM LIKE SPFLI-AIRPFROM,

  • AIRPTO LIKE SPFLI-AIRPTO,

DISTANCE LIKE SPFLI-DISTANCE,

END OF i_SPFLI.

*--variables

DATA: i_repid LIKE sy-repid.

i_repid = sy-repid.

DATA: i_field TYPE slis_t_fieldcat_alv.

DATA: i_field2 TYPE slis_t_fieldcat_alv.

DATA: G_TABNAME_HEADER TYPE SLIS_TABNAME.

DATA: G_TABNAME_ITEM TYPE SLIS_TABNAME.

DATA: G_KEYINFO TYPE SLIS_KEYINFO_ALV.

*--select options

SELECT-OPTIONS : S_CARRID FOR SFLIGHT-CARRID .

*--initialosation

INITIALIZATION.

*--selection screen on

AT SELECTION-SCREEN .

*--start of selection

START-OF-SELECTION.

SELECT CARRID

CONNID

FLDATE

FROM SFLIGHT INTO TABLE i_SFLIGHT

WHERE CARRID IN S_CARRID.

IF i_SFLIGHT[] IS NOT INITIAL.

SELECT CARRID

CONNID

DISTANCE

INTO TABLE i_SPFLI FROM SPFLI

FOR ALL ENTRIES IN I_SFLIGHT

WHERE CARRID = i_SFLIGHT-CARRID.

IF sy-subrc NE 0.

MESSAGE e001(z538msg).

ENDIF.

ENDIF.

PERFORM fill_fieldcatalog1.

PERFORM fill_fieldcatalog2.

PERFORM HIERARCHY_ALV.

  • PERFORM alv_events.

G_KEYINFO-header01 = 'CARRID'.

G_KEYINFO-item01 = 'CONNID'.

G_TABNAME_HEADER = 'I_SFLIGHT'.

G_TABNAME_ITEM = 'I_SPFLI'.

&----


*& Form fill_fieldcatalog

&----


FORM fill_fieldcatalog1 .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = i_repid

i_internal_tabname = 'I_SFLIGHT'

  • i_structure_name = EKPO

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = i_repid

  • I_BYPASSING_BUFFER = 'X'

  • I_BUFFER_ACTIVE = ''

CHANGING

ct_fieldcat = i_field

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_ERROR = 2

  • OTHERS = 3

.

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

&----


*& Form fill_fieldcatalog2

&----


form fill_fieldcatalog2 .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = i_repid

i_internal_tabname = 'I_SPFLI'

  • i_structure_name = EKPO

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = i_repid

  • I_BYPASSING_BUFFER = 'X'

  • I_BUFFER_ACTIVE = ''

CHANGING

ct_fieldcat = i_field

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_ERROR = 2

  • OTHERS = 3

.

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

&----


*& Form HIERARCHY_ALV

&----


form HIERARCHY_ALV .

*G_KEYINFO-header01 = 'CARRID'.

G_KEYINFO-header01 = 'CONNID'.

G_KEYINFO-item01 = 'CONNID'.

G_TABNAME_HEADER = 'I_SFLIGHT'.

G_TABNAME_ITEM = 'I_SPFLI'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

I_CALLBACK_PROGRAM = I_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IS_LAYOUT =

IT_FIELDCAT = I_FIELD

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_DEFAULT = 'X'

I_SAVE = 'A'

  • IS_VARIANT =

  • IT_EVENTS = I_EVENTS

  • IT_EVENT_EXIT =

i_tabname_header = G_TABNAME_HEADER

i_tabname_item = G_TABNAME_ITEM

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

is_keyinfo = G_KEYINFO

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

tables

t_outtab_header = I_SFLIGHT

t_outtab_item = I_SPFLI

  • 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. " HIERARCHY_ALV

Former Member
0 Kudos

BCALV_TEST_HIERSEQ_LIST

BCALV_TEST_HIERSEQ_LIST_EVENTS

Former Member
0 Kudos

Hi !

Also just think about to use a TREE-CONTROL to do so ?!?

The ALV is not basically created to display hirarchicaly data structures.

Regards

Rainer

Some Ponits would be fine if that helped a bit.