*-----------------------------------------------------------------------
* P R O G R A M
* D E S C R I P T I O N
*
* 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
* P R O G R A M
* D E S C R I P T I O N
*
* 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