0% found this document useful (0 votes)
22 views

Create Ctable Dsa

This document outlines the creation of a dynamic table (lo_table) in ABAP from a node object (lo_node) retrieved from the context, including initializing local variables and data structures for table columns, requests, employees, settings, and UI elements like a toolbar and legend. It also describes retrieving and linking additional data like employee groups and active elements to populate the table.

Uploaded by

denis.sabotic
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views

Create Ctable Dsa

This document outlines the creation of a dynamic table (lo_table) in ABAP from a node object (lo_node) retrieved from the context, including initializing local variables and data structures for table columns, requests, employees, settings, and UI elements like a toolbar and legend. It also describes retrieving and linking additional data like employee groups and active elements to populate the table.

Uploaded by

denis.sabotic
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 27

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

*__ UI_Elemente ___________________________________________


DATA: lo_root TYPE REF TO cl_wd_uielement_container,
lo_ui_element TYPE REF TO cl_wd_uielement.
*__ Legende ___________________________________________
DATA: lo_legend TYPE REF TO cl_wd_legend,
lo_li_got TYPE REF TO cl_wd_legend_item, " Geplant ohne Termin
lo_li_gotaj TYPE REF TO cl_wd_legend_item, " Geplant ohne Termin akt. Jahr
lo_li_gotfj TYPE REF TO cl_wd_legend_item, " Geplant ohne Termin Folgejahr
lo_li_gmt TYPE REF TO cl_wd_legend_item, " Geplant mit Termin
lo_li_loe TYPE REF TO cl_wd_legend_item, " L�schen
lo_li_ung TYPE REF TO cl_wd_legend_item, " Ung�ltig
lo_li_ng TYPE REF TO cl_wd_legend_item, " Nicht geplant
lo_li_ts TYPE REF TO cl_wd_legend_item, " T-Training durchgef�hrt
lo_li_lvl1 TYPE REF TO cl_wd_legend_item, " 1 - Anf�nger Einlernen
lo_li_lvl2 TYPE REF TO cl_wd_legend_item, " 2 - Aus�bung mit Unterst�tzung
lo_li_lvl3 TYPE REF TO cl_wd_legend_item, " 3 - Aus�bung ohne
Unterst�tzung (wirksam)
lo_li_lvl4 TYPE REF TO cl_wd_legend_item. " 4 - kann andere Einlernen
(wirksam)

*__ ToolBar _________________________________________________________


DATA: lo_toolbar TYPE REF TO cl_wd_toolbar,
lo_btn_legend TYPE REF TO cl_wd_toolbar_toggle_btn,
lo_ddk_matrix TYPE REF TO cl_wd_toolbar_dropdown_by_key,
lo_ddk_selection TYPE REF TO cl_wd_toolbar_dropdown_by_key,
lo_tbs_1 TYPE REF TO cl_wd_toolbar_separator,
lo_btn_dateview TYPE REF TO cl_wd_toolbar_toggle_btn,
lo_tbs_2 TYPE REF TO cl_wd_toolbar_separator,
lo_btn_lent_empl TYPE REF TO cl_wd_toolbar_toggle_btn,
lo_btn_all_empl TYPE REF TO cl_wd_toolbar_toggle_btn,
lo_btn_sel_mark TYPE REF TO cl_wd_toolbar_toggle_btn,
lo_tbs_3 TYPE REF TO cl_wd_toolbar_separator,
lo_btn_marker_mode TYPE REF TO cl_wd_toolbar_button,
lo_tbs_4 TYPE REF TO cl_wd_toolbar_separator,
lo_tbs_5 TYPE REF TO cl_wd_toolbar_separator,
lo_tbs_6 TYPE REF TO cl_wd_toolbar_separator,
lo_inp_start_date TYPE REF TO cl_wd_toolbar_input_field,
lo_inp_end_date TYPE REF TO cl_wd_toolbar_input_field,
lo_inp_last_change TYPE REF TO cl_wd_toolbar_input_field,
lo_popin TYPE REF TO cl_wd_popin,
lo_legend_view TYPE REF TO if_wd_view.

*__ Design-Attribute der Cell-Editoren


_________________________________________________________
DATA: lt_columns TYPE cl_wd_table_column=>tt_table_column,
lv_fieldname_text TYPE string,
lv_fieldname_tooltip TYPE string,
lv_column_id TYPE string,
lo_cell_editor TYPE REF TO if_wd_table_cell_editor,
lo_textview TYPE REF TO cl_wd_text_view,
lo_cell_design TYPE REF TO wdui_table_cell_design,
lo_snglmark TYPE REF TO cl_wd_table_sngl_mark_cell.
*====================================================================
* Lokale Daten Cell Variant
*====================================================================
DATA: lo_inputfield TYPE REF TO cl_wd_input_field,
lo_standard_cell TYPE REF TO cl_wd_c_table_standard_cell,
lo_button TYPE REF TO cl_wd_button,
lo_image TYPE REF TO cl_wd_image.

DATA: lv_partgroup_counter TYPE i,


