0% found this document useful (0 votes)
171 views8 pages

ALV Tree Using Child and Parent Relationship Using OOPs Concept

This document describes an ALV Tree program that displays measurement types in a hierarchical structure using object-oriented programming. It defines data types for the tree structure and text, initializes global variables, gets input from the selection screen, and initializes the ALV Tree control. Methods are used to build the tree hierarchy, add nodes and children, and display the tree on the frontend.

Uploaded by

imtiyaz khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
171 views8 pages

ALV Tree Using Child and Parent Relationship Using OOPs Concept

This document describes an ALV Tree program that displays measurement types in a hierarchical structure using object-oriented programming. It defines data types for the tree structure and text, initializes global variables, gets input from the selection screen, and initializes the ALV Tree control. Methods are used to build the tree hierarchy, add nodes and children, and display the tree on the frontend.

Uploaded by

imtiyaz khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

ALV Tree Using Child and Parent Relationship using OOPs

Concept
*-----------------------------------------------------------------------
* PROGRAM
* DESCRIPTION
*
* To view area types the Building structure and Measurement types are
* defined for business entity, building, property, rental object
*-----------------------------------------------------------------------
* Transaction:
*-----------------------------------------------------------------------
* Author:
* Date : 2015-02-25
*-----------------------------------------------------------------------
* Table Types
*-----------------------------------------------------------------------
types: begin of ty_data_st,
meassum type char4,
measured type char4,
end of ty_data_st,
gt_data_tt type standard table of ty_data_st,

begin of ty_text_st,
meas type rebdmeas,
text type rebdxmmeas,
end of Ty_text_st,
GT_text_tt type standard table of Ty_text_st.

*-----------------------------------------------------------------------
* Global variables
*-----------------------------------------------------------------------
data: gt_hier type gt_data_tt, " Tree hierarchy
gt_text type gt_text_tt, " Text table
gt_mesr type gt_data_tt,
gt_tree type gt_data_tt,
go_alv_tree type ref to cl_gui_alv_tree,
go_custom_container type ref to cl_gui_custom_container,
gv_flag type i value 1.

*-----------------------------------------------------------------------
* Selection screen.
*-----------------------------------------------------------------------
"Source Measurement Type for Transformation
parameters p_msrc type char4 obligatory.

*-----------------------------------------------------------------------
* INITIALIZATION
*-----------------------------------------------------------------------
initialization.
perform get_data changing gt_mesr
gt_text .
*-----------------------------------------------------------------------
* AT SELECTION SCREEN
*-----------------------------------------------------------------------
" Perform execute when User not taking any F4 help
" get the master data and text table data

at selection-screen on value-request for p_msrc.


perform get_data changing gt_mesr
gt_text.
" F4 help function module
perform f4_help .

end-of-selection.

if gt_text is not initial and gt_mesr is not initial.


call screen 100.
else.
if gv_flag eq 0.
clear p_msrc.

leave list-processing.
return.
endif.
endif.

*&---------------------------------------------------------------------*
*& Module PBO OUTPUT
*&---------------------------------------------------------------------*
* process before output
*----------------------------------------------------------------------*
module pbo output.
data gv_title type string .
"set pf status
set pf-status 'MAIN100'.
" Set Dynamic Title of the screen
read table gt_text into data(gs_text) with key meas = p_msrc .
if sy-subrc eq 0.
concatenate p_msrc '-' gs_text-text ')' into gv_title separated by space.
endif.

set titlebar 'YRER1300' with gv_title.

if go_alv_tree is initial.
perform init_tree .

call method cl_gui_cfw=>flush


exceptions
cntl_system_error = 1
cntl_error = 2.
if sy-subrc ne 0.
call function 'POPUP_TO_INFORM'
exporting
titel = 'Automation Queue failure'(004)
txt1 = 'Internal error:'(003)
txt2 = 'A method in the automation queue'(005)
txt3 = 'caused a failure.'(006).
endif.
endif.

endmodule. " PBO OUTPUT


*&---------------------------------------------------------------------*
*& Module PAI INPUT
*&---------------------------------------------------------------------*
* process after input
*----------------------------------------------------------------------*
module pai input.

case sy-ucomm.
when 'EXIT' or 'BACK' or 'CANC'.
perform exit_program.
when others.
" Call dispatch to process toolbar functions
call method cl_gui_cfw=>dispatch.
endcase.

call method cl_gui_cfw=>flush.


endmodule. " PAI INPUT

*&---------------------------------------------------------------------*
*& Form init_tree
*&---------------------------------------------------------------------*

form init_tree.

data : ls_hierarchy_header type treev_hhdr,


lt_fieldcatalog type lvc_t_fcat,
ls_fieldcatlog type lvc_s_fcat. "Fieldcatalog
"create container for alv-tree
data: lv_tree_container_name(30) type c.

lv_tree_container_name = 'CCONTAINER1'.

create object go_custom_container


exporting
container_name = lv_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'(007).
endif.

"create tree control


create object go_alv_tree
exporting
parent = go_custom_container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = 'X'
no_html_header = 'X'
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'(007). "#EC NOTEXT
endif.

"perpare for fieldcatlog table


ls_fieldcatlog-tabname = 'GT_MESR'.
ls_fieldcatlog-fieldname = 'MEASSUM'.
ls_fieldcatlog-coltext = 'Measurement Source'(002).
ls_fieldcatlog-col_opt = 'X'.
ls_fieldcatlog-emphasize = 'X'.
ls_fieldcatlog-seltext = 'Measurement Source'(002).
append ls_fieldcatlog to lt_fieldcatalog.

