Sie sind auf Seite 1von 5

Individual cell coloring in dynamic alv

Added by A. de Smidt, last edited by A. de Smidt on Jun 09, 2008 (view change)

Since one of my requirments was to make an dynamic alv with the use of cellcoloring I ran into the problem of using field symbols vs all the other examples of coloring cells with static structures for complete code of dynamic tables I can refer to this wiki Building dynamic ALV here I have bolded up the additional fields for making a dynamic alv work together with coloring cells.

DATA: new_table TYPE REF TO data, new_line TYPE REF TO data, is_lvc_cat TYPE lvc_s_fcat, it_lvc_cat TYPE lvc_t_fcat, is_fieldcat TYPE slis_fieldcat_alv. DATA: it_fieldcat TYPE slis_t_fieldcat_alv. * define variables for color content *DATA: col_rec TYPE lvc_s_scol.*** fieldsymbols voor dynamische ALV tabel FIELD-SYMBOLS: <ta_output> TYPE table,* <ta_color> TYPE table, <l_line> TYPE ANY, <l_field> TYPE ANY, <fs> TYPE ty_pernrs FORM build_fieldcat. REFRESH it_lvc_cat. REFRESH it_fieldcat. FREE is_lvc_cat. FREE is_fieldcat. h_repid = sy-repid. *slayout-box_fieldname = 'CHK'. slayout-colwidth_optimize = 'X'. * add the name of the color field to the layout slayout-coltab_fieldname = 'TCOLOR'.

* static fieldsis_lvc_cat-fieldname = 'VALIDITYDATE'. is_lvc_cat-ref_field = 'VALIDITYDATE'. is_lvc_cat-ref_table = 'BAPI7013_1'. is_lvc_cat-scrtext_s = is_lvc_cat-scrtext_m = is_lvc_cat-scrtext_l = 'Datum'. APPEND is_lvc_cat TO it_lvc_cat. is_fieldcat-fieldname = 'VALIDITYDATE'. is_fieldcat-ref_fieldname = 'VALIDITYDATE'. is_fieldcat-ref_tabname = 'BAPI7013_1'. is_fieldcat-outputlen = 10. is_fieldcat-seltext_s = is_fieldcat-seltext_m = is_fieldcat-seltext_l = 'Datum'. APPEND is_fieldcat TO it_fieldcat. * dynamic fieldsLOOP AT ta_pernrs INTO wa_pernrs. RITE wa_pernrs-pernr TO h_ri_pernr. is_lvc_cat-fieldname = wa_pernrs-pernr. is_lvc_cat-ref_field = 'massn'. is_lvc_cat-ref_table = 'PERNR'. is_lvc_cat-just = 'C'. CONCATENATE it_0002-inits it_0002-nachn(1) INTO is_lvc_cat-scrtext_s SEPARATED BY space. CONCATENATE it_0002-inits it_0002-nachn INTO is_lvc_cat-scrtext_m SEPARATED BY space. CONCATENATE it_0002-inits it_0002-nachn INTO is_lvc_cat-scrtext_l SEPARATED BY space. APPEND is_lvc_cat TO it_lvc_cat. is_fieldcat-fieldname = wa_pernrs-pernr. is_fieldcat-ref_fieldname = wa_pernrs-pernr. is_fieldcat-ref_tabname = pernr-massn. is_fieldcat-outputlen = 10. is_fieldcat-datatype = pernr-massn. is_fieldcat-just = 'C'. CONCATENATE it_0002-inits it_0002-nachn(1) INTO is_fieldcat-seltext_s SEPARATED BY space. CONCATENATE it_0002-inits it_0002-nachn INTO is_fieldcat-seltext_m SEPARATED BY space. CONCATENATE it_0002-inits it_0002-nachn INTO is_fieldcat-seltext_l SEPARATED BY space.

CONCATENATE it_0002-inits it_0002-nachn INTO is_fieldcat-text_fieldname SEPARATED BY space. CONCATENATE it_0002-inits it_0002-nachn INTO is_fieldcat-reptext_ddic SEPARATED BY space. APPEND is_fieldcat TO it_fieldcat. ENDLOOP. * most important, define a field in the fieldcatalog which refers to a field op type LVC_T_SCOL is_lvc_cat-tech = 'X'. is_lvc_cat-fieldname = 'TCOLOR'. is_lvc_cat-ref_field = 'SCOL'. is_lvc_cat-ref_table = '/BEV2/ED_DETAILS_MATBEL_ALV'. is_lvc_cat-scrtext_s = is_lvc_cat-scrtext_m = is_lvc_cat-scrtext_l = 'kleur'. APPEND is_lvc_cat TO it_lvc_cat. * Create a new dynamic Table CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = it_lvc_cat IMPORTING *ep_table = ta_output.*** Create a new Line with the same structure of the table. ASSIGN ta_output->* TO <ta_output>.* CREATE DATA new_line LIKE LINE OF <ta_output>. ASSIGN new_line->* TO <l_line>. * example data where the dynamic table has now personel numbers as fieldnames. the fieldname in this case has to be moved to a character field first before assigning LOOP AT it_timeoverview WHERE validitydate = h_datum. MOVE it_timeoverview-employeenumber TO h_formfield_pernr. ASSIGN COMPONENT h_formfield_pernr OF STRUCTURE <l_line> TO <l_field>. <l_field> = '-'. * add the color to the field name CLEAR col_rec. col_rec-fname = h_formfield_pernr. col_rec-color-col = '5' col_rec-color-int = '1' . ASSIGN COMPONENT 'TCOLOR' OF STRUCTURE <l_line> TO <ta_color>. APPEND col_rec TO <ta_color> . "<== Note that this a table within <ta_output>. ENDLOOP. * another field ASSIGN COMPONENT 'STELL' OF STRUCTURE <l_line> TO <l_field>. <l_field> = h_aantal_fte. INSERT <l_line> INTO TABLE <ta_output>.

CLEAR <l_line>. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING* I_INTERFACE_CHECK = ' 'i_bypassing_buffer = 'X'* I_BUFFER_ACTIVE = ' 'i_callback_program = h_repid i_callback_pf_status_set = 'SET_PF_STATUS' i_callback_user_command = 'USER_COMMAND'* I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = is_layout = slayout "add the layout to the alv it_fieldcat = it_fieldcat[]* IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X'i_save = 'A' is_variant = variant* IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * I_HTML_HEIGHT_TOP = * I_HTML_HEIGHT_END = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER =TABLES t_outtab = <ta_output> EXCEPTIONS program_error = 1 OTHERS = 2 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.

Das könnte Ihnen auch gefallen