Create Ctable Dsa
Create Ctable Dsa
*====================================================================
* METHOD CREATE_TABLE
*====================================================================
* Systementwickler: Daniel Kawaletz
* � MHP Mieschke Hofmann und Partner
* Datum (angelegt): 08.08.2014
*====================================================================
*====================================================================
* Lokale Daten
*====================================================================
DATA:
lo_table_column TYPE REF TO cl_wd_c_table_column,
lt_table_columns TYPE cl_wd_table_column=>tt_table_column,
lo_node TYPE REF TO if_wd_context_node,
lo_table TYPE REF TO cl_wd_c_table,
ls_elements_set TYPE wdr_context_element_set,
lv_row_count TYPE i,
lv_loop_counter TYPE i,
lv_temp_count TYPE i,
lv_separator_line_counter TYPE i,
lv_collapse_button_count TYPE i VALUE 0,
lv_temp_count_string TYPE string,
lv_otr_text TYPE string,
lv_attribute_path_tot TYPE string,
lv_attribute_path TYPE string,
lv_attribute_path_to_mark TYPE string,
lv_attribute_path_btn_txt TYPE string,
lv_attribute_path_bkg TYPE string,
lv_snglmark_id TYPE string,
lv_snglmark_attr_path TYPE string,
lv_btn_id TYPE string,
lt_req TYPE zhqp_t_req_gen,
ls_req TYPE zhqp_s_req_gen,
lv_req_g_id TYPE zhqp_req_grp_id,
lt_employee TYPE zhqp_t_employee_short,
ls_employee TYPE zhqp_s_employee_short,
lv_employee_count TYPE i VALUE 0,
lv_employee_count_string TYPE string,
lt_partgroup TYPE zhqp_t_empl_partgroup,
ls_partgroup TYPE zhqp_s_empl_partgroup,
lt_employee_column TYPE wd_this->elements_employee_column,
lv_fix_columns TYPE i,
ls_qmatrix_settings TYPE zhqp_s_qmatrix,
ls_active_elements TYPE wd_this->element_active_elements.
cl_wd_dynamic_tool=>create_c_table_from_node(
EXPORTING
ui_parent = lo_root
table_id = 'VIS_MATRIX'
node = lo_node
RECEIVING
c_table = lo_table ).
*_ BTN_MARKMODUS ____________________________________________________
cl_wd_toolbar_button=>new_toolbar_button(
EXPORTING
bind_enabled = 'MAPPED.EDITMODE'
bind_image_source = 'ICONS.ICO_MARKER_MODE'
bind_text = 'MARKER_MODE.BUTTON_TEXT'
bind_tooltip = 'TOOLTIPS.TOT_MARKER_MODE_BTN'
image_first = 'X'
design = cl_wd_toolbar_button=>e_design-standard
enabled = 'X'
hotkey = cl_wd_toolbar_button=>e_hotkey-ctrl_e
id = 'BTN_MARKER_MODE'
on_action = 'EVT_MARKER_MODE'
visible = cl_wd_toolbar_button=>e_visible-visible
RECEIVING
control = lo_btn_marker_mode
).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_btn_marker_mode ).
cl_wd_toolbar_input_field=>new_toolbar_input_field(
EXPORTING
alignment = cl_wd_toolbar_input_field=>e_alignment-auto
bind_value = 'FILTER_PARAM.DATE_START'
context_menu_behaviour = cl_wd_toolbar_input_field=>e_context_menu_behaviour-
inherit
enabled = 'X'
id = 'INP_STARTDATE'
ime_mode = cl_wd_toolbar_input_field=>e_ime_mode-auto
label_text = lv_otr_text
on_enter = 'EVT_CHECK_DATE'
state = cl_wd_toolbar_input_field=>e_state-normal
text_direction = cl_wd_toolbar_input_field=>e_text_direction-inherit
visible = cl_wd_toolbar_input_field=>e_visible-visible
width = zcl_hqp_constants=>mc_matrix_width_date_input
RECEIVING
control = lo_inp_start_date ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_inp_start_date ).
cl_wd_popin=>new_popin(
EXPORTING
bind_visible = 'ACTIVE_ELEMENTS.LEGEND_IS_ACTIVE'
design = cl_wd_popin=>e_design-fill
has_content_padding = 'X'
id = 'POPIN_LEGEND'
title_design = cl_wd_popin=>e_title_design-text
RECEIVING
control = lo_popin
).
*====================================================================
* Legende
*====================================================================
cl_wd_legend=>new_legend(
EXPORTING
context_menu_behaviour = cl_wd_legend=>e_context_menu_behaviour-inherit
enabled = 'X'
id = 'LEGEND'
visible = cl_wd_legend=>e_visible-visible
col_count = 5
RECEIVING
control = lo_legend
).
*__ LegendenItems ___________________________________________
lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =
'ZHQP_WD/WITHOUT_APPOINTM' ).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_WO_APPOINTM'
bind_semantics = 'COLORS.EPF_WO_APPOINTM_BACKGROUND'
id = 'LI_GOT'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_got
).
lo_legend->add_item( the_item = lo_li_got ).
*====================================================================
* Anzahl der sichtaberen Zeilen anpassen
*====================================================================
* lv_row_count = wd_context->get_child_node( 'VIS_MATRIX' )->get_element_count( ).
* CAD20150805-
* IF lv_row_count < 20.
* lo_table->set_visible_row_count( lv_row_count ).
* ELSE.
* lo_table->set_visible_row_count( 20 ).
* ENDIF.
* Component Name
lo_comp = wd_this->wd_get_api( ).
lo_comp->get_component_info( RECEIVING component_info = lo_comp_info ).
lo_comp_info->get_name( RECEIVING result = lv_comp_name_str ).
lv_comp_name_chr = lv_comp_name_str.
* View Name
lv_view_name_str = wd_this->mo_view_vmain->if_wd_controller~name.
lv_view_name_chr = lv_view_name_str.
* Layout: Gruppentabelle
READ TABLE wd_this->mt_cu_layout WITH KEY component_name = lv_comp_name_chr
view_name =
lv_view_name_chr
element_name = 'MAAL'
property_name =
'SET_VISIBLE_ROW_COUNT'
INTO ls_cu_layout.
IF sy-subrc = 0.
lv_visible_row_count = ls_cu_layout-property_value.
ELSE.
ENDIF.
*====================================================================
* Spalten ausblenden
*====================================================================
lv_temp_count = 0.
DO zcl_hqp_constants=>mc_fix_invisible_columns
+ ( wd_this->mv_employee_count * zcl_hqp_constants=>mc_matrix_empl_attr_count )
+ ( wd_this->mv_partgroup_count *
zcl_hqp_constants=>mc_matrix_partgrp_attr_count )
+ ( zcl_hqp_constants=>mc_matrix_sep_line_attr_count * wd_this-
>mv_separator_line_count ) TIMES.
lv_temp_count = lv_temp_count + 1.
lv_temp_count_string = lv_temp_count.
CONDENSE lv_temp_count_string.
CONCATENATE 'VIS_MATRIX_C' lv_temp_count_string INTO lv_column_id.
ENDDO.
lo_button = cl_wd_button=>new_button(
bind_text = 'VIS_MATRIX.REQ_G_BTN_TXT'
bind_tooltip = 'VIS_MATRIX.REQ_G_BTN_TOT'
context_menu_behaviour = cl_wd_button=>e_context_menu_behaviour-inherit
design = cl_wd_button=>e_design-standard
enabled = 'X'
hotkey = cl_wd_button=>e_hotkey-none
image_first = 'X'
on_action = 'EVT_COLLAPSE_REQ_GRP'
text_direction = cl_wd_button=>e_text_direction-inherit
visible = cl_wd_button=>e_visible-visible ).
lv_separator_line_counter = 0.
LOOP AT lt_partgroup INTO ls_partgroup.
lv_temp_count = lv_temp_count + 1.
lv_temp_count_string = lv_temp_count.
CONDENSE lv_temp_count_string.
CONCATENATE 'VIS_MATRIX_C' lv_temp_count_string INTO lv_column_id.
" Tooltip
CONCATENATE 'VIS_MATRIX.TOT_C' lv_temp_count_string INTO lv_attribute_path_tot.
CONDENSE lv_attribute_path_tot.
lo_button = cl_wd_button=>new_button(
bind_text = lv_attribute_path_btn_txt
bind_tooltip = lv_attribute_path_tot
context_menu_behaviour = cl_wd_button=>e_context_menu_behaviour-inherit
design = cl_wd_button=>e_design-standard
enabled = 'X'
id = lv_btn_id
hotkey = cl_wd_button=>e_hotkey-none
image_first = 'X'
on_action = 'EVT_COLLAPSE_PARTGRP'
text_direction = cl_wd_button=>e_text_direction-inherit
visible = cl_wd_button=>e_visible-visible ).
lv_temp_count_string = lv_temp_count.
CONDENSE lv_temp_count_string.
CONCATENATE 'VIS_MATRIX_C' lv_temp_count_string INTO lv_column_id.
" Tooltip
CONCATENATE 'VIS_MATRIX.TOT_C' lv_temp_count_string INTO
lv_attribute_path_tot.
CONDENSE lv_attribute_path_tot.
lo_button = cl_wd_button=>new_button(
bind_text = lv_attribute_path_btn_txt
bind_tooltip = lv_attribute_path_tot
context_menu_behaviour = cl_wd_button=>e_context_menu_behaviour-
inherit
design = cl_wd_button=>e_design-standard
enabled = 'X'
id = lv_btn_id
hotkey = cl_wd_button=>e_hotkey-none
image_first = 'X'
on_action = 'EVT_COLLAPSE_SEPL'
text_direction = cl_wd_button=>e_text_direction-inherit
visible = cl_wd_button=>e_visible-visible ).
CASE lv_loop_counter.
* DO zcl_hqp_constants=>mc_fix_visible_columns + wd_this->mv_employee_count +
wd_this->mv_partgroup_count + wd_this->mv_separator_line_count TIMES.
*
* lv_temp_count = lv_temp_count + 1.
* lv_temp_count_string = lv_temp_count.
*
* CONDENSE lv_temp_count_string.
* CONCATENATE 'VIS_MATRIX_C' lv_temp_count_string INTO lv_column_id.
* lo_table_column ?= lo_table->get_column( id = lv_column_id ).
*
* " Bild Variant hinzuf�gen
* IF lv_temp_count > lv_fix_columns.
*
* lo_standard_cell =
cl_wd_c_table_standard_cell=>new_c_table_standard_cell( variant_key = 'IMAGE' ).
*
* " Bild-URL
* CONCATENATE 'IMAGE_NAME_EMPL.CI_C' lv_temp_count_string INTO
lv_attribute_path.
* CONDENSE lv_attribute_path.
*
* " Tooltip
* CONCATENATE 'VIS_MATRIX.TOT_C' lv_temp_count_string INTO
lv_attribute_path_tot.
* CONDENSE lv_attribute_path_tot.
*
** DATA: lo_caption TYPE REF TO cl_wd_caption.
* lo_caption = cl_wd_caption=>new_caption(
* bind_image_source = lv_attribute_path ).
*
* lo_table_column->set_header( the_header = lo_caption ).
* lo_table->set_header_row_height( value = 180 ).
*
** lo_image = cl_wd_image=>new_image(
** bind_source = lv_attribute_path
** bind_tooltip = lv_attribute_path_tot ).
*
* lo_standard_cell->set_editor( the_editor = lo_image ).
*
* " Hintergrund
* CONCATENATE 'VIS_MATRIX.CB_C' lv_temp_count_string INTO lv_attribute_path.
* lo_table_column->bind_cell_design( path = lv_attribute_path ).
** lo_standard_cell->bind_cell_design( path = lv_attribute_path ).
*
* lo_table_column->add_cell_variant( lo_standard_cell ).
*
* ENDIF.
*
* lo_cell_editor = lo_table_column->get_table_cell_editor( ).
* lo_textview ?= lo_cell_editor.
*
* "lo_textview->set_wrapping( value = abap_true ).
**__ DESIGN ___________________________________________
* CONCATENATE 'VIS_MATRIX.CD_C' lv_temp_count_string INTO lv_attribute_path.
* CONDENSE lv_attribute_path.
* lo_textview->bind_design( path = lv_attribute_path ).
*
**__ Horizontal Alignment ___________________________________________
* CONCATENATE 'VIS_MATRIX.CA_C' lv_temp_count_string INTO lv_attribute_path.
* CONDENSE lv_attribute_path.
* " lo_textview->bind_h_align( path = lv_string ).
* lo_table_column->bind_h_align( path = lv_attribute_path ).
**__ Text ___________________________________________
* CONCATENATE 'VIS_MATRIX.CT_C' lv_temp_count_string INTO lv_attribute_path.
* CONDENSE lv_attribute_path.
* lo_textview->bind_semantic_color( path = lv_attribute_path ).
* lo_table_column->set_table_cell_editor( the_table_cell_editor = lo_textview ).
*
**__ Hintergrund ___________________________________________
* CONCATENATE 'VIS_MATRIX.CB_C' lv_temp_count_string INTO lv_attribute_path.
* CONDENSE lv_attribute_path.
* lo_table_column->bind_cell_design( path = lv_attribute_path ).
*
* IF lv_temp_count > lv_fix_columns.
**__ CELL-Variant __________________________________________
* CONCATENATE 'VIS_MATRIX.VA_C' lv_temp_count_string INTO lv_attribute_path.
* CONDENSE lv_attribute_path.
* lo_table_column->bind_selected_cell_variant( path = lv_attribute_path ).
* ENDIF.
*
**__ Mitarbeiterspalten____________________
* READ TABLE lt_employee_column WITH KEY column_number = lv_temp_count_string
TRANSPORTING NO FIELDS.
* IF sy-subrc = 0.
*
* lv_employee_count_string = sy-tabix.
*
**__ Sichtbarkeit ____________________
* CONCATENATE 'VISIBLE_ATTR_EMPL.CV_C' lv_temp_count_string INTO
lv_attribute_path.
* CONDENSE lv_attribute_path.
* lo_table_column->bind_visible( path = lv_attribute_path ).
*
* lo_cell_editor = lo_table_column->get_table_cell_editor( ).
* lo_textview ?= lo_cell_editor.
*
**__ Tooltip der Mitarbeiter ____________________
* CONCATENATE 'VIS_MATRIX.TOT_C' lv_temp_count_string INTO
lv_attribute_path_tot.
* CONDENSE lv_attribute_path_tot.
* lo_textview->bind_tooltip( path = lv_attribute_path_tot ).
**====================================================================
** CELL VARIANT der Mitarbeiter Spalten
**====================================================================
* CONCATENATE 'VIS_MATRIX.VA_C' lv_temp_count_string INTO lv_attribute_path.
* CONDENSE lv_attribute_path.
*
**__ Attribute SELECTED CELL VARIANTE binden _________________________
** lo_column->bind_selected_cell_variant( path = lv_attribute_path ).
* lo_table_column->bind_selected_cell_variant( path =
lv_attribute_path )."sabotid
*
* CONCATENATE 'VIS_MATRIX.CB_C' lv_temp_count_string INTO
lv_attribute_path_bkg.
* CONDENSE lv_attribute_path_bkg.
*
* CONCATENATE 'VIS_MATRIX.EMPL' lv_employee_count_string INTO
lv_attribute_path_to_mark.
* CONDENSE lv_attribute_path_to_mark.
*
* CONCATENATE 'EMPL' lv_employee_count_string '_SINGLEMARK' INTO
lv_snglmark_id.
* CONDENSE lv_snglmark_id NO-GAPS.
*
**__ Horizontal Alignment ___________________________________________
* CONCATENATE 'VIS_MATRIX.CA_C' lv_temp_count_string INTO lv_attribute_path.
* CONDENSE lv_attribute_path.
*
* lo_snglmark = cl_wd_table_sngl_mark_cell=>new_table_sngl_mark_cell(
* id = lv_snglmark_id
* bind_attribute_to_mark = lv_attribute_path_to_mark
* bind_cell_design = lv_attribute_path_bkg
* bind_h_align = lv_attribute_path
* bind_marked_data = 'MARKED_CELL'
* variant_key = 'MARK'
* view = wd_this->mo_view_vmain ).
*
* lo_snglmark->set_editor( lo_textview ).
** lo_table_column->add_cell_variant( lo_snglmark ).
* lo_table_column->set_col_selection_state( value =
cl_wd_c_table_column=>e_col_selection_state-not_selected ).
* ENDIF.
* ENDDO.
*====================================================================
* Namen in Tetxform
*====================================================================
lv_partgroup_counter = 0.
lv_separator_line_counter = 0.
lv_employee_counter = 0.
lo_table->set_header_row_height( value = 240 ).
** Teilgruppen
LOOP AT lt_partgroup INTO ls_partgroup.
lv_partgroup_counter = lv_partgroup_counter + 1.
lv_universal_string = lv_partgroup_counter.
ADD 1 TO lv_fix_columns.
lv_universal_string = lv_fix_columns.
CONDENSE lv_universal_string.
* Tooltip
CONCATENATE 'FIXED_HEADER.MATRIX_HEADER_02.TOT_C' lv_universal_string INTO
lv_attribute_path_tot.
CONDENSE lv_attribute_path_tot.
lo_caption = cl_wd_caption=>new_caption(
bind_text = lv_attribute_path
bind_tooltip = lv_attribute_path_tot ).
" Trennlinie
LOOP AT lt_employee INTO ls_employee.
IF ls_employee-report_type = '010' AND ls_employee-partgroup_id =
ls_partgroup-partgroup_id.
lv_separator_line_counter = lv_separator_line_counter + 1.
lv_universal_string = lv_separator_line_counter.
ADD 1 TO lv_fix_columns.
lv_universal_string = lv_fix_columns.
CONDENSE lv_universal_string.
" Tooltip
CONCATENATE 'FIXED_HEADER.MATRIX_HEADER_02.TOT_C' lv_universal_string INTO
lv_attribute_path_tot.
CONDENSE lv_attribute_path_tot.
lo_cell_editor = lo_table_column->get_table_cell_editor( ).
lo_textview ?= lo_cell_editor.
lv_employee_counter = lv_employee_counter + 1.
lv_universal_string = lv_employee_counter.
ADD 1 TO lv_fix_columns.
lv_universal_string = lv_fix_columns.
CONDENSE lv_universal_string.
" Tooltip
CONCATENATE 'FIXED_HEADER.MATRIX_HEADER_02.TOT_C' lv_universal_string
INTO lv_attribute_path_tot.
CONDENSE lv_attribute_path_tot.
lo_cell_editor = lo_table_column->get_table_cell_editor( ).
lo_textview ?= lo_cell_editor.
" Sichtbarkeit
CONCATENATE 'VISIBLE_ATTR_EMPL.CV_C' lv_universal_string INTO
lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_visible( path = lv_attribute_path ).
lv_temp_count_string = lv_temp_count.
CONDENSE lv_temp_count_string.
CONCATENATE 'VIS_MATRIX_C' lv_temp_count_string INTO lv_column_id.
lo_table_column ?= lo_table->get_column( id = lv_column_id ).
lo_cell_editor = lo_table_column->get_table_cell_editor( ).
lo_textview ?= lo_cell_editor.
endmethod.