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 Report without using ABAP Objects

Former Member
0 Likes
1,340

Hi all,

I want to know the name of a function module to create ALV Tree in SE38 as a report. I am required to create this ALV Tree Report without using ABAP OBJECTS. Can u pls help me as early as possible.

3 REPLIES 3
Read only

Former Member
0 Likes
635

Hi Ritu,

Simple ALV report

http://www.sapgenie.com/abap/controls/alvgrid.htm

http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox

ALV Interactive Reports

ALV Easy Reference Guide OOPS

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a41...

ALV

1. Please give me general info on ALV.

http://www.sapfans.com/forums/viewtopic.php?t=58286

http://www.sapfans.com/forums/viewtopic.php?t=76490

http://www.sapfans.com/forums/viewtopic.php?t=20591

http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.

2. How do I program double click in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=11601

http://www.sapfans.com/forums/viewtopic.php?t=23010

Check the program in the following link:

http://sap-img.com/abap/display-secondary-list-using-alv-grid.htm

3. How do I add subtotals (I have problem to add them)...

http://www.sapfans.com/forums/viewtopic.php?t=20386

http://www.sapfans.com/forums/viewtopic.php?t=85191

http://www.sapfans.com/forums/viewtopic.php?t=88401

http://www.sapfans.com/forums/viewtopic.php?t=17335

http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_basic.htm

4. How to add list heading like top-of-page in ABAP lists?

http://www.sapfans.com/forums/viewtopic.php?t=58775

http://www.sapfans.com/forums/viewtopic.php?t=60550

http://www.sapfans.com/forums/viewtopic.php?t=16629

5. How to print page number / total number of pages X/XX in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)

6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.

http://www.sapfans.com/forums/viewtopic.php?t=64320

http://www.sapfans.com/forums/viewtopic.php?t=44477

7. How can I set the cell color in ALV?

https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/coloring%2ba%2brow%2band%2bcolumn%2bin%2...

8. How do I print a logo/graphics in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=81149

http://www.sapfans.com/forums/viewtopic.php?t=35498

http://www.sapfans.com/forums/viewtopic.php?t=5013

9. How do I create and use input-enabled fields in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=84933

http://www.sapfans.com/forums/viewtopic.php?t=69878

10. How can I use ALV for reports that are going to be run in background?

http://www.sapfans.com/forums/viewtopic.php?t=83243

http://www.sapfans.com/forums/viewtopic.php?t=19224

11. How can I display an icon in ALV? (Common requirement is traffic light icon).

http://www.sapfans.com/forums/viewtopic.php?t=79424

http://www.sapfans.com/forums/viewtopic.php?t=24512

12. How can I display a checkbox in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=88376

http://www.sapfans.com/forums/viewtopic.php?t=40968

http://www.sapfans.com/forums/viewtopic.php?t=6919

13. Top-of-page in ALV

14. ALV Group Heading

http://www.sap-img.com/fu037.htm

How to add list heading like top-of-page in ABAP lists?

http://www.sapfans.com/forums/viewtopic.php?t=58775

http://www.sapfans.com/forums/viewtopic.php?t=60550

http://www.sapfans.com/forums/viewtopic.php?t=16629

15. ALV output to PDF conversion

It has an example code for PDF Conversion.

http://www.erpgenie.com/abap/code/abap51.htm

Go thru these programs they may help u to try on some hands on

ALV Demo program

BCALV_DEMO_HTML

BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode

BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode

BCALV_GRID_DEMO Simple ALV Control Call Demo Program

BCALV_TREE_DEMO Demo for ALV tree control

BCALV_TREE_SIMPLE_DEMO

BC_ALV_DEMO_HTML_D0100

<b>Reward Points if this helps,</b>

Satish

Read only

Former Member
0 Likes
635

There is not a simple FM, if that is what you are looking for. Building a tree is very easy using the ALV objects.

Albert

Read only

Former Member
0 Likes
635

Hi

see this link

http://www.sapdev.co.uk/reporting/alv/alvtree.htm

&----


*& Report ZBCALV_TREE

*&

&----


*&

*&

&----


REPORT ZBCALV_TREE.

class cl_gui_column_tree definition load.

class cl_gui_cfw definition load.

data tree1 type ref to cl_gui_alv_tree.

data mr_toolbar type ref to cl_gui_toolbar.

include <icon>.

include bcalv_toolbar_event_receiver.

include bcalv_tree_event_receiver.

data: toolbar_event_receiver type ref to lcl_toolbar_event_receiver.

data: gt_VBAK type VBAK occurs 0, "Output-Table

gt_fieldcatalog type lvc_t_fcat, "Fieldcatalog