lv_employee_counter TYPE i,
lv_universal_string TYPE string,
lv_comp_name TYPE string,
lo_caption TYPE REF TO cl_wd_caption.
*====================================================================
* Lokale Daten LEGENDE
*====================================================================
DATA: tco_root_popin TYPE REF TO cl_wd_transparent_container.
*====================================================================
* Initiale Tabellen erzeugung
*====================================================================
lo_root ?= wd_this->mo_view_vmain->get_element( 'ROOTUIELEMENTCONTAINER' ).
IF lo_root IS INITIAL.
EXIT.
ENDIF.
*====================================================================
* Tabelle aus Knoten erzeugen
*====================================================================
lo_node = wd_context->get_child_node( 'VIS_MATRIX' ).
IF lo_node IS INITIAL.
EXIT.
ENDIF.

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

lo_table->set_selection_mode( value = cl_wd_c_table=>e_selection_mode-single ).


lo_table->set_selection_column_design( value =
cl_wd_c_table=>e_selection_column_design-default ).
lo_table->set_row_selectable( value = 'X' ).
lo_table->set_on_select( value = 'EVT_SELECT_CTABLE' ).
lo_table->set_height_mode( value = cl_wd_c_table=>e_height_mode-visible_row_count
).
* lo_table->set_height_mode( value = cl_wd_c_table=>e_height_mode-all_rows ).
* lo_table->set_row_height( value = 21 ).

lo_node->set_lead_selection_index( index = if_wd_context_node=>no_selection ).


*====================================================================
* Tabelle als UI Element bekommen
*====================================================================
lo_ui_element = lo_root->get_child( id = 'VIS_MATRIX' ).
*====================================================================
* Anforderungen holen
*====================================================================
lo_node = wd_context->get_child_node( name = wd_this->wdctx_req ).
lo_node->get_static_attributes_table( IMPORTING table = lt_req ).

*__ doppelte Eintr�ge entfernen _____________________________________


SORT lt_req BY req_grp_id.
DELETE ADJACENT DUPLICATES FROM lt_req COMPARING req_grp_id.
DESCRIBE TABLE lt_req LINES wd_this->mv_req_group_count.
*====================================================================
* Mitarbeiter holen
*====================================================================
lo_node = wd_context->get_child_node( name = wd_this->wdctx_employee ).
lo_node->get_static_attributes_table( IMPORTING table = lt_employee ).
*====================================================================
* Teilgruppen der Mitarbeiter auslesen
*====================================================================
lo_node = wd_context->get_child_node( name = wd_this->wdctx_partgroups ).
lo_node->get_static_attributes_table( IMPORTING table = lt_partgroup ).
*====================================================================
* Verkn�pfung zwischen Mitarbeitern und Spalten auslesen
*====================================================================
lo_node = wd_context->get_child_node( name = wd_this->wdctx_employee_column ).
lo_node->get_static_attributes_table( IMPORTING table = lt_employee_column ).
*====================================================================
* Aktive Elemente holen
*====================================================================
ls_active_elements = wd_this->get_active_elements( ).
*====================================================================
* Pers�nliche Einstellungen auslesen
*====================================================================
CALL METHOD zcl_hqp_data_provider=>get_qmatrix_settings
EXPORTING
iv_user = sy-uname
RECEIVING
rs_qmatrix = ls_qmatrix_settings.
*====================================================================
* Toolbar erstellen
*====================================================================
lo_toolbar = cl_wd_toolbar=>new_toolbar(
context_menu_behaviour = cl_wd_toolbar=>e_context_menu_behaviour-inherit
design = cl_wd_toolbar=>e_design-header"standard
item_overflow = cl_wd_toolbar=>e_item_overflow-menu"wrapping
visible = cl_wd_toolbar=>e_visible-visible
wrapping = '' ).

*__ DDK_MATRIX ______________________________________________________


lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =
'ZHQP_WD/GENERAL_SHORT' ).
cl_wd_toolbar_dropdown_by_key=>new_toolbar_dropdown_by_key(
EXPORTING
bind_selected_key = 'FILTER_PARAM.MATRIX_ID'
context_menu_behaviour =
cl_wd_toolbar_dropdown_by_key=>e_context_menu_behaviour-inherit
enabled = 'X'
id = 'NEW_DDK_MATRIX'
label_text = lv_otr_text
on_select = 'EVT_GET_MATRIX_DATA'
state = cl_wd_toolbar_dropdown_by_key=>e_state-normal
text_direction = cl_wd_toolbar_dropdown_by_key=>e_text_direction-
inherit
visible = cl_wd_toolbar_dropdown_by_key=>e_visible-visible
width = zcl_hqp_constants=>mc_matrix_width_ddk_matrix
RECEIVING
control = lo_ddk_matrix ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_ddk_matrix ).

*__ BTN_DATEVIEW ____________________________________________________


cl_wd_toolbar_toggle_btn=>new_toolbar_toggle_btn(
EXPORTING
bind_tooltip = 'TOOLTIPS.TOT_DATE_VIEW_BTN'
context_menu_behaviour = cl_wd_toolbar_button=>e_context_menu_behaviour-
inherit
design = cl_wd_toolbar_button=>e_design-standard
bind_checked = 'ACTIVE_ELEMENTS.DATE_SIGN_IS_ACTIVE'
bind_image_source = 'ICONS.ICO_DATE_VIEW'
bind_checked_image_source = 'ICONS.ICO_DATE_VIEW'
enabled = 'X'
hotkey = cl_wd_toolbar_button=>e_hotkey-none
id = 'BTN_DATE_VIEW'
image_first = 'X'
on_toggle = 'EVT_SWITCH_DATEVIEW'
text_direction = cl_wd_toolbar_button=>e_text_direction-inherit
visible = cl_wd_toolbar_button=>e_visible-visible
RECEIVING
control = lo_btn_dateview ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_btn_dateview ).

