FM 方式ALV 红绿灯

*&---------------------------------------------------------------------*
*& Report  ZLM_ALV_07
*&
*&---------------------------------------------------------------------*
*1)在alv引用类型池定义时加入icon,如type-pools: slis, icon.
*
*2)给显示内表itab定义一字段statu存储状态灯;
*
*3)循环内表itab给字段statu值赋:
*绿灯:itab-statu = icon_led_green.
*红灯:itab-statu = icon_led_red.
*4)alv的fieldcat属性i_fieldcat-icon = 'X'.
*&---------------------------------------------------------------------*

REPORT  zlm_alv_07.

*&---------------------------------------------------------------------*
*& 声明
*&---------------------------------------------------------------------*
TYPE-POOLS: slis, icon.

*&---------------------------------------------------------------------*
*&基本数据定义
*&---------------------------------------------------------------------*
DATA:
      BEGIN OF str_data,
        id     TYPE int4,
        age    TYPE int4,
        statu  TYPE char10,
      END OF str_data.

DATA:
      g_it_data LIKE TABLE OF str_data,
      g_wa_data LIKE str_data.

*&---------------------------------------------------------------------*
*& ALV相关定义
*&---------------------------------------------------------------------*
DATA: fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

*&---------------------------------------------------------------------*
*& 宏定义
*&---------------------------------------------------------------------*
DEFINE fill_fieldcat.
  fieldcat-fieldname = &1.
  fieldcat-seltext_l = &2.
  fieldcat-icon    = 'X'.      "图标功能
  append fieldcat.
END-OF-DEFINITION.

*&---------------------------------------------------------------------*
*& 主逻辑
*&---------------------------------------------------------------------*

START-OF-SELECTION.
  PERFORM zform_fill_data.
  PERFORM zform_show.

*&---------------------------------------------------------------------*
*& form区
*&---------------------------------------------------------------------*

FORM zform_fill_data.
  fill_fieldcat  'ID'   '编号'.
  fill_fieldcat  'AGE'  '年龄'.
  fill_fieldcat  'STATU' '灯饰'.

g_wa_data-id    = 1.
  g_wa_data-age   = 12.
  g_wa_data-statu = icon_led_red.

APPEND g_wa_data TO g_it_data.

g_wa_data-id    = 2.
  g_wa_data-age   = 13.
  g_wa_data-statu = icon_led_green.

APPEND g_wa_data TO g_it_data.
ENDFORM.                    "zform_fill_data

*&---------------------------------------------------------------------*
*&      Form  zform_show
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM zform_show.
  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      it_fieldcat = fieldcat[]
    TABLES
      t_outtab    = g_it_data[].
ENDFORM.                    "zform_show

