0% found this document useful (0 votes)
42 views27 pages

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
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views27 pages

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
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

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 = '[Link]'
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