前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP ALV之红绿灯使用方式及消息反馈的使用详解

ABAP ALV之红绿灯使用方式及消息反馈的使用详解

作者头像
百里丶落云
发布2022-12-02 14:55:52
1.5K0
发布2022-12-02 14:55:52
举报
文章被收录于专栏:享~方法

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情

HELLO ,这里是百里,一个学习中的ABAPER ,在SAP开发中会经常遇到上传,下载,信息对比展示等内容,此时一般会使用messege 等采用display 'S' 的方式进行展示. 然后还有一种比较更加方便且非常明显的内容方式.就是采取红绿灯及消息展示的方式来提醒用户.此案例讲将会详细讲解红绿灯的使用方式及消息反馈的内容.

何为红绿灯

ALV红绿灯及如其名所示,就是真的红绿灯一般数据状态展示,如绿色表示通过,审核过,黄色表示有异常,警告.红色表示有禁止,暂停等信息.当然设定这个内容依然需要按照个人意愿 .

技术介绍

使用4位字符串或者 使用ABAP中固定的字符串可以展示.在ALV对应数据内容中加入到数据结构中及ALV数据中即可.

代码语言:javascript
复制
@0A@  或者 ICON_RED_LIGHT. 红灯  
@08@  或者 ICON_GREEN_LIGHT.  绿灯  
@09@ 或者  ICON_YELLOW_LIGHT. 黄灯

实例展示

本案红绿灯使用的经典方式,通过不同字段判断状态属性的一个案例.通过不同值,经过逻辑判断,给对应的红绿灯内容赋给对应的颜色.

数据准备

定义数据内容 附加  light TYPE iconname, "指示灯

 msg   TYPE string,"消息

代码语言:javascript
复制
TYPES:BEGIN OF ty_Data  ,  
  
    doccode TYPE char20 ,  
   zrowid TYPE char20 ,  
  matcode TYPE char20 ,  
  matname TYPE char20 ,  
  uom TYPE char20 ,  
  memo TYPE char20 ,  

     light TYPE iconname, "指示灯  
        msg   TYPE string,"消息  
  
  END OF ty_Data .  
  

 data : gs_data TYPE ty_Data .  
 data : gt_DAta TYPE  TABLE  of ty_Data .  
  

  
  " alv 通用变量  
  DATA: wa_layout   TYPE lvc_s_layo.  
DATA:wa_fieldcat TYPE lvc_s_fcat,  
     gt_fieldcat TYPE lvc_t_fcat.  
  
DATA gs_grid TYPE lvc_s_glay.   "新

获取数据

获取基础数据内容,通过逻辑判断,以单位为'双' 的内容为'红灯', 不为双的内容为'绿灯'.

代码语言:javascript
复制
START-OF-SELECTION .  
  
PERFORM get_data .


FORM get_data .  
"select *  from  ZWDEMOTABLE1 as a into CORRESPONDING FIELDS OF TABLE gt_DAta .  
select doccode ,zrowid ,matcode ,matname ,uom ,MEmo   from  ZWDEMOTABLE1 as a into  TABLE @gt_DAta .  
"select doccode zrowid matcode matname uom MEmo   from  ZWDEMOTABLE1 as a into  TABLE gt_DAta .  
  
  
LOOP AT gt_DAta into gs_data.  
  
 IF gs_data-uom = '双'.  
   gs_data-msg = '这个单位是' &&  gs_data-uom && '是红灯' .  
  
    gs_data-light = icon_led_red.  
ELSE.  
     gs_data-msg = '这个单位是' &&  gs_data-uom && '是绿灯' .  
  
    gs_data-light = icon_led_green.  
  
  
 ENDIF.  
   MODIFY gt_DAta FROM gs_data .  
CLEAR gs_data .  
ENDLOOP.  
ENDFORM.

数据展示

代码语言:javascript
复制
FORM diaplay_data .  
  
   PERFORM set_alv_layout.  
  PERFORM bulid_fieldcat.  
  PERFORM call_alv_func.  
  
ENDFORM.  
  
  
FORM set_alv_layout .  
  CLEAR: wa_layout.  
  wa_layout-zebra      = 'X'.      "斑马线  
  "wa_layout-cwidth_opt = 'X'.      "自动列宽  
  
  