**__ ToolBarSeparator ________________________________________________


* cl_wd_toolbar_separator=>new_toolbar_separator(
* EXPORTING
* design = cl_wd_toolbar_separator=>e_design-largewithline
* id = 'TBS_02'
* visible = cl_wd_toolbar_separator=>e_visible-visible
* RECEIVING
* control = lo_tbs_2 ).
* lo_toolbar->add_toolbar_item( the_toolbar_item = lo_tbs_2 ).

*__ BTN_LENT_EMPLOYEES ______________________________________________


cl_wd_toolbar_toggle_btn=>new_toolbar_toggle_btn(
EXPORTING
bind_tooltip = 'TOOLTIPS.TOT_LENT_EMPL_BTN'
context_menu_behaviour = cl_wd_toolbar_button=>e_context_menu_behaviour-
inherit
design = cl_wd_toolbar_button=>e_design-standard
bind_checked = 'ACTIVE_ELEMENTS.LENT_SELECTION_IS_ACTIVE'
bind_image_source = 'ICONS.ICO_LENT_EMPLOYEE'
bind_checked_image_source = 'ICONS.ICO_LENT_EMPLOYEE'
enabled = 'X'
hotkey = cl_wd_toolbar_button=>e_hotkey-none
id = 'BTN_LENT_EMPL'
image_first = 'X'
on_toggle = 'EVT_SHOW_LENT_EMPL'
text_direction = cl_wd_toolbar_button=>e_text_direction-inherit
visible = cl_wd_toolbar_button=>e_visible-visible
RECEIVING
control = lo_btn_lent_empl ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_btn_lent_empl ).

*__ BTN_ALL_EMPLOYEES _______________________________________________


cl_wd_toolbar_toggle_btn=>new_toolbar_toggle_btn(
EXPORTING
bind_tooltip = 'TOOLTIPS.TOT_ALL_EMPL_BTN'
context_menu_behaviour = cl_wd_toolbar_button=>e_context_menu_behaviour-
inherit
design = cl_wd_toolbar_button=>e_design-standard
bind_checked = 'ACTIVE_ELEMENTS.ALL_SELECTION_IS_ACTIVE'
bind_image_source = 'ICONS.ICO_ALL_EMPLOYEE'
bind_checked_image_source = 'ICONS.ICO_ALL_EMPLOYEE'
enabled = 'X'
hotkey = cl_wd_toolbar_button=>e_hotkey-none
id = 'BTN_ALL_EMPL'
image_first = 'X'
on_toggle = 'EVT_SHOW_ALL_EMPL'
text_direction = cl_wd_toolbar_button=>e_text_direction-inherit
visible = cl_wd_toolbar_button=>e_visible-visible
RECEIVING
control = lo_btn_all_empl ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_btn_all_empl ).
*__ BTN_SEL_MARK _________________________________________________
cl_wd_toolbar_toggle_btn=>new_toolbar_toggle_btn(
EXPORTING
bind_tooltip = 'TOOLTIPS.TOT_SEL_MARK_BTN'
context_menu_behaviour = cl_wd_toolbar_button=>e_context_menu_behaviour-
inherit
design = cl_wd_toolbar_button=>e_design-standard
bind_checked = 'ACTIVE_ELEMENTS.SEL_MARK_IS_ACTIVE'
bind_image_source = 'ICONS.ICO_SEL_MARK'
bind_checked_image_source = 'ICONS.ICO_SEL_MARK'
enabled = 'X'
hotkey = cl_wd_toolbar_button=>e_hotkey-none
id = 'BTN_SEL_MARK'
image_first = 'X'
on_toggle = 'EVT_SEL_MARK'
text_direction = cl_wd_toolbar_button=>e_text_direction-inherit
visible = cl_wd_toolbar_button=>e_visible-visible
RECEIVING
control = lo_btn_sel_mark ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_btn_sel_mark ).

*__ ToolBarSeparator ________________________________________________


cl_wd_toolbar_separator=>new_toolbar_separator(
EXPORTING
design = cl_wd_toolbar_separator=>e_design-largewithline
id = 'TBS_01'
visible = cl_wd_toolbar_separator=>e_visible-visible
RECEIVING
control = lo_tbs_1 ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_tbs_1 ).

*_ 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 ).

*__ ToolBarSeparator ________________________________________________


cl_wd_toolbar_separator=>new_toolbar_separator(
EXPORTING
design = cl_wd_toolbar_separator=>e_design-largewithline
id = 'TBS_03'
visible = cl_wd_toolbar_separator=>e_visible-visible
RECEIVING
control = lo_tbs_3 ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_tbs_3 ).

*__ DDK_Selection ______________________________________________________


