ALV报表——ALV颜色设置(三)
一、行
用Layout相关属性设置
代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
************************************************************************ * Tables Definitions ************************************************************************ TABLES: marc. ************************************************************************ * Data Definitions 定义数据 ************************************************************************ TYPES: BEGIN OF ty_data, color TYPE char4, "行颜色 matnr TYPE mara-matnr, "物料號碼 maktx TYPE makt-maktx, "物料说明 END OF ty_data. DATA: gt_data TYPE TABLE OF ty_data. DATA: gs_layout TYPE slis_layout_alv, "布局 gt_fieldcat TYPE slis_t_fieldcat_alv. "字段 ************************************************************************ * Includes Module 包含模块 ************************************************************************ ************************************************************************ * Selection Screen 选择屏幕 ************************************************************************ PARAMETERS: p_werks LIKE marc-werks DEFAULT '2000' OBLIGATORY. SELECT-OPTIONS: s_matnr FOR marc-matnr. ************************************************************************ * Initialization 初始化事件 ************************************************************************ INITIALIZATION. ************************************************************************ * At Selection Screen PAI事件 ************************************************************************ AT SELECTION-SCREEN. ************************************************************************ * At Selection Screen Output PBO事件 ************************************************************************ AT SELECTION-SCREEN OUTPUT. ************************************************************************ * Report Format 报表格式 ************************************************************************ TOP-OF-PAGE. END-OF-PAGE. ************************************************************************ * Main Process 主要逻辑 ************************************************************************ START-OF-SELECTION. "获取数据 PERFORM frm_get_data. "显示数据 PERFORM frm_display_data. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form FRM_GET_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_get_data . DATA: ls_data LIKE LINE OF gt_data. SELECT marc~matnr "料号 makt~maktx INTO CORRESPONDING FIELDS OF TABLE gt_data FROM marc INNER JOIN mara ON marc~matnr EQ mara~matnr INNER JOIN makt ON marc~matnr EQ makt~matnr WHERE marc~matnr IN s_matnr "料号 AND marc~werks EQ p_werks "工厂 AND makt~spras = sy-langu. "登录语言 LOOP AT gt_data INTO ls_data. IF sy-tabix MOD 2 = 0. "给偶数行设置颜色 ls_data-color = 'C310'. ENDIF. MODIFY gt_data FROM ls_data. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_DISPLAY_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_display_data . "栏位最适宽度 gs_layout-colwidth_optimize = 'X'. "ALV条纹 gs_layout-zebra = 'X'. "指定内表中的颜色栏位 gs_layout-info_fieldname = 'COLOR'. "构建ALV的栏位 PERFORM frm_create_field. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid "当前程序名 is_layout = gs_layout "Layout it_fieldcat = gt_fieldcat[] "Fieldcat i_save = 'A' TABLES t_outtab = gt_data EXCEPTIONS program_error = 1 OTHERS = 2. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CREATE_FIELD *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_create_field . DATA: ls_fieldcat TYPE slis_fieldcat_alv, lv_count TYPE i. DEFINE fieldcat. ADD 1 TO lv_count. "栏位显示顺序 ls_fieldcat-col_pos = lv_count. "内表栏位 ls_fieldcat-fieldname = &1. "参考栏位 ls_fieldcat-ref_fieldname = &2. "参考表 ls_fieldcat-ref_tabname = &3. "单位 ls_fieldcat-qfieldname = &4. "栏位标题(长文或中等文或短文) ls_fieldcat-seltext_s = ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = &5. "显示长文或中等文或短文 ls_fieldcat-ddictxt = &6. APPEND ls_fieldcat TO gt_fieldcat. CLEAR ls_fieldcat. END-OF-DEFINITION. fieldcat 'MATNR' 'MATNR' 'MARC' '' '' ''. fieldcat 'MAKTX' 'MAKTX' 'MAKT' '' '' ''. ENDFORM.
运行效果:
二、列
用FILEDCAT相关属性设置
代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
************************************************************************ * Type Pools Definitions 定义类型池 ************************************************************************ TYPE-POOLS slis. ************************************************************************ * Tables Definitions ************************************************************************ TABLES: marc. ************************************************************************ * Data Definitions 定义数据 ************************************************************************ TYPES: BEGIN OF ty_data, matnr TYPE mara-matnr, "物料號碼 maktx TYPE makt-maktx, "物料说明 END OF ty_data. DATA: gt_data TYPE TABLE OF ty_data. DATA: gs_layout TYPE slis_layout_alv, "布局 gt_fieldcat TYPE slis_t_fieldcat_alv. "字段 ************************************************************************ * Includes Module 包含模块 ************************************************************************ ************************************************************************ * Selection Screen 选择屏幕 ************************************************************************ PARAMETERS: p_werks LIKE marc-werks DEFAULT '2000' OBLIGATORY. SELECT-OPTIONS: s_matnr FOR marc-matnr. ************************************************************************ * Initialization 初始化事件 ************************************************************************ INITIALIZATION. ************************************************************************ * At Selection Screen PAI事件 ************************************************************************ AT SELECTION-SCREEN. ************************************************************************ * At Selection Screen Output PBO事件 ************************************************************************ AT SELECTION-SCREEN OUTPUT. ************************************************************************ * Report Format 报表格式 ************************************************************************ TOP-OF-PAGE. END-OF-PAGE. ************************************************************************ * Main Process 主要逻辑 ************************************************************************ START-OF-SELECTION. "获取数据 PERFORM frm_get_data. "显示数据 PERFORM frm_display_data. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form FRM_GET_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_get_data . SELECT marc~matnr "料号 makt~maktx INTO CORRESPONDING FIELDS OF TABLE gt_data FROM marc INNER JOIN mara ON marc~matnr EQ mara~matnr INNER JOIN makt ON marc~matnr EQ makt~matnr WHERE marc~matnr IN s_matnr "料号 AND marc~werks EQ p_werks "工厂 AND makt~spras = sy-langu. "登录语言 ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_DISPLAY_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_display_data . "栏位最适宽度 gs_layout-colwidth_optimize = 'X'. "ALV条纹 gs_layout-zebra = 'X'. "构建ALV的栏位 PERFORM frm_create_field. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid "当前程序名 is_layout = gs_layout "Layout it_fieldcat = gt_fieldcat[] "Fieldcat i_save = 'A' TABLES t_outtab = gt_data EXCEPTIONS program_error = 1 OTHERS = 2. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CREATE_FIELD *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_create_field . DATA: ls_fieldcat TYPE slis_fieldcat_alv, lv_count TYPE i. DEFINE fieldcat. ADD 1 TO lv_count. "栏位显示顺序 ls_fieldcat-col_pos = lv_count. "内表栏位 ls_fieldcat-fieldname = &1. "参考栏位 ls_fieldcat-ref_fieldname = &2. "参考表 ls_fieldcat-ref_tabname = &3. "单位 ls_fieldcat-qfieldname = &4. "栏位标题(长文或中等文或短文) ls_fieldcat-seltext_s = ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = &5. "显示长文或中等文或短文 ls_fieldcat-ddictxt = &6. "列颜色 ls_fieldcat-emphasize = &7. APPEND ls_fieldcat TO gt_fieldcat. CLEAR ls_fieldcat. END-OF-DEFINITION. fieldcat 'MATNR' 'MATNR' 'MARC' '' '' '' 'C310'. fieldcat 'MAKTX' 'MAKTX' 'MAKT' '' '' '' ''. ENDFORM.
运行效果:
三、单元格
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
************************************************************************ * Type Pools Definitions 定义类型池 ************************************************************************ TYPE-POOLS slis. ************************************************************************ * Tables Definitions ************************************************************************ TABLES: marc. ************************************************************************ * Data Definitions 定义数据 ************************************************************************ TYPES: BEGIN OF ty_data, color TYPE lvc_t_scol, "单元格颜色 matnr TYPE mara-matnr, "物料號碼 maktx TYPE makt-maktx, "物料说明 END OF ty_data. DATA: gt_data TYPE TABLE OF ty_data. DATA: gs_layout TYPE slis_layout_alv, "布局 gt_fieldcat TYPE slis_t_fieldcat_alv. "字段 ************************************************************************ * Includes Module 包含模块 ************************************************************************ ************************************************************************ * Selection Screen 选择屏幕 ************************************************************************ PARAMETERS: p_werks LIKE marc-werks DEFAULT '2000' OBLIGATORY. SELECT-OPTIONS: s_matnr FOR marc-matnr. ************************************************************************ * Initialization 初始化事件 ************************************************************************ INITIALIZATION. ************************************************************************ * At Selection Screen PAI事件 ************************************************************************ AT SELECTION-SCREEN. ************************************************************************ * At Selection Screen Output PBO事件 ************************************************************************ AT SELECTION-SCREEN OUTPUT. ************************************************************************ * Report Format 报表格式 ************************************************************************ TOP-OF-PAGE. END-OF-PAGE. ************************************************************************ * Main Process 主要逻辑 ************************************************************************ START-OF-SELECTION. "获取数据 PERFORM frm_get_data. "显示数据 PERFORM frm_display_data. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form FRM_GET_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_get_data . DATA: ls_data LIKE LINE OF gt_data, ls_color TYPE lvc_s_scol. "ALV单元格颜色 SELECT marc~matnr "料号 makt~maktx INTO CORRESPONDING FIELDS OF TABLE gt_data FROM marc INNER JOIN mara ON marc~matnr EQ mara~matnr INNER JOIN makt ON marc~matnr EQ makt~matnr WHERE marc~matnr IN s_matnr "料号 AND marc~werks EQ p_werks "工厂 AND makt~spras = sy-langu. "登录语言 LOOP AT gt_data INTO ls_data. "给物料偶数列设置颜色 IF sy-tabix MOD 2 = 0. ls_color-fname = 'MATNR'. ls_color-color-col = 6. ls_color-color-int = 1. ls_color-color-inv = 0. APPEND ls_color TO ls_data-color. CLEAR ls_color. ELSE. "给物料说明奇数列设置颜色 ls_color-fname = 'MAKTX'. ls_color-color-col = 5. ls_color-color-int = 1. ls_color-color-inv = 0. APPEND ls_color TO ls_data-color. CLEAR ls_color. ENDIF. MODIFY gt_data FROM ls_data. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_DISPLAY_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_display_data . "栏位最适宽度 gs_layout-colwidth_optimize = 'X'. "ALV条纹 gs_layout-zebra = 'X'. "指定内表单元格颜色栏位 gs_layout-coltab_fieldname = 'COLOR'. "构建ALV的栏位 PERFORM frm_create_field. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid "当前程序名 is_layout = gs_layout "Layout it_fieldcat = gt_fieldcat[] "Fieldcat i_save = 'A' TABLES t_outtab = gt_data EXCEPTIONS program_error = 1 OTHERS = 2. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CREATE_FIELD *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_create_field . DATA: ls_fieldcat TYPE slis_fieldcat_alv, lv_count TYPE i. DEFINE fieldcat. ADD 1 TO lv_count. "栏位显示顺序 ls_fieldcat-col_pos = lv_count. "内表栏位 ls_fieldcat-fieldname = &1. "参考栏位 ls_fieldcat-ref_fieldname = &2. "参考表 ls_fieldcat-ref_tabname = &3. "单位 ls_fieldcat-qfieldname = &4. "栏位标题(长文或中等文或短文) ls_fieldcat-seltext_s = ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = &5. "显示长文或中等文或短文 ls_fieldcat-ddictxt = &6. APPEND ls_fieldcat TO gt_fieldcat. CLEAR ls_fieldcat. END-OF-DEFINITION. fieldcat 'MATNR' 'MATNR' 'MARC' '' '' ''. fieldcat 'MAKTX' 'MAKTX' 'MAKT' '' '' ''. ENDFORM.
运行效果:
四:附ALV的颜色代码
落霞与孤鹜齐飞,秋水共长天一色