ENDFORM.  
  
  
FORM bulid_fieldcat .  
DEFINE add_col.  
  
*    ADD 1 TO pos.  
*    lw_fieldcat-col_pos = pos.  
    wa_fieldcat-fieldname = &1.  
    wa_fieldcat-ref_field = &2.  
    wa_fieldcat-ref_table = &3.  
    wa_fieldcat-scrtext_l = &4.  
    wa_fieldcat-outputlen = &5.  
    wa_fieldcat-no_zero = &6.  
    wa_fieldcat-edit = &7.  
    wa_fieldcat-edit_mask = &8.  
    wa_fieldcat-key = &9.  
  
  
   CASE  wa_fieldcat-fieldname.  
     WHEN 'MSG' .  
  
    wa_fieldcat-outputlen = '40'    .  
"      WHEN 'slbox'.  
" wa_fieldcat-checkbox = 'X' .  
" wa_fieldcat-edit = 'X' .  
"  wa_fieldcat-edit_mask = 'X'.  
"   WHEN 'VBELN' .  
" wa_fieldcat-HOTSPOT = 'X' .  
" WHEN 'KBETR'.  
"   wa_fieldcat-decimals_o = 2 .  
"   WHEN 'FKIMG' .  
"     wa_fieldcat-decimals_o = 0 .  
  
  
      WHEN OTHERS.  
ENDCASE .  
  
    APPEND wa_fieldcat TO gt_fieldcat.  
  
  CLEAR : wa_fieldcat.  
  END-OF-DEFINITION.  
  REFRESH: gt_fieldcat.  
  
  add_col 'LIGHT'     space space '状态灯'      space space space space space.  
  add_col 'MSG'     space space '消息'           space space space space space.  
  
  add_col 'DOCCODE'     space space '单号'           space space space space space.  
  add_col 'ZROWID'     space space 'rowid'           space space space space space.  
  add_col 'MATCODE'     space space '料号'           space space space space space.  
  add_col 'MATNAME'     space space '料名'           space space space space space.  
  add_col 'UOM'     space space '单位'           space space space space space.  
  add_col 'MEMO'     space space '备注'           space space space space space.  
  
  
  
ENDFORM.  
  
  
  
FORM call_alv_func .  
DATA :gt_event TYPE slis_t_event,  
        gs_event TYPE slis_alv_event.  
  
  
  
 " MOVE 'DATA_CHANGED'     TO gs_event-name.  
 " MOVE 'ALV_DATA_CHANGED' TO gs_event-form.  
  APPEND gs_event TO gt_event.  
  
  gs_grid-edt_cll_cb = abap_true.     " 选中复选款,立刻触发data changed 事件  
  
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'  
    EXPORTING  
      i_callback_program       = sy-repid           "回调程序  
      i_callback_pf_status_set = 'SET_PF_STATUS'  
      i_callback_user_command  = 'USER_COMMAND'  
      i_grid_settings          = gs_grid  
      is_layout_lvc            = wa_layout  
      it_fieldcat_lvc          = gt_fieldcat        "需要显示的内表的列  
      i_save                   = 'A'  
      it_events                = gt_event  
    TABLES  
      t_outtab                 = gt_DAta         "需要显示的数据  
    EXCEPTIONS  
      program_error            = 1  
      OTHERS                   = 2.  
  IF sy-subrc <> 0.  
  ENDIF.  
ENDFORM.

结果

此处只是做一个案例解释,典型以双为单位的红灯.非双为单位的为绿灯 .

image.png
image.png

技术总结

本篇文章讲的内容是,工作中会常用的红绿灯及消息反馈内容附加的内容. 学会了此内容以后,可以对比上传,下载,OLE等动作实现用户数据反馈. 满足用户的防呆操作需求.

“我深怕自己本非美玉,

故而不敢加以刻苦琢磨。

却又半信自己是块美玉,

故而又不肯庸庸碌碌

与瓦砾为伍。 ” --- 山月记

这里是百里一个努力的学习者 .努力学习好好记录,点滴进步,就是成功.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 何为红绿灯
  • 技术介绍
  • 实例展示
    • 数据准备
      • 获取数据
        • 数据展示
        • 结果
        • 技术总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档