cl_wd_toolbar_dropdown_by_key=>new_toolbar_dropdown_by_key(
EXPORTING
bind_selected_key = 'FILTER_PARAM.MAAL_SELECTION'
context_menu_behaviour =
cl_wd_toolbar_dropdown_by_key=>e_context_menu_behaviour-inherit
enabled = 'X'
id = 'DDK_SELECTION'
on_select = 'EVT_SELECTION'
state = cl_wd_toolbar_dropdown_by_key=>e_state-normal
text_direction = cl_wd_toolbar_dropdown_by_key=>e_text_direction-
inherit
visible = cl_wd_toolbar_dropdown_by_key=>e_visible-visible
width = zcl_hqp_constants=>mc_matrix_width_ddk_selection
RECEIVING
control = lo_ddk_selection ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_ddk_selection ).

*__ ToolBarSeparator ________________________________________________


cl_wd_toolbar_separator=>new_toolbar_separator(
EXPORTING
design = cl_wd_toolbar_separator=>e_design-largewithline
id = 'TBS_05'
visible = cl_wd_toolbar_separator=>e_visible-visible
RECEIVING
control = lo_tbs_5
).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_tbs_5 ).

*__ INP_Start_Data __________________________________________________


lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =
'ZHQP_WD/LBL_MAAL_VMAIN_STARTTIME' ).

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

*__ INP_End_Date ____________________________________________________


lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =
'ZHQP_WD/LBL_MAMA_VMAIN_ENDTIME' ).
cl_wd_toolbar_input_field=>new_toolbar_input_field(
EXPORTING
alignment = cl_wd_toolbar_input_field=>e_alignment-auto
bind_value = 'FILTER_PARAM.DATE_END'
context_menu_behaviour = cl_wd_toolbar_input_field=>e_context_menu_behaviour-
inherit
enabled = 'X'
id = 'INP_ENDDATE'
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_end_date ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_inp_end_date ).

*__ ToolBarSeparator ________________________________________________


cl_wd_toolbar_separator=>new_toolbar_separator(
EXPORTING
design = cl_wd_toolbar_separator=>e_design-largewithline
id = 'TBS_04'
visible = cl_wd_toolbar_separator=>e_visible-visible
RECEIVING
control = lo_tbs_4 ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_tbs_4 ).

*__ BTN_LEGEND ____________________________________________________


cl_wd_toolbar_toggle_btn=>new_toolbar_toggle_btn(
EXPORTING
bind_tooltip = 'TOOLTIPS.TOT_LEGEND_BTN'
context_menu_behaviour = cl_wd_toolbar_button=>e_context_menu_behaviour-
inherit
design = cl_wd_toolbar_button=>e_design-standard
bind_checked = 'ACTIVE_ELEMENTS.LEGEND_IS_ACTIVE'
image_source = 'ICON_QUESTION'
checked_image_source = 'ICON_QUESTION'
enabled = 'X'
hotkey = cl_wd_toolbar_button=>e_hotkey-none
id = 'BTN_LEGEND'
image_first = 'X'
on_toggle = 'EVT_TOGGLE_LEGEND'
text_direction = cl_wd_toolbar_button=>e_text_direction-inherit
visible = cl_wd_toolbar_button=>e_visible-visible
RECEIVING
control = lo_btn_legend ).
lo_toolbar->add_toolbar_item( the_toolbar_item = lo_btn_legend ).

*__ INP_Last_Change _________________________________________________


lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =
'ZHQP_WD/LAST_CHANGE' ).
cl_wd_toolbar_input_field=>new_toolbar_input_field(
EXPORTING
alignment = cl_wd_toolbar_input_field=>e_alignment-auto
bind_value = 'VIEW_ELEMENTS.LAST_CHANGE'
context_menu_behaviour =
cl_wd_toolbar_input_field=>e_context_menu_behaviour-inherit
enabled = 'X'
id = 'INP_LASTCHANGE'
ime_mode = cl_wd_toolbar_input_field=>e_ime_mode-auto
label_text = lv_otr_text
read_only = 'X'
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_last_change
RECEIVING
control = lo_inp_last_change ).
lo_toolbar->add_toolbar_right_item( the_toolbar_right_item =
lo_inp_last_change ).
*====================================================================
* Toolbar setzen
*====================================================================
lo_table->set_toolbar( the_toolbar = lo_toolbar ).
*====================================================================
* Popin LEGENDE
*====================================================================
* Das Einplanungsfenster Matrix/Maschine hat 9 Elemente, diese werden
* auf 5 Spalnen aufgeteilt
*====================================================================
* Definition der Transparent Container
*====================================================================
*__ Root Popin Transparent Container ________________________________
cl_wd_transparent_container=>new_transparent_container(
EXPORTING
context_menu_behaviour =
cl_wd_transparent_container=>e_context_menu_behaviour-inherit
enabled = 'X'
id = 'TCO_ROOT'
is_layout_container = 'X'
scrolling_mode = cl_wd_transparent_container=>e_scrolling_mode-none
scroll_left = '0'
scroll_top = '0'
visible = cl_wd_transparent_container=>e_visible-visible
RECEIVING
control = tco_root_popin
).
cl_wd_matrix_layout=>new_matrix_layout( tco_root_popin ).

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

lo_popin->set_content( the_content = tco_root_popin ).


lo_toolbar->set_toolbar_popin( the_toolbar_popin = 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 ).

lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =


