DEMO:ALV 行、列、单元格颜色控制

网友投稿 258 2022-09-25

DEMO:ALV 行、列、单元格颜色控制

搜东西偶然看到一个不错的ALV demo

效果

代码

*&---------------------------------------------------------------------**& Report ZLM_010*&---------------------------------------------------------------------**&           matnr         LIKE mara-matnr,           matkl         LIKE mara-matkl,           counter(4)    TYPE n,           free_text(15) TYPE c,           color_line(4) TYPE c,           " Line color           color_cell    TYPE lvc_t_scol,  " Cell color         END OF ty_mara.* StructuresDATA  : wa_mara     TYPE ty_mara,         wa_fieldcat TYPE lvc_s_fcat,         is_layout   TYPE lvc_s_layo,         wa_color    TYPE lvc_s_scol.* Internal tableDATA : it_mara     TYPE STANDARD TABLE OF ty_mara,        it_fieldcat TYPE STANDARD TABLE OF lvc_s_fcat,        it_color    TYPE TABLE          OF lvc_s_scol.* VariablesDATA : okcode              LIKE sy-ucomm,        w_alv_grid          TYPE REF TO cl_gui_alv_grid,        w_docking_container TYPE REF TO cl_gui_docking_container.PARAMETERS : p_column AS CHECKBOX,              p_line   AS CHECKBOX,              p_cell   AS CHECKBOX.AT SELECTION-SCREEN OUTPUT.   PERFORM get_data.   PERFORM fill_catalog.   IF w_docking_container IS INITIAL.     PERFORM create_objects.   ENDIF.*&--------------------------------------------------------------**&      Form  create_objects*&--------------------------------------------------------------*FORM create_objects.   CREATE OBJECT w_docking_container     EXPORTING       ratio                       = 60     EXCEPTIONS       cntl_error                  = 1       cntl_system_error           = 2       create_error                = 3       lifetime_error              = 4       lifetime_dynpro_dynpro_link = 5       OTHERS                      = 6.   CREATE OBJECT w_alv_grid     EXPORTING       i_parent = w_docking_container.* Field that identify color line in internal table   MOVE 'COLOR_LINE' TO is_layout-info_fname.* Field that identify cell color in inetrnal table   MOVE 'COLOR_CELL' TO is_layout-ctab_fname.   CALL METHOD w_alv_grid->set_table_for_first_display     EXPORTING       is_layout                     = is_layout     CHANGING       it_outtab                     = it_mara       it_fieldcatalog               = it_fieldcat     EXCEPTIONS       invalid_parameter_combination = 1       program_error                 = 2       too_many_lines                = 3       OTHERS                        = 4.ENDFORM.*&--------------------------------------------------------------**&      Form  get_data*&--------------------------------------------------------------*FORM get_data.   SELECT * FROM mara UP TO 5 ROWS.   CLEAR : wa_mara-color_line, wa_mara-color_cell.   MOVE-CORRESPONDING mara TO wa_mara.   ADD 1                   TO wa_mara-counter.   MOVE 'Blabla'           TO wa_mara-free_text.   IF wa_mara-counter = '0002'   AND p_line = 'X'.* Color line     MOVE 'C410' TO wa_mara-color_line.   ELSEIF wa_mara-counter = '0004'   AND p_cell = 'X'.* Color cell     MOVE 'FREE_TEXT' TO wa_color-fname.     MOVE '6'         TO wa_color-color-col.     MOVE '1'         TO wa_color-color-int.     MOVE '1'         TO wa_color-color-inv.     APPEND wa_color TO it_color.     wa_mara-color_cell[] = it_color[].   ENDIF.   APPEND wa_mara TO it_mara.ENDSELECT.ENDFORM.*&--------------------------------------------------------------**&      Form  fill_catalog*&--------------------------------------------------------------*FORM fill_catalog.****************************************************************** Colour code :                                                 ** Colour is a 4-char field where :                              **              - 1st char = C (color property)                  **              - 2nd char = color code (from 0 to 7)            **                                  0 = background color         **                                  1 = blue                     **                                  2 = gray                     **                                  3 = yellow                   **                                  4 = blue/gray                **                                  5 = green                    **                                  6 = red                      **                                  7 = orange                   **              - 3rd char = intensified (0=off, 1=on)           **              - 4th char = inverse display (0=off, 1=on)       **                                                               ** Colour overwriting priority :                                 **   1. Line                                                     **   2. Cell                                                     **   3. Column                                                   ******************************************************************   DATA : w_position TYPE i VALUE '1'.   CLEAR wa_fieldcat.   MOVE w_position TO wa_fieldcat-col_pos.   MOVE 'MATNR'    TO wa_fieldcat-fieldname.   MOVE 'MARA'     TO wa_fieldcat-ref_table.   MOVE 'MATNR'    TO wa_fieldcat-ref_field.   APPEND wa_fieldcat TO it_fieldcat.   ADD 1 TO w_position.   CLEAR wa_fieldcat.   MOVE w_position TO wa_fieldcat-col_pos.   MOVE 'MATKL'    TO wa_fieldcat-fieldname.   MOVE 'MARA'     TO wa_fieldcat-ref_table.   MOVE 'MATKL'    TO wa_fieldcat-ref_field.* Color column   IF p_column = 'X'.     MOVE 'C610'     TO wa_fieldcat-emphasize.   ENDIF.   APPEND wa_fieldcat TO it_fieldcat.   ADD 1 TO w_position.   CLEAR wa_fieldcat.   MOVE w_position TO wa_fieldcat-col_pos.   MOVE 'COUNTER'  TO wa_fieldcat-fieldname.   MOVE 'N'        TO wa_fieldcat-inttype.   MOVE '4'        TO wa_fieldcat-intlen.   MOVE 'Counter'  TO wa_fieldcat-coltext.   APPEND wa_fieldcat TO it_fieldcat.   ADD 1 TO w_position.   CLEAR wa_fieldcat.   MOVE w_position  TO wa_fieldcat-col_pos.   MOVE 'FREE_TEXT' TO wa_fieldcat-fieldname.   MOVE 'C'         TO wa_fieldcat-inttype.   MOVE '20'        TO wa_fieldcat-intlen.   MOVE 'Text'      TO wa_fieldcat-coltext.   APPEND wa_fieldcat TO it_fieldcat.ENDFORM.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:华为云携手鸿蒙,培养创新型开发者
下一篇:万达商管全面实施“轻资产”战略!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~