"Header information

perform build_hierarchy_header changing ls_hierarchy_header.

call method go_alv_tree->set_table_for_first_display


exporting
is_hierarchy_header = ls_hierarchy_header
changing
it_outtab = gt_tree
it_fieldcatalog = lt_fieldcatalog.

call method go_alv_tree->column_optimize.

" Create hierarchy (nodes and leaves)


perform create_hierarchy .

"Send data to frontend.


call method go_alv_tree->frontend_update.

endform. " init_tree


*&---------------------------------------------------------------------*
*& Form build_hierarchy_header
*&---------------------------------------------------------------------*

form build_hierarchy_header changing cs_hierarchy_header type treev_hhdr.

cs_hierarchy_header-heading = ' Measurement Types Description'(001).


cs_hierarchy_header-tooltip = 'Measurement Types'(009).
cs_hierarchy_header-width = 1000.
cs_hierarchy_header-width_pix = ' '.
endform. " build_hierarchy_header
*&---------------------------------------------------------------------*
*& Form exit_program
*&---------------------------------------------------------------------*
* free object and leave program
*----------------------------------------------------------------------*
form exit_program.

call method go_custom_container->free.


leave to screen 0.

endform. " exit_program


*&---------------------------------------------------------------------*
*& Form create_hierarchy
*&---------------------------------------------------------------------*

form create_hierarchy .

data: lv_parent type lvc_nkey,


lt_hier type gt_data_tt .
"perpaare the tree with hierarchy
perform perpare_chain using p_msrc changing gt_hier.

if gt_hier is not initial .


lt_hier = gt_hier.
sort lt_hier ascending by meassum ascending meassrc .
delete lt_hier where meassum ne p_msrc .
loop at lt_hier into data(ls_hier).
at new meassrc.
"add siblling or branch
perform add_siblling using ls_hier
''
changing lv_parent.
endat.
" add child or leaf
perform add_child using ls_hier lv_parent.

endloop.
else.
gv_flag = 0.
leave to screen 0.
endif.
endform. " create_hierarchy

*&---------------------------------------------------------------------*
*& Form Add_siblling
*&---------------------------------------------------------------------*
form add_siblling using ps_hier type ty_data_st
pv_relat_key type lvc_nkey
changing cv_node_key type lvc_nkey.

data: lv_node_text type lvc_value.


" read the text of the branch
read table gt_text into data(ls_text) with key meas = ps_hier-meassrc.
if sy-subrc eq 0.

lv_node_text = ls_text-text..
endif.

call method go_alv_tree->add_node


exporting
i_relat_node_key = pv_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = lv_node_text
is_outtab_line = ps_hier-meassrc
importing
e_new_node_key = cv_node_key.

endform. " Add_siblling


*--------------------------------------------------------------------
form add_sub_sibbling using ps_hier type ty_data_st
pv_relat_key type lvc_nkey
changing cv_node_key type lvc_nkey.

data: lv_node_text type lvc_value.

read table gt_text into data(ls_text) with key meas = ps_hier-meassrc.


if sy-subrc eq 0.
lv_node_text = ls_text-text.
endif.

call method go_alv_tree->add_node


exporting
i_relat_node_key = pv_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = lv_node_text
is_outtab_line = ps_hier-meassrc
importing
e_new_node_key = cv_node_key.

endform. " Add_sub_sibbling

*&---------------------------------------------------------------------*
*& Form PERPARE_CHAIN
*&---------------------------------------------------------------------*

form perpare_chain using pv_parent type char4


changing ct_hier type gt_data_tt.

loop at gt_mesr into data(ls_data) where meassum = pv_parent.

append ls_data to ct_hier.


perform perpare_chain using ls_data-meassrc changing ct_hier.
endloop.

endform. " PERPARE_CHAIN


*&---------------------------------------------------------------------*
*& Form Add_Child
*&---------------------------------------------------------------------*

form add_child using ps_hier type ty_data_st


pv_parent type lvc_nkey .

data lv_child type lvc_nkey.

" loop the table reach to leaf node .


loop at gt_hier into data(ls_hier) Where meassum = ps_hier-meassrc .
perform add_sub_sibbling using ls_hier
pv_parent
changing lv_child.
perform add_child using ls_hier lv_child.
endloop.

endform. " Add_Child


*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*

form get_data changing ct_mesr type gt_data_tt


ct_text type gt_text_tt.

if gt_mesr is initial.
" Get data
select meassum
meassrc
from tivbdmeassum
into table ct_mesr.
endif.

if ct_mesr is not initial.


" Get text
select meas
xmmeas
from tivbdmeast
into table ct_text
for all entries in ct_mesr
where ( meas = ct_mesr-meassrc
or meas = ct_mesr-meassum ) .
if sy-subrc ne 0.

endif.
endif.

endform. " GET_DATA


*&---------------------------------------------------------------------*
*& Form F4_HELP
*&---------------------------------------------------------------------*
form f4_help .
if gt_text is not initial.
" Sort table befor display in F4 help .
sort gt_text ascending by meas.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'MEAS'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_MSRC'
value_org = 'S'
tables
value_tab = gt_text
exceptions
parameter_error = 1
no_values_found = 2
others = 3.

endif.

endform. " F4_HELP

You might also like