'ZHQP_WD/WITHOUT_APPOINTM_CUR_Y' ).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_WO_APPOINTM_ACT'
bind_semantics = 'COLORS.EPF_WO_APPOINTM_ACT_BACKGROUND'
id = 'LI_GOTAJ'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_gotaj
).
lo_legend->add_item( the_item = lo_li_gotaj ).

lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =


'ZHQP_WD/WITHOUT_APPOINTM_NEXT_Y' ).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_WO_APPOINTM_NXT'
bind_semantics = 'COLORS.EPF_WO_APPOINTM_NXT_BACKGROUND'
id = 'LI_GOTFJ'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_gotfj
).
lo_legend->add_item( the_item = lo_li_gotfj ).
lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =
'ZHQP_WD/WITH_APPOINTM' ).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_W_APPOINTM'
bind_semantics = 'COLORS.EPF_W_APPOINTM_BACKGROUND'
id = 'LI_GMT'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_gmt
).
lo_legend->add_item( the_item = lo_li_gmt ).

lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =


'ZHQP_WD/DELETE_APPOINTM' ).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_DELETE'
bind_semantics = 'COLORS.EPF_DELETE_BACKGROUND'
id = 'LI_LOE'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_loe
).
lo_legend->add_item( the_item = lo_li_loe ).

lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =


'ZHQP_WD/INVALID_APPOINTM_MAAL' ).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_INVALID'
bind_semantics = 'COLORS.EPF_INVALID_BACKGROUND'
id = 'LI_UNG'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_ung
).
lo_legend->add_item( the_item = lo_li_ung ).

lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =


'ZHQP_WD/UNSCHEDULED_APPOINTM' ).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_UNSCHEDULED'
bind_semantics = 'COLORS.EPF_UNSCHEDULED_BACKGROUND'
id = 'LI_NG'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_ng
).
lo_legend->add_item( the_item = lo_li_ng ).
lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias =
'ZHQP_WD/TRAINING_DONE' ).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_TRAINING_T'
bind_semantics = 'COLORS.EPF_T_QUALI_BACKGROUND'
id = 'LI_TS'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_ts
).
lo_legend->add_item( the_item = lo_li_ts ).

lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias = 'ZHQP_WD/CM_LEVEL1'


).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_EPF_LEVEL1'
bind_semantics = 'COLORS.EPF_LEVEL1_BACKGROUND'
id = 'LI_LVL1'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_lvl1
).
lo_legend->add_item( the_item = lo_li_lvl1 ).

lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias = 'ZHQP_WD/CM_LEVEL2'


).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_EPF_LEVEL2'
bind_semantics = 'COLORS.EPF_LEVEL2_BACKGROUND'
id = 'LI_LVL2'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_lvl2
).
lo_legend->add_item( the_item = lo_li_lvl2 ).

lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias = 'ZHQP_WD/CM_LEVEL3'


).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_EPF_LEVEL3'
bind_semantics = 'COLORS.EPF_LEVEL3_BACKGROUND'
id = 'LI_LVL3'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_lvl3
).
lo_legend->add_item( the_item = lo_li_lvl3 ).

lv_otr_text = cl_wd_utilities=>get_otr_text_by_alias( alias = 'ZHQP_WD/CM_LEVEL4'


).
cl_wd_legend_item=>new_legend_item(
EXPORTING
bind_image_source = 'ICONS.ICO_EPF_LEVEL4'
bind_semantics = 'COLORS.EPF_LEVEL4_BACKGROUND'
id = 'LI_LVL4'
text = lv_otr_text
text_direction = cl_wd_legend_item=>e_text_direction-inherit
visible = 'X'
RECEIVING
control = lo_li_lvl4
).
lo_legend->add_item( the_item = lo_li_lvl4 ).
cl_wd_matrix_head_data=>new_matrix_head_data( lo_legend ).
tco_root_popin->add_child( the_child = lo_legend ).

*====================================================================
* 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.

*__ Customizing Layout holen __________________________ CAD20150807 _

DATA ls_cu_layout TYPE zhqp_cu_layout.


DATA lo_comp TYPE REF TO if_wd_component.
DATA lo_comp_info TYPE REF TO if_wd_rr_component.
DATA lv_comp_name_str TYPE string.
DATA lv_comp_name_chr TYPE wdy_component_name.
DATA lv_view_name_str TYPE string.
DATA lv_view_name_chr TYPE wdy_view_name.
DATA lv_visible_row_count TYPE i.

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

CALL METHOD wd_assist->set_c_tablesize


EXPORTING
io_view = wd_this->mo_view_vmain
io_c_table = lo_table
* it_tablesize = lt_tablesize
iv_small_rows = lv_visible_row_count
iv_middle_rows = lv_visible_row_count
iv_large_rows = lv_visible_row_count.

ELSE.

CALL METHOD wd_assist->set_c_tablesize


EXPORTING
io_view = wd_this->mo_view_vmain
io_c_table = lo_table
* it_tablesize = lt_tablesize
.

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.

lo_table_column ?= lo_table->get_column( id = lv_column_id ).


lo_table_column->set_visible( cl_wd_c_table_column=>e_visible-none ).

ENDDO.

" Gesamte Gruppe Spalte ausblenden