OO 方式ALV 红绿灯
效果:
主要代码:
*&---------------------------------------------------------------------*
*&  全局变量
*&---------------------------------------------------------------------*
DATA:
BEGIN OF str_spfli,
checkbox TYPE char1,
status   TYPE icon_d,                 "检查状态图标
carrid   TYPE  sflight-carrid       , "航线承运人ID
connid   TYPE  sflight-connid       , "航班连接 Id
fldate   TYPE  sflight-fldate       , "航班日期
price    TYPE  sflight-price        , "航空运费
cellstyle TYPE lvc_t_styl,          "可编辑字段SORT表
END OF  str_spfli.
DATA:
g_it_show LIKE TABLE OF str_spfli WITH KEY checkbox carrid connid,
g_wa_show LIKE str_spfli.
START-OF-SELECTION.
"获取数据
SELECT carrid
connid
fldate
price
FROM sflight INTO CORRESPONDING FIELDS OF  TABLE g_it_show.
FIELD-SYMBOLS  LIKE LINE OF  g_it_show.
DATA:l_dex TYPE int4.
LOOP AT g_it_show ASSIGNING .
l_dex = sy-tabix MOD 3.
CASE l_dex.
WHEN 1 .
-status = icon_led_green.
WHEN 2.
-status = icon_led_red.
WHEN OTHERS.
-status = icon_led_yellow.
ENDCASE.
ENDLOOP.
"调用屏幕
CALL SCREEN 9001.
FORM zform_alv_show .
DATA:   l_style      TYPE i,
ls_layout    TYPE lvc_s_layo,
is_stable    TYPE lvc_s_stbl,
l_disvariant TYPE disvariant.
* 屏幕初始化
IF alv_ctner IS INITIAL.
CREATE OBJECT alv_ctner
EXPORTING
repid                       = sy-repid
dynnr                       = '9001'
*       side                        = cl_gui_docking_container=>dock_at_right      ”ALV贴屏幕右边,从屏幕右边开始算宽度
side                        = cl_gui_docking_container=>dock_at_left       "ALV贴屏幕左边,从左边算屏幕宽度,
extension                   = 900                                          "屏幕宽度
*        style                       = cl_gui_control=>ws_child                     "可选参数,设置ALV是否可用手动拖动大小
EXCEPTIONS
cntl_error                  = 1
cntl_system_error           = 2
create_error                = 3
lifetime_error              = 4
lifetime_dynpro_dynpro_link = 5
OTHERS                      = 6.
IF sy-subrc <> 0.
MESSAGE s001(00) WITH '屏幕初始化失败'.
LEAVE LIST-PROCESSING.
ENDIF.
*添加自定义工具条
PERFORM frm_set_alv_toolbar.
*
CREATE OBJECT g_alv_grid
EXPORTING
i_parent = alv_ctner.
*构建显示字段样式
PERFORM frm_build_fieldcat.
"Set/Reset Ready for Input Status
CALL METHOD g_alv_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
* layout 设定样式
CLEAR ls_layout.
ls_layout-cwidth_opt = 'X'.     "优化列宽
CLEAR l_disvariant.
l_disvariant-report = sy-repid. "当前程序
* event  绑定事件
CREATE OBJECT g_event.
SET HANDLER g_event->toolbar             FOR g_alv_grid.
SET HANDLER g_event->handle_data_changed FOR g_alv_grid.
*    SET HANDLER g_event->handle_f4           FOR g_alv_grid.
SET HANDLER g_event->handle_cell_click   FOR g_alv_grid.
SET HANDLER g_event->handle_user_command FOR g_alv_grid.
SET HANDLER g_event->handle_double_click FOR g_alv_grid.
SET HANDLER g_event->handle_onf1         FOR g_alv_grid.
"以下两个方法达到的效果是:光标离开正在编辑的单元格时,就触发了handle_data_changed
"如果不注释掉以下两个方法,则只有执行下一操作时才会触发handle_data_changed,比如点保存点删除
CALL METHOD g_alv_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD g_alv_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
*   "显示内表数据
CALL METHOD g_alv_grid->set_table_for_first_display
EXPORTING
is_layout            = ls_layout
is_variant           = l_disvariant
it_toolbar_excluding = gt_tools
CHANGING
it_fieldcatalog      = it_fieldcatalog[]
it_outtab            = g_it_show[].
ELSE.
"冲销设置tcode 为 RELOAD,防止因为原来的tcode影响程序执行
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'RELOAD'.
"ALV 控制:刷新稳定性 按行刷新,可选参数
CLEAR is_stable.
is_stable-col = 'X'.
"刷新
CALL METHOD g_alv_grid->refresh_table_display
EXPORTING
is_stable      = is_stable
i_soft_refresh = 'X'.
"提交
CALL METHOD cl_gui_cfw=>flush.
ENDIF.
ENDFORM.                    " ZFORM_ALV_SHOW

OOalv相关,可见;http://blog.sina.com.cn/s/blog_c0978c9b0101f1ee.html

转载于:https://www.cnblogs.com/senlinmu110/p/3802248.html

