最简单的ALV红绿灯

 COPY源代码即可使用,红绿灯的展示关键在于ICON得赋值


REPORT yzs001.
TABLES:sscrfields.

TYPE-POOLS : slis.

DATA : gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA : gs_layout TYPE slis_layout_alv.
DATA : g_title TYPE lvc_title,
       g_glay  TYPE lvc_s_glay.

DATA: BEGIN OF gw_excel,
        ship_point TYPE bapidlvcreateheader-ship_point,    "装运点
        icon       TYPE char04,      "标识 : @EB@ 熄灯 ; @0A@ 红灯 ; @08@ 绿灯 ; @09@ 黄灯
        msg        TYPE string,      "处理消息
      END OF gw_excel.
DATA gt_excel LIKE gw_excel OCCURS 0 WITH HEADER LINE.


START-OF-SELECTION.

  PERFORM frm_get_data.
  PERFORM frm_display_alv.
  "装运点


FORM frm_get_data.
  gt_excel-ship_point = 1000.
  gt_excel-icon       = '@EB@'.
  gt_excel-msg       = 'E'.
  APPEND gt_excel.
  gt_excel-ship_point = 1000.
  gt_excel-icon       = '@0A@'.
  gt_excel-msg       = 'E'.
  APPEND gt_excel.
  gt_excel-ship_point = 1000.
  gt_excel-icon       = '@08@'.
  gt_excel-msg       = 'S'.
  APPEND gt_excel.
  gt_excel-ship_point = 1000.
  gt_excel-icon       = '@09@'.
  gt_excel-msg       = 'S'.
  APPEND gt_excel.
ENDFORM.
FORM frm_display_alv .

  CLEAR: gt_fieldcat[].
  PERFORM frm_e01_fieldcat_init USING :
        'ICON'       '标识'            10  ' ' ' ' ' ' ' ' ' ' ' ' ' ',
        'MSG'        '处理消息'       200  ' ' ' ' ' ' ' ' ' ' ' ' ' ',
        'SHIP_POINT'    '装运点'            10  ' ' ' ' ' ' ' ' ' ' ' ' ' '.
  gs_layout-colwidth_optimize   = 'X'.
*  GS_LAYOUT-INFO_FIELDNAME      = 'COLOR'.
  gs_layout-zebra               = 'X'.
*  GS_LAYOUT-BOX_FIELDNAME       = 'CHKBX'.  "选择框

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_grid_settings    = g_glay
      i_callback_program = sy-cprog
*     i_grid_title       = g_title
      it_fieldcat        = gt_fieldcat[]
      is_layout          = gs_layout
      i_save             = 'A'
    TABLES
      t_outtab           = gt_excel[].
ENDFORM.


FORM frm_e01_fieldcat_init
USING field_name TYPE c
      field_text      TYPE c
      field_lenth     TYPE i
      field_edit      TYPE c
      field_checkbox  TYPE c
      field_type      TYPE c
      field_key       TYPE c
      field_icon      TYPE c
      field_reftab    TYPE c
      field_refnam    TYPE c.

  DATA: ls_fieldcat TYPE slis_fieldcat_alv.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = field_name.
  ls_fieldcat-seltext_l = field_text.
  ls_fieldcat-ddictxt   = 'L'.  "可选值为S,M,L,指定列标题为长中短描述,列标题的显示内容将固定.

  IF field_type EQ 'Q'.
    ls_fieldcat-just     = 'R'.
    ls_fieldcat-no_zero  = 'X'.
    ls_fieldcat-datatype = 'QUAN'.
  ELSE.
    ls_fieldcat-just     = 'L'.
  ENDIF.

  ls_fieldcat-checkbox  = field_checkbox.
  ls_fieldcat-edit      = field_edit.
  ls_fieldcat-key       = field_key.
  ls_fieldcat-outputlen = field_lenth.
  ls_fieldcat-icon      = field_icon.
  ls_fieldcat-ref_fieldname = field_refnam.
  ls_fieldcat-ref_tabname = field_reftab.


  APPEND ls_fieldcat TO gt_fieldcat.

ENDFORM. " E01_FIELDCAT_INIT

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
红绿灯模拟系统: 前面板:模拟的十字路口红绿灯和两条人行横道。 程序框图:1·本程序主要用到平铺式顺序结构和层叠式 顺序结构顺序执行程序语句,用真假常量 来控制灯亮与不亮。 2·本程序好用到了while循环和for循环。 3·本程序依照国家交通法规定来执行的。 4·本程序的难点就在于各个路口和人行横道 在时域上的协调,以确保安全畅通的通行! 说明:一·人行横道1,2红灯禁止行人通行 通道A---允许左转,右转,禁止 直行。 通道B---允许左转,右转,禁止 直行。 通道C---允许右转, 禁止 左转,直行。 通道D---允许右转, 禁止 左转,直行。 一过程共15秒=13秒+3秒闪烁提示。 二·人行横道1绿灯允许行人通行,人行横道2红灯 通道A---允许直行,右转,禁止 左转。 通道B---允许直行, 禁止 右转,左转。 通道C---允许右转, 禁止 左转,直行。 通道D---禁止 左转,右转,直行。 二过程共10秒。 三·人行横道1黄灯闪烁提醒行人将要禁止行人通行 了,人行横道2红灯 通道A---允许直行,右转,禁止 左转。 通道B---允许直行, 禁止 右转,左转。 通道C---允许右转, 禁止 左转,直行。 通道D---禁止 左转,右转,直行。 三过程共3秒 四·人行横道1,2红灯禁止行人通行。 通道C---允许左转,右转,禁止 直行。 通道D---允许左转,右转,禁止 直行。 通道A---允许右转, 禁止 左转,直行。 通道B---允许右转, 禁止 左转,直行。 四过程共15秒=13秒+3秒闪烁提示。 五·人行横道2绿灯允许行人通行,人行横道1红灯 通道C---允许直行,右转,禁止 左转。 通道D---允许直行, 禁止 右转,左转。 通道B---允许右转, 禁止 左转,直行。 通道A---禁止 左转,右转,直行。 五过程共10秒。 六·人行横道2黄灯闪烁提醒行人将要禁止行人通行 了,人行横道1红灯 通道C---允许直行,右转,禁止 左转。 通道D---允许直行, 禁止 右转,左转。 通道B---允许右转, 禁止 左转,直行。 通道A---禁止 左转,右转,直行。 六过程共3秒。 七·循环一,二,三,四,五,六,七。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值