lv_temp_count_string = lv_temp_count + zcl_hqp_constants=>mc_fix_visible_columns
+ 1.
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_table_column->set_visible( cl_wd_c_table_column=>e_visible-none ).

" Spalte Zeit ausblenden


IF ls_qmatrix_settings-show_hours = abap_false.
lv_temp_count_string = lv_temp_count +
zcl_hqp_constants=>mc_matrix_position_hours.
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_table_column->set_visible( cl_wd_c_table_column=>e_visible-none ).
ENDIF.

" Spalte Kosten ausblenden


IF ls_qmatrix_settings-show_costs = abap_false.
lv_temp_count_string = lv_temp_count +
zcl_hqp_constants=>mc_matrix_position_costs.
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_table_column->set_visible( cl_wd_c_table_column=>e_visible-none ).
ENDIF.

" Spalte Qualifizierungsart ausblenden


IF ls_qmatrix_settings-show_quali_type = abap_false.
lv_temp_count_string = lv_temp_count +
zcl_hqp_constants=>mc_matrix_position_quali.
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_table_column->set_visible( cl_wd_c_table_column=>e_visible-none ).
ENDIF.
*====================================================================
* Cell Variante f�r Anforderungsgruppen-Collapse-Button
*====================================================================
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.

*__ Spaltenreferenz holen ___________________________________________


lo_table_column ?= lo_table->get_column( id = lv_column_id ).

*__ Attribute SELECTED CELL VARIANTE binden _________________________


lo_table_column->bind_selected_cell_variant( path = 'VIS_MATRIX.IS_GROUP' ).

*__ Standard Tabellen Zelle mit VARIANT_KEY definieren ______________


lo_standard_cell =
cl_wd_c_table_standard_cell=>new_c_table_standard_cell( variant_key = 'X').

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

*__ Button als neuen Cell Editor definieren ____________________


lo_standard_cell->set_editor( the_editor = lo_button ).

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_standard_cell->set_h_align( value = cl_wd_table_column=>e_h_align-center ).
*__ CELL_VARIANT der Spalte hinzuf�gen ______________________________
lo_table_column->add_cell_variant( the_cell_variant = lo_standard_cell ).
" ENDIF.
*====================================================================
* Cell Variante f�r Teilgruppen-Collapse-Button
*====================================================================
lv_temp_count =
zcl_hqp_constants=>mc_fix_invisible_columns
+ ( zcl_hqp_constants=>mc_matrix_empl_attr_count * wd_this->mv_employee_count )
+ ( zcl_hqp_constants=>mc_matrix_partgrp_attr_count * wd_this-
>mv_partgroup_count )
+ ( zcl_hqp_constants=>mc_matrix_sep_line_attr_count * wd_this-
>mv_separator_line_count )
+ zcl_hqp_constants=>mc_fix_visible_columns.

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.

*__ Spaltenreferenz holen ___________________________________________


lo_table_column ?= lo_table->get_column( id = lv_column_id ).

CONCATENATE 'VIS_MATRIX.VA_C' lv_temp_count_string INTO lv_attribute_path.


CONDENSE lv_attribute_path.

*__ Attribute SELECTED CELL VARIANTE binden _________________________


lo_table_column->bind_selected_cell_variant( path = lv_attribute_path ).

*__ String f�r bind_text zusammensetzen _____________________________


CONCATENATE 'VIS_MATRIX.BTN_C' lv_temp_count_string INTO
lv_attribute_path_btn_txt.
CONDENSE lv_attribute_path_btn_txt.

*__ Button ID definieren _____________________________


CONCATENATE 'BTN_C' lv_temp_count_string INTO lv_btn_id.
CONDENSE lv_btn_id.
*__ Standard Tabellen Zelle mit VARIANT_KEY definieren ______________
lo_standard_cell =
cl_wd_c_table_standard_cell=>new_c_table_standard_cell( variant_key = 'PARTGRP').

" 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 ).

*__ Button als neuen Cell Editor definieren ____________________


lo_standard_cell->set_editor( the_editor = lo_button ).

CONCATENATE 'VIS_MATRIX.CB_C' lv_temp_count_string INTO lv_attribute_path.


lo_table_column->bind_cell_design( path = lv_attribute_path ).
lo_table_column->set_h_align( value = cl_wd_c_table_column=>e_h_align-center ).
* lo_standard_cell->bind_cell_design( path = lv_attribute_path ).
* lo_standard_cell->set_h_align( value = cl_wd_table_column=>e_h_align-center ).

*__ CELL_VARIANT der Spalte hinzuf�gen ______________________________


lo_table_column->add_cell_variant( the_cell_variant = lo_standard_cell ).

LOOP AT lt_employee INTO ls_employee.


* IF ls_employee-report_type = '010' AND lv_separator_line_counter < wd_this-
>mv_separator_line_count. " report_type 110 = Trennzeile
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_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.

*__ Spaltenreferenz holen ___________________________________________


lo_table_column ?= lo_table->get_column( id = lv_column_id ).

*__ Attribute SELECTED CELL VARIANTE binden _________________________


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

*__ String f�r bind_text zusammensetzen _____________________________


CONCATENATE 'VIS_MATRIX.BTN_C' lv_temp_count_string INTO
lv_attribute_path_btn_txt.
CONDENSE lv_attribute_path_btn_txt.

