ABAP开发中ALV如何因号码的改变而转换行的颜色

在ABAP开发中,有时需要在ALV网格上实现一些颜色的转变,比如让编号相同且连续的行保持同样的颜色,遇到不同的号码则变换颜色,再遇到再变换回原本颜色。

这时要在内表中定义两个字段

  cyl_abs TYPE p LENGTH 13 DECIMALS 2,
  color   TYPE CHAR4,

再定义一个Char4类型与一个编号的类型

DATA:   l_color TYPE CHAR4,
        l_aennr TYPE aennr.

 此时可以做一个IF循环

SORT: wa_col BY aennr ASCENDING cyl_abs DESCENDING.

  CLEAR l_aennr.
  "不同订单 显示不同的行背景颜色
  LOOP AT wa_col .
    IF l_aennr = ''.  "第一行
      l_color = 'C410'.
    ELSE.
      IF wa_col-aennr = l_aennr AND l_color = 'C410'."上行跟这行号码相同为蓝色
        l_color = 'C410'.
      ELSEIF wa_col-aennr = l_aennr AND l_color = 'C500'."上行跟这行号码相同为绿色
        l_color = 'C500'.
      ELSEIF wa_col-aennr <> l_aennr AND l_color = 'C410'."上行为蓝色号码不同
        l_color = 'C500'.
      ELSEIF wa_col-aennr <> l_aennr AND l_color = 'C500'."上行为绿色号码不同
        l_color = 'C410'.
      ENDIF.
    ENDIF.
    wa_col-color = l_color.
    MODIFY   wa_col TRANSPORTING color.
    l_aennr = wa_col-aennr.
  ENDLOOP.

 这时候大部分都已经完成,你只需要在输出时‘提一嘴’color.

 DATA: fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
        layout   TYPE slis_layout_alv.

Layout-info_fieldname = 'COLOR'."就是☞这个
  layout-colwidth_optimize = 'X'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      is_layout          = layout 
      it_fieldcat        = fieldcat[] 
    TABLES
      t_outtab           = wa_col
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.

/今天学习中遇到的问题(2.23)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值