ok_code like sy-ucomm. "OK-Code

start-of-selection.

end-of-selection.

call screen 100.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


module STATUS_0100 output.

SET PF-STATUS 'MAIN'.

if tree1 is initial.

perform Zinit_tree.

endif.

call method cl_gui_cfw=>flush.

endmodule. " STATUS_0100 OUTPUT

&----


*& Form Zinit_tree

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form Zinit_tree .

perform Zbuild_fieldcatalog.

  • create container for alv-tree

data: l_tree_container_name(30) type c,

l_custom_container type ref to cl_gui_custom_container.

l_tree_container_name = 'TREE1'.

if sy-batch is initial.

create object l_custom_container

exporting

container_name = l_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'. "#EC NOTEXT

endif.

endif.

  • create tree control

create object tree1

exporting

parent = l_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'. "#EC NOTEXT

endif.

  • create Hierarchy-header

data l_hierarchy_header type treev_hhdr.

perform zbuild_hierarchy_header changing l_hierarchy_header.

  • create info-table for html-header

data: lt_list_commentary type slis_t_listheader,

l_logo type sdydo_value.

perform Zbuild_comment using

lt_list_commentary

l_logo.

  • repid for saving variants

data: ls_variant type disvariant.

ls_variant-report = sy-repid.

  • create emty tree-control

call method tree1->set_table_for_first_display

exporting

is_hierarchy_header = l_hierarchy_header

it_list_commentary = lt_list_commentary

i_logo = l_logo

i_background_id = 'ALV_BACKGROUND'

i_save = 'A'

is_variant = ls_variant

changing

it_outtab = gt_VBAK "table must be emty !!

it_fieldcatalog = gt_fieldcatalog.

  • create hierarchy

perform Zcreate_hierarchy.

  • add own functioncodes to the toolbar

perform zchange_toolbar.

  • register events

perform zregister_events.

endform. " Zinit_tree

&----


*& Form Zbuild_fieldcatalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form Zbuild_fieldcatalog .

  • get fieldcatalog

call function 'LVC_FIELDCATALOG_MERGE'

exporting

i_structure_name = 'VBAK'

changing

ct_fieldcat = gt_fieldcatalog.

sort gt_fieldcatalog by scrtext_l.

  • change fieldcatalog

data: ls_fieldcatalog type lvc_s_fcat.

loop at gt_fieldcatalog into ls_fieldcatalog.

case ls_fieldcatalog-fieldname.

when 'AUART' .

ls_fieldcatalog-no_out = 'X'.

ls_fieldcatalog-key = ''.

endcase.

modify gt_fieldcatalog from ls_fieldcatalog.

endloop.

endform. " Zbuild_fieldcatalog

&----


*& Form zbuild_hierarchy_header

&----


  • text

----


  • <--P_L_HIERARCHY_HEADER text

----


form zbuild_hierarchy_header changing

p_hierarchy_header type treev_hhdr.

p_hierarchy_header-heading = 'Hierarchy Header'. "#EC NOTEXT

p_hierarchy_header-tooltip =

'This is the Hierarchy Header !'. "#EC NOTEXT

p_hierarchy_header-width = 30.

p_hierarchy_header-width_pix = ''.

endform. " zbuild_hierarchy_header

&----


*& Form Zbuild_comment

&----


  • text

----


  • -->P_LT_LIST_COMMENTARY text

  • -->P_L_LOGO text

----


form Zbuild_comment using

pt_list_commentary type slis_t_listheader

p_logo type sdydo_value.

data: ls_line type slis_listheader.

*

  • LIST HEADING LINE: TYPE H

clear ls_line.

ls_line-typ = 'H'.

  • LS_LINE-KEY: NOT USED FOR THIS TYPE

ls_line-info = 'ALV-tree-demo: flight-overview'. "#EC NOTEXT

append ls_line to pt_list_commentary.

  • STATUS LINE: TYPE S

clear ls_line.

ls_line-typ = 'S'.

ls_line-key = 'valid until'. "#EC NOTEXT

ls_line-info = 'January 29 1999'. "#EC NOTEXT

append ls_line to pt_list_commentary.

ls_line-key = 'time'.

ls_line-info = '2.00 pm'. "#EC NOTEXT

append ls_line to pt_list_commentary.

  • ACTION LINE: TYPE A

clear ls_line.

ls_line-typ = 'A'.

  • LS_LINE-KEY: NOT USED FOR THIS TYPE

ls_line-info = 'actual data'. "#EC NOTEXT

append ls_line to pt_list_commentary.

p_logo = 'ENJOYSAP_LOGO'.

endform. " Zbuild_comment

&----


*& Form Zcreate_hierarchy

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form Zcreate_hierarchy .

data: ls_vbak type vbak,

lt_vbak type vbak occurs 0.

  • get data

select * from vbak into table lt_vbak

up to 200 rows . "#EC CI_NOWHERE

sort lt_vbak by AUART.

  • add data to tree

data: l_AUART_key type lvc_nkey.

loop at lt_vbak into ls_vbak.

on change of ls_vbak-AUART.

perform Zadd_AUART_line using ls_vbak

' '

changing l_AUART_key.

endon.

endloop.

  • calculate totals

call method tree1->update_calculations.

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

call method tree1->frontend_update.

endform. " Zcreate_hierarchy

&----


*& Form Zadd_AUART_line

&----


  • text

----


  • -->P_LS_vbak text

  • -->P_0379 text

  • <--P_L_AUART_KEY text

----


form Zadd_AUART_line using p_ls_vbak type vbak

p_relat_key type lvc_nkey

changing p_node_key type lvc_nkey.

data: l_node_text type lvc_value,

ls_vbak type vbak.

  • 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 = tree1->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_ls_vbak-AUART.

data: ls_node type lvc_s_layn.

ls_node-n_image = space.

ls_node-exp_image = space.

call method tree1->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_vbak

is_node_layout = ls_node

it_item_layout = lt_item_layout

importing

e_new_node_key = p_node_key .

endform. " Zadd_AUART_line

&----


*& Form zchange_toolbar

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form zchange_toolbar .

  • get toolbar control

call method tree1->get_toolbar_object

importing

er_toolbar = mr_toolbar.

check not mr_toolbar is initial.

  • add seperator to toolbar

call method mr_toolbar->add_button

exporting

fcode = ''

icon = ''

butn_type = cntb_btype_sep

text = ''

quickinfo = 'This is a Seperator'. "#EC NOTEXT

  • add Standard Button to toolbar (for Delete Subtree)

call method mr_toolbar->add_button

exporting

fcode = 'DELETE'

icon = '@18@'

butn_type = cntb_btype_button

text = ''

quickinfo = 'Delete subtree'. "#EC NOTEXT

  • add Dropdown Button to toolbar (for Insert Line)

call method mr_toolbar->add_button

exporting

fcode = 'INSERT_LC'

icon = '@17@'

butn_type = cntb_btype_dropdown

text = ''

quickinfo = 'Insert Line'. "#EC NOTEXT

  • set event-handler for toolbar-control

create object toolbar_event_receiver.

set handler toolbar_event_receiver->on_function_selected

for mr_toolbar.

set handler toolbar_event_receiver->on_toolbar_dropdown

for mr_toolbar.

endform. " zchange_toolbar

&----


*& Form zregister_events

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form zregister_events .

  • define the events which will be passed to the backend

data: lt_events type cntl_simple_events,

l_event type cntl_simple_event.

  • define the events which will be passed to the backend

l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.

append l_event to lt_events.

l_event-eventid = cl_gui_column_tree=>eventid_checkbox_change.

append l_event to lt_events.

l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.

append l_event to lt_events.

l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.

append l_event to lt_events.

l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.

append l_event to lt_events.

l_event-eventid = cl_gui_column_tree=>eventid_header_click.

append l_event to lt_events.

l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.

append l_event to lt_events.

call method tree1->set_registered_events

exporting

events = lt_events

exceptions

cntl_error = 1

cntl_system_error = 2

illegal_event_combination = 3.

if sy-subrc <> 0.

message x208(00) with 'ERROR'. "#EC NOTEXT

endif.

  • set Handler

data: l_event_receiver type ref to lcl_tree_event_receiver.

create object l_event_receiver.

set handler l_event_receiver->handle_node_ctmenu_request

for tree1.

set handler l_event_receiver->handle_node_ctmenu_selected

for tree1.

set handler l_event_receiver->handle_item_ctmenu_request

for tree1.

set handler l_event_receiver->handle_item_ctmenu_selected

for tree1.

endform. " zregister_events

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


module USER_COMMAND_0100 input.

ok_code = sy-ucomm.

clear sy-ucomm.

case ok_code.

when 'EXIT' or 'BACK' or 'CANC'.

perform Zexit_program.

when others.

call method cl_gui_cfw=>dispatch.

endcase.

clear ok_code.

call method cl_gui_cfw=>flush.

endmodule. " USER_COMMAND_0100 INPUT

&----


*& Form Zexit_program

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form Zexit_program .

call method tree1->free.

leave program.

endform. " Zexit_program

<b>Reward if usefull</b>