*__ Button ID definieren _____________________________


CONCATENATE 'BTN_C' lv_temp_count_string INTO lv_btn_id.
CONDENSE lv_btn_id.
*__ Standard Tabellen Zelle mit VARIANT_KEY definieren ______________
lo_standard_cell =
cl_wd_c_table_standard_cell=>new_c_table_standard_cell( variant_key = 'SEPL').

" 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 ).

*__ Button als neuen Cell Editor definieren ____________________


lo_standard_cell->set_editor( the_editor = lo_button ).

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 ).
*__ CELL_VARIANT der Spalte hinzuf�gen ______________________________
lo_table_column->add_cell_variant( the_cell_variant = lo_standard_cell ).
ELSE.
* IF ls_employee-partgroup_id = ls_partgroup-partgroup_id.
IF ls_employee-partgroup_id = ls_partgroup-partgroup_id AND ls_employee-
report_type <> '010'.
lv_temp_count = lv_temp_count + 1.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
*====================================================================
* fixe mindest Breite
*====================================================================
lo_table->set_width( value = '100%' ).
*====================================================================
* fixe Spaltenbreite-Breite und fixen Bereich definieren
*====================================================================
lv_temp_count = 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 ).
lv_loop_counter = 0.

*__ Anzahl Scrollbarer Spalten ______________________________


DO zcl_hqp_constants=>mc_fix_visible_columns + wd_this->mv_employee_count +
wd_this->mv_separator_line_count + wd_this->mv_partgroup_count + wd_this-
>mv_additional_columns TIMES.
lv_loop_counter = lv_loop_counter + 1.
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 ).

CASE lv_loop_counter.

*__ Breite der fixen Spalten ______________________________


WHEN '1'.
lo_table_column->set_width( zcl_hqp_constants=>mc_matrix_width_collapse_btn
).
lo_table_column->set_fixed_position( cl_wd_table_column=>e_fixed_position-
left ).

*__ 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 ).
WHEN '2'.
lo_table_column-
>set_width( zcl_hqp_constants=>mc_matrix_width_description ).
lo_table_column->set_fixed_position( cl_wd_table_column=>e_fixed_position-
left ).

*__ 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 ).
WHEN '3'.
lo_table_column->set_width( zcl_hqp_constants=>mc_matrix_width_hours ).
lo_table_column->set_fixed_position( cl_wd_table_column=>e_fixed_position-
left ).

*__ 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 ).
WHEN '4'.
lo_table_column->set_width( zcl_hqp_constants=>mc_matrix_width_costs ).
lo_table_column->set_fixed_position( cl_wd_table_column=>e_fixed_position-
left ).

*__ 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 ).
WHEN '5'.
lo_table_column-
>set_width( zcl_hqp_constants=>mc_matrix_width_qualification ).
lo_table_column->set_fixed_position( cl_wd_table_column=>e_fixed_position-
left ).

*__ 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 ).
WHEN '6'.
lo_table_column->set_width( zcl_hqp_constants=>mc_matrix_width_desired ).
lo_table_column->set_fixed_position( cl_wd_table_column=>e_fixed_position-
left ).

*__ 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 ).
WHEN '7'.
lo_table_column->set_width( zcl_hqp_constants=>mc_matrix_width_actual ).
lo_table_column->set_fixed_position( cl_wd_table_column=>e_fixed_position-
left ).

*__ 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 ).
WHEN '8'.
lo_table_column->set_width( zcl_hqp_constants=>mc_matrix_width_planned ).
lo_table_column->set_fixed_position( cl_wd_table_column=>e_fixed_position-
left ).

*__ 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 ).
* WHEN '9'.
** lo_table_column->set_width( zcl_hqp_constants=>mc_matrix_width_partgrp ).
*
**__ Breite der Mitarbeiter Spalten ______________________________
WHEN OTHERS.
IF ls_active_elements-date_sign_is_active = abap_true.
lo_table_column-
>set_width( zcl_hqp_constants=>mc_matrix_width_empl_dateview ).
ELSE.
lo_table_column-
>set_width( zcl_hqp_constants=>mc_matrix_width_employee ).
ENDIF.
ENDCASE.
ENDDO.
*====================================================================
* Attribute der Cell-Editoren binden
*====================================================================
lv_temp_count = 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 ).

lv_fix_columns = lv_temp_count + zcl_hqp_constants=>mc_fix_visible_columns. "


temp_count + 8 fixe Spalten

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

CONCATENATE 'PGRP' lv_universal_string INTO lv_comp_name.


CONDENSE lv_comp_name.

CONCATENATE 'FIXED_HEADER.MATRIX_HEADER_02.' lv_comp_name INTO


lv_attribute_path.
CONDENSE lv_attribute_path.

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.

CONCATENATE 'VIS_MATRIX_C' lv_universal_string INTO lv_column_id.


CONDENSE lv_column_id.
lo_table_column ?= lo_table->get_column( id = lv_column_id ).

lo_caption = cl_wd_caption=>new_caption(
bind_text = lv_attribute_path
bind_tooltip = lv_attribute_path_tot ).

lo_table_column->set_header( the_header = lo_caption ).

lo_table_column->bind_cell_design( path = lv_attribute_path ).