ALV显示红绿灯(FMnbsp;ALVnbsp;和nbsp;OOnbsp;ALV两…相关推荐

  1. 简单的ALV显示例子

    废话不多说,直接上傻瓜代码.归根结底,就是要将显示的字段一行一行的放入fieldcat的表里. "定义ALV数据变量 DATA:IT_FIELDCAT TYPE SLIS_T_FIELDCA ...

  2. OOnbsp;ALV常用功能完整简例(热键单击…

    OO ALV 常用功能简介 目录 OO ALV 常用功能简介... 1 一.所用类:... 2 二.效果图:... 2 单击... 2 双击... 2 F4帮助... 3 编辑某单元格并校验... 3 ...

  3. 动态内表 动态ALV显示

    动态内表及动态ALV显示 最近写了一个forecast,要求按用户输入的日期分周或月显示,我把它贴出来,给有需要的人参考一下 *&------------------------------- ...

  4. ABAP 动态的实现任意表的ALV显示

    程序没有什么实用性,就是把一个表的内容全部显示出来了,仅用于看看数据都是什么样子的,但是其中的动态的方法还是值得研究学习的.这些方法是从我的前辈身上学到的,我小小的实践了一下,本来认为在编写程序的可以 ...

  5. ABAP实践学习--灰色的ALV显示

    REPORT  Ytest019.                                . TYPE-POOLS: SLIS.                        DATA:IT_ ...

  6. SAP MB5B报表ALV显示

    在项目上,MB5B这个标准报表会经常使用,但有些系统可以ALV显示.有些不可用.在SPRO里可以激活这个配置,激活后对于MBLB.MB5B.MB58.MI24都在筛选界面多出一个ALV显示的复选框. ...

  7. DEMO:ALV显示明细

    本来需求是ALV双击某个字段的时候,弹出一个新ALV显示对应的明细, 但是明细字段太多了,弹出来以后也挺难看的. 就想起来SE11进去,查看数据 点明细的时候 于是就debug了下这个按钮 大概扫了一 ...

  8. Java黑皮书课后题第5章:*5.43(数学:组合)编写程序,显示从整数1到7中选择两个数字的所有组合,同时显示所有组合的总个数

    5.43(数学:组合)编写程序,显示从整数1到7中选择两个数字的所有组合,同时显示所有组合的总个数 题目 题目概述 破题 运行示例(要求) 代码 题目 题目概述 5.43(数学:组合)编写程序,显示从 ...

  9. 双卡版本不插卡的情况下状态栏中只显示了一个信号图标,而不是两个信号图标,如何修改为2个图标

    JB3开始,双卡版本不插卡的情况下状态栏中只显示了一个信号图标,而不是两个信号图标,如何修改为2个图标 [SOLUTION]   这是JB3 default的设计,如果要恢复两个信号图标,请参考如下方 ...

最新文章

  1. 内存分配器设计的演进
  2. Microbiome:扩增子检测环境样本单细胞真核生物和寄生虫的新方法
  3. python程序设计报告-20192404 实验一 《Python程序设计》实验报告
  4. 零基础如何学爬虫技术?
  5. 动态创建 Web 服务器控件模板
  6. Spring Cloud Nacos
  7. python list合并_python基础===两个list合并成一个dict的方法
  8. 上传文件时显示选择窗口
  9. 文本分类模型_【文本分类】几个可作为Baseline的模型
  10. ​芯片大神,英特尔、AMD、特斯拉前首席芯片架构师 Jim Keller 加盟 AI 初创公司...
  11. *推荐* 杏雨梨云U盘系统2011 全面加速 [2010.12.28]
  12. 关于视频监控线缆的常识
  13. 3 实现模糊遮罩_【Unity游戏客户端框架搭建】六、UI框架之弹窗模糊实现
  14. mysql一对多前端实现_django一对多模型以及如何在前端实现详解
  15. java doctitle_Java ActionItem.setDocTitle方法代码示例
  16. java全角数字_Java全角、半角字符的关系以及转换
  17. 同一个PDF如何同时在两个窗口并排显示?
  18. 【应用实例】单片机PM2.5空气监测仪--攀藤G5激光PM2.5传感器
  19. ArcGIS基于C#.NET的二次开发
  20. 解决获取微信用户信息 48001错误

热门文章

  1. LINUX 硬链接与软链接的区别
  2. Emit应用中的常用技巧
  3. Redhat7.2上编译Linux内核源码
  4. Windows下Tomcat服务器的安装和配置
  5. java运行过程_Java执行过程
  6. Web.config 灵活配置
  7. 项目中序列化时,去除属性为null的key
  8. 利用VMware Infrastructure SDK编程控制虚拟机集群(1)
  9. 第四节:python if语句用法
  10. openstack运维实战系列(十)之nova指定compute节点和IP地址