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: 

Query on Hierarchical ALV

Former Member
0 Kudos

Hi friends,

Please send sample code on Hierarchical ALV on purchase order header data and item data along with function modules .

bye

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Check the program BALVHD01_GROUP.

Albert

5 REPLIES 5

Former Member
0 Kudos

Check the program BALVHD01_GROUP.

Albert

Former Member
0 Kudos

Hi

Use the FM <b>REUSE_ALV_HIERSEQ_LIST_DISPLAY</b> for Hierarchical ALV.

Plz go through the standard program BALVHD01 for the usage.

Thanks

Vijay

PLZ reward points if helpful

0 Kudos

Hi

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_interface_check = 'I'

i_callback_program = gv_repid

  • i_callback_pf_status_set = 'STATUS_DATA'

i_callback_user_command = 'COMMAND_DATA'

  • is_layout = gs_layout

it_fieldcat = gt_fieldcat

i_default = ' '

i_save = 'A'

i_tabname_header = v_headers_itable

i_tabname_item = v_items_itable

i_structure_name_header = v_headers_table

i_structure_name_item = v_items_table

is_keyinfo = gs_keyinfo

i_bypassing_buffer = 'X'

TABLES

t_outtab_header = i_headers

  • t_outtab_item = i_result

t_outtab_item = i_report

EXCEPTIONS

program_error = 1

OTHERS = 2.

The field cat creation worked like this :

FORM fieldcat.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_internal_tabname = v_items_itable

i_structure_name = v_items_table

CHANGING

ct_fieldcat = gt_fieldcat.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_internal_tabname = v_headers_itable

i_structure_name = v_headers_table

CHANGING

ct_fieldcat = gt_fieldcat.

ENDFORM.

and of course you need to tell the thing what is key and item

gs_keyinfo-header01 = 'PA'.

gs_keyinfo-item01 = 'PA'.

gs_keyinfo-item02 = 'SAPDOC'.

PERFORM fieldcat.

Regards

Pavan

Former Member
0 Kudos

Hi Kishore ,

Check this sample code.

----


***INCLUDE ZDEMO_ALVTREEO01 .

----


&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'STATUS1'.

  • SET TITLEBAR 'xxx'.

  • If ALVtree already exists then it mush not be re-created as this

  • will cause a runtime error.

IF gd_tree IS INITIAL.

  • Create ALVtree (must be performed within screen PBO module)

PERFORM create_alvtree_container.

PERFORM create_object_in_container.

PERFORM create_empty_alvtree_control.

PERFORM create_alvtree_hierarchy.

ENDIF.

CALL METHOD cl_gui_cfw=>flush.

ENDMODULE. " STATUS_0100 OUTPUT

----


  • INCLUDE ZDEMO_ALVTREEF01 *

----


&----


*& Form CREATE_ALVTREE_CONTAINER

&----


  • Create container for ALVtree report

----


form create_alvtree_container.

  • Create container for alv-tree

gd_tree_container_name = 'SCREEN_CONTAINER'.

create object gd_custom_container

exporting

container_name = gd_tree_container_name

exceptions

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5.

if sy-subrc <> 0.

message x208(00) with 'ERROR'.

endif.

endform. " CREATE_ALVTREE_CONTAINER

&----


*& Form CREATE_OBJECT_IN_CONTAINER

&----


  • Create ALVtree object in container

----


form create_object_in_container.

  • Create tree control

create object gd_tree

exporting

parent = gd_custom_container

node_selection_mode = cl_gui_column_tree=>node_sel_mode_single

item_selection = 'X'

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.

endform. " CREATE_OBJECT_IN_CONTAINER

&----


*& Form BUILD_REPORT_TITLE

&----


  • Build table for ALVtree header

----


  • <-> p1 Header details

  • <-> p2 Logo value

----


FORM build_report_title CHANGING

pt_report_title TYPE slis_t_listheader

pa_logo TYPE sdydo_value.

DATA: ls_line TYPE slis_listheader,

ld_date(10) TYPE c.

  • List Heading Line(TYPE H)

CLEAR ls_line.

ls_line-typ = 'H'.

  • ls_line-key "Not Used For This Type(H)

ls_line-info = 'PO ALVTree Display'.

APPEND ls_line TO pt_report_title.

  • Status Line(TYPE S)

ld_date(2) = sy-datum+6(2).

ld_date+2(1) = '/'.

ld_date3(2) = sy-datum4(2).

ld_date+5(1) = '/'.

ld_date+6(4) = sy-datum(4).

ls_line-typ = 'S'.

ls_line-key = 'Date'.

ls_line-info = ld_date.

APPEND ls_line TO pt_report_title.

  • Action Line(TYPE A)

CLEAR ls_line.

ls_line-typ = 'A'.

CONCATENATE 'Report: ' sy-repid INTO ls_line-info SEPARATED BY space.

APPEND ls_line TO pt_report_title.

ENDFORM. " BUILD_REPORT_TITLE

&----


*& Form CREATE_EMPTY_ALVTREE_CONTROL

&----


  • Create empty tree control

----


FORM create_empty_alvtree_control.

  • Create emty tree-control

CLEAR: it_emptytab.

REFRESH: it_emptytab.

CALL METHOD gd_tree->set_table_for_first_display

EXPORTING

is_hierarchy_header = gd_hierarchy_header

it_list_commentary = gd_report_title

i_logo = gd_logo

  • i_background_id = 'ALV_BACKGROUND'

i_save = 'A'

is_variant = gd_variant

CHANGING

it_outtab = it_emptytab "Must be empty

it_fieldcatalog = gd_fieldcat.

ENDFORM. " CREATE_EMPTY_ALVTREE_CONTROL

&----


*& Form CREATE_ALVTREE_HIERARCHY

&----


  • text

----


  • Builds ALV tree display, (inserts nodes, subnodes etc)

----


form create_alvtree_hierarchy.

data: ls_sflight type sflight,

lt_sflight type sflight occurs 0.

data: ld_ebeln_key type lvc_nkey,

ld_ebelp_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.

endloop.

endloop.

  • calculate totals

call method gd_tree->update_calculations.

  • this method must be called to send the data to the frontend

call method gd_tree->frontend_update.

endform. " CREATE_ALVTREE_HIERARCHY

&----


*& Form ADD_EKKO_NODE

&----


  • text

----


  • -->P_WA_EKPO text

  • -->P_0553 text

  • <--P_EBELN_KEY text

----


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,

ls_sflight type sflight.

  • 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

&----


  • text

----


  • -->P_WA_EKPO text

  • -->P_LD_EBELN_KEY text

  • <--P_LD_EBELP_KEY text

----


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,

ls_sflight type sflight.

  • 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

refer http://www.sapdevelopment.co.uk/reporting/alv/alvtree.htm for more details.

Reward If Useful.

Regards,

Chitra

0 Kudos

Thank u