* lo_table_column->set_h_align( value = cl_wd_c_table_column=>e_h_align-
center ).
* lo_standard_cell->bind_cell_design( path = lv_attribute_path ).
* lo_standard_cell->set_h_align( value = cl_wd_table_column=>e_h_align-center ).

*__ CELL_VARIANT der Spalte hinzuf�gen ______________________________


lo_table_column->add_cell_variant( the_cell_variant = lo_standard_cell ).

********* ZELL Eigenschaften


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_universal_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_universal_string INTO lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_h_align( path = lv_attribute_path ).
*__ Text ___________________________________________
CONCATENATE 'VIS_MATRIX.CT_C' lv_universal_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_universal_string INTO lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_cell_design( path = lv_attribute_path ).

*__ CELL-Variant __________________________________________


CONCATENATE 'VIS_MATRIX.VA_C' lv_universal_string INTO lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_selected_cell_variant( path = lv_attribute_path ).

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

CONCATENATE 'SEPL' lv_universal_string INTO lv_comp_name.


CONDENSE lv_comp_name.

CONCATENATE 'FIXED_HEADER.MATRIX_HEADER_02.' lv_comp_name INTO


lv_attribute_path.
CONDENSE lv_attribute_path.

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.

CONCATENATE 'VIS_MATRIX_C' lv_universal_string INTO lv_column_id.


CONDENSE lv_column_id.

lo_table_column ?= lo_table->get_column( id = lv_column_id ).

lo_caption = cl_wd_caption=>new_caption( bind_text = lv_attribute_path


bind_tooltip =
lv_attribute_path_tot ).

lo_table_column->set_header( the_header = lo_caption ).

lo_cell_editor = lo_table_column->get_table_cell_editor( ).
lo_textview ?= lo_cell_editor.

lo_table_column->bind_cell_design( path = lv_attribute_path ).


* lo_table_column->set_h_align( value = cl_wd_c_table_column=>e_h_align-
center ).
* lo_standard_cell->bind_cell_design( path = lv_attribute_path ).
* lo_standard_cell->set_h_align( value = cl_wd_table_column=>e_h_align-center ).

*__ CELL_VARIANT der Spalte hinzuf�gen ______________________________


lo_table_column->add_cell_variant( the_cell_variant = lo_standard_cell ).

*__ DESIGN ___________________________________________


CONCATENATE 'VIS_MATRIX.CD_C' lv_universal_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_universal_string INTO lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_h_align( path = lv_attribute_path ).
*__ Text ___________________________________________
CONCATENATE 'VIS_MATRIX.CT_C' lv_universal_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_universal_string INTO lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_cell_design( path = lv_attribute_path ).

*__ CELL-Variant __________________________________________


CONCATENATE 'VIS_MATRIX.VA_C' lv_universal_string INTO lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_selected_cell_variant( path = lv_attribute_path ).
ELSE.
" Mitarbeiter
IF ls_employee-partgroup_id = ls_partgroup-partgroup_id AND ls_employee-
report_type <> '010'.

lv_employee_counter = lv_employee_counter + 1.
lv_universal_string = lv_employee_counter.

CONCATENATE 'EMPL' lv_universal_string INTO lv_comp_name.


CONDENSE lv_comp_name.

CONCATENATE 'FIXED_HEADER.MATRIX_HEADER_02.' lv_comp_name INTO


lv_attribute_path.
CONDENSE lv_attribute_path.

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.

CONCATENATE 'VIS_MATRIX_C' lv_universal_string INTO lv_column_id.


CONDENSE lv_column_id.
lo_table_column ?= lo_table->get_column( id = lv_column_id ).

lo_caption = cl_wd_caption=>new_caption( bind_text = lv_attribute_path


bind_tooltip =
lv_attribute_path_tot ).

lo_table_column->set_header( the_header = lo_caption ).

lo_cell_editor = lo_table_column->get_table_cell_editor( ).
lo_textview ?= lo_cell_editor.

*__ DESIGN ___________________________________________


CONCATENATE 'VIS_MATRIX.CD_C' lv_universal_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_universal_string INTO lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_h_align( path = lv_attribute_path ).
*__ Text ___________________________________________
CONCATENATE 'VIS_MATRIX.CT_C' lv_universal_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_universal_string INTO lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_cell_design( path = lv_attribute_path ).

*__ CELL-Variant __________________________________________


CONCATENATE 'VIS_MATRIX.VA_C' lv_universal_string INTO lv_attribute_path.
CONDENSE lv_attribute_path.
lo_table_column->bind_selected_cell_variant( path = lv_attribute_path ).

" 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 ).

*__ Tooltip der Mitarbeiter ____________________


CONCATENATE 'VIS_MATRIX.TOT_C' lv_universal_string INTO
lv_attribute_path_tot.
CONDENSE lv_attribute_path_tot.
lo_textview->bind_tooltip( path = lv_attribute_path_tot ).
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
*====================================================================
* Tooltips der Anforderungsgruppen einbinden
*====================================================================
lv_temp_count = 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 ) + 2. " Beschreibungsspalte

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.

lo_textview->bind_tooltip( path = 'VIS_MATRIX.REQ_TOOLT' ).


* lo_table->set_style_class_name( value = 'matrixcuststyle' ).

endmethod.

You might also like