首页 > 其他 > 详细

ALV报表的颜色设计(行、列、单元格)

时间:2019-12-03 16:29:00      阅读:78      评论:0      收藏:0      [点我收藏+]

列颜色:通过字段目录的强调字段FIELDCAT实现

行颜色:通过LAYOUT实现,给显示内表添加一个字段储存它的颜色

单元格颜色:通过LAYOUT实现,给显示内表添加一个内表存储颜色(内表类型:LVC_T_SCOL)

单元格颜色的设置与行颜色设计基本一致

1. 在构成ALV数据的内表中,添加一个内表 CellColor,用来记录颜色代码,需要设置颜色的字段名
    CellColor的结构:FNAME        ALV 控制: 内部表字段的字段名称         
                    COLOR        ALV 控制: 颜色代码     
         COLOR是一个结构:
               COL    ALV 控制: 颜色 ;
               INT    ALV 控制: 强化   1/0;
               INV    ALV 控制: 相反    1/0    设置颜色是前景,或者是背景         
    NOKEYCOL  ALV 控制: 覆盖码颜色
2. 循环内表,设置颜色代码

REPORT Z1113.

TYPES:BEGIN OF TYP_01,
        MATNR TYPE MARA-MATNR,
        ERNAM TYPE MARA-ERNAM,
        ERSDA TYPE MARA-ERSDA,
        COLOR TYPE CHAR04,        
        CELLCOLOR TYPE LVC_T_SCOL,"单元格颜色
      END OF TYP_01.
DATA IS_CELLCOLOR TYPE LVC_S_SCOL.
DATA GT_01 TYPE STANDARD TABLE OF TYP_01 WITH HEADER LINE .
DATA IT_FIELDCAT TYPE LVC_T_FCAT WITH HEADER LINE .
DATA IS_LAYOUT TYPE LVC_S_LAYO.

DEFINE FIELDCAT.
  IT_FIELDCAT-COL_POS = &1.
  IT_FIELDCAT-FIELDNAME = &2.
  IT_FIELDCAT-SCRTEXT_L = &3.
  APPEND IT_FIELDCAT.
END-OF-DEFINITION.

START-OF-SELECTION.
  SELECT MARA~MATNR MARA~ERNAM MARA~ERSDA
    FROM MARA
    INTO CORRESPONDING FIELDS OF TABLE GT_01.

END-OF-SELECTION.
  FIELDCAT 1 MATNR MATNR.
  LOOP AT IT_FIELDCAT.
    IF IT_FIELDCAT-FIELDNAME = MATNR.
      IT_FIELDCAT-EMPHASIZE = C710.
      MODIFY IT_FIELDCAT.
      CLEAR IT_FIELDCAT.
    ENDIF.
  ENDLOOP.
  FIELDCAT 2 ERNAM ERNAM.
  FIELDCAT 3 ERSDA ERSDA.

  LOOP AT GT_01.
  IF GT_01-MATNR = 000000000000000097.
  GT_01-COLOR = C610.
  MODIFY gt_01.
  CLEAR GT_01.
  ENDIF.
  IF GT_01-MATNR = 000000000000000129.
  GT_01-COLOR = C510.
  MODIFY GT_01.
  CLEAR GT_01.
  ENDIF.
  IF  GT_01-MATNR = 000000000000000153.
  IS_CELLCOLOR-FNAME = MATNR.
 "物料编号为‘153’的行的‘MATNR’字段颜色为 黄色
  IS_CELLCOLOR-COLOR-COL = 3.
  IS_CELLCOLOR-COLOR-INT = 1.
  IS_CELLCOLOR-COLOR-INV = 0.
  APPEND IS_CELLCOLOR TO GT_01-CELLCOLOR.
  MODIFY GT_01.
  CLEAR GT_01.
  ENDIF.

  ENDLOOP.

  IS_LAYOUT-CWIDTH_OPT = X.
  IS_LAYOUT-INFO_FNAME = COLOR.
  IS_LAYOUT-CTAB_FNAME = CELLCOLOR. "单元格颜色内表字段
  CALL FUNCTION REUSE_ALV_GRID_DISPLAY_LVC
    EXPORTING
     I_CALLBACK_PROGRAM                = SY-CPROG
      IS_LAYOUT_LVC   = IS_LAYOUT
      IT_FIELDCAT_LVC = IT_FIELDCAT[]

    TABLES
      T_OUTTAB        = GT_01[].
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
  .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

运行结果:

技术分享图片

 

 

ALV报表的颜色设计(行、列、单元格)

原文:https://www.cnblogs.com/xggnb/p/11977443.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!