最简单的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

猜你喜欢

转载自blog.csdn.net/qq_37968127/article/details/89093282