【原做】关于Dynpro中的红绿灯显示

问题源自李宁的需求,就不说了。app

关于ABAP中的红绿灯网上也有不少资料,不过貌似都是ABAP的程序,没怎么注意。后来根据需求要在Dynpro上也作出那样的效果,因此,研究了一下。ui

这种红绿灯在ABAP中显示时是以ICON的方式被建立并显示的,作过ABAP开发的人应该都知道那个Type Group‘ICON’里面有几乎全部的ABAP的ICON。spa

像那种锁标志,自开发的话可能都是须要点击后变成这样的,其余人怎么作的我不清楚,不过,我从一开始研究这个就用  '@06@'来作按钮的显示,而后点击后修改按钮的显示为  '@07@'。这种方法简单。其余的按钮图标就不介绍了,有空的话能够本身去ICON这个类型池里看看,研究研究。3d

下面来讲说此次的Dynpro的红绿灯显示:code

1:TABLE里作显示blog

由于对TABLE比较熟,因此一开始研究的时候就以TABLE来研究了。效果如图:图片

主要就是将TABLECOLUMN设成IMAGE类型,而后在赋值的时候赋上‘  ICON_RED_LIGHT’‘  ICON_YELLOW_LIGHT’‘  ICON_GREEN_LIGHT’就能显示成这种效果。开发

2:ALV里作显示get

由于ALV里显示和TABLE的原理是同样的,效果也同样的。如图:it

在ALV初始化的时候给对应的列作个IMAGE类型

when 'ICON'.
        lr_column_header = ls_column-r_column->create_header( ).
        lr_column_header->set_text( 'LIGHT' )."下面四行能够将显示的文本内容变为图标
        data: lr_image type ref to cl_salv_wd_uie_image.
        create object lr_image.
        lr_image->set_source_fieldname( ls_column-id ).
        ls_column-r_column->set_cell_editor( lr_image ).

在赋值的时候

ls_icon_s-item = '10001'.
  ls_icon_s-icon = 'ICON_GREEN_LIGHT'.
  append ls_icon_s to lt_icon_s.

这样就能完美的显示出来了。由于是作的图片显示,因此对于那些显示图片的需求,这种方法一样适用。

说明:ALV里的显示是咱们的强总给研究的。

 

 

最后申明一下:在赋值的时候不只能够用‘  ICON_YELLOW_LIGHT’这种按钮名称的方法,还能够用  '@0A@'这种来显示。

ls_icon-item = '100001'.
ls_icon-icon = '@0A@'.
APPEND ls_icon to lt_icon.

一样可行。

相关文章
相关标签/搜索