ALV最常用的显示功能:颜色(行,列,单元格),超链接,ICON,Symbol,异常状态,Checkbox

*&---------------------------------------------------------------------*
*& Report  YLPY_ALV005
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  YLPY_ALV005.
INCLUDE <icon>.

INCLUDE <symbol>.



TYPE-POOLS slis.


TABLES spfli.


* 给显示数据的内表增加以下额外字段,以实现相关显示样式
TYPESBEGIN OF ty_layout,

         exception(1)"异常

        checkbox,     "Checkbox

        icon TYPE icon_d"Icon

        symbol TYPE icon_d,"Symbol

        color(4),  "行颜色字段

         cell_color TYPE slis_t_specialcol_alv"列颜色

         hyperlink TYPE string" 超链接文本

         link_handle TYPE int4" 超链接处理标识

      END OF ty_layout.



* 显示数据的结构
TYPES BEGIN OF ty_spfli.

              INCLUDE TYPE ty_layout.

              INCLUDE TYPE spfli.

TYPES END OF ty_spfli.


* 显示数据的内表
TYPES ty_tab_spfli TYPE ty_spfli OCCURS 0.



PERFORM f_main.




*&---------------------------------------------------------------------*

*&       Form   f_main

*&---------------------------------------------------------------------*

*        ALV display

*----------------------------------------------------------------------*

FORM f_main.

  DATAlt_spfli        TYPE ty_tab_spfli,  "显示数据内表

         lt_fieldcat     TYPE slis_t_fieldcat_alv"表头目录字段

         ls_layout       TYPE slis_layout_alv"显示格式

         lt_hyperlink    TYPE lvc_t_hype,  "超链接文本

         lt_add_fieldcat TYPE slis_t_add_fieldcat."超链接结构表



  PERFORM get_data TABLES lt_spfli"数据显示



  PERFORM set_catalog CHANGING lt_fieldcat"表头信息



  PERFORM set_layout USING ls_layout"ALV显示格式



  PERFORM hyperlink_build TABLES lt_hyperlink."超链接URL



  PERFORM add_fieldcat_build TABLES lt_add_fieldcat."实现web链接



  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

       i_callback_program sy-repid

       i_grid_title        'Xin''s ALV' "ALV标题

       it_fieldcat         lt_fieldcat

       it_hyperlink        lt_hyperlink

       is_layout           ls_layout

       it_add_fieldcat     lt_add_fieldcat

    TABLES

       t_outtab            lt_spfli.

ENDFORM.                    "f_main



*&---------------------------------------------------------------------*

*&       Form   set_layout

*&---------------------------------------------------------------------*

*        ALV显示布局

*----------------------------------------------------------------------*

*       -->P_LAYOUT    text

*----------------------------------------------------------------------*

FORM set_layout USING p_layout TYPE slis_layout_alv.

   p_layout-zebra 'X'.

   p_layout-colwidth_optimize 'X'.

   p_layout-window_titlebar 'LinHuanXin''s ALV Demo'"窗口标题

   p_layout-no_hline 'X'"没水平线

   p_layout-no_vline 'X'"没垂直线

   p_layout-info_fieldname 'COLOR'."行颜色

   p_layout-coltab_fieldname 'CELL_COLOR'."单元格颜色

   p_layout-lights_fieldname 'EXCEPTION'"异常标识

ENDFORM.                    "set_layout



*&---------------------------------------------------------------------*

*&       Form   get_data

*&---------------------------------------------------------------------*

*        Get the data for output   取出数据

*----------------------------------------------------------------------*

*       -->PT_SPFLI    data internal table

*----------------------------------------------------------------------*

FORM get_data TABLES pt_spfli TYPE ty_tab_spfli.



  DATAlt_cell TYPE slis_t_specialcol_alv"单元格颜色存放结构

         ls_cell LIKE LINE OF lt_cell"单元格颜色值行结构

         lwa_spfli LIKE LINE OF pt_spfli."数据内表行结构


*   取得数据
  SELECT FROM spfli INTO CORRESPONDING FIELDS OF TABLE pt_spfli.


* 循环判断处理每一行的颜色即其它功能
  LOOP AT pt_spfli INTO lwa_spfli.


* 当目的地城市为KM的行显示为红色
    IF lwa_spfli-distid 'KM'.

       lwa_spfli-color 'C610'"显示红色

    ENDIF.


    IF lwa_spfli-distance < 1000.

      CLEAR ls_cell.

      REFRESH lt_cell.


*      单元格颜色显示处理
       ls_cell-fieldname 'DISTANCE'.

       ls_cell-color-col '4'.

       ls_cell-color-int '1'.

       ls_cell-color-inv '0'.

       ls_cell-nokeycol   'X'"覆盖码颜色

      APPEND ls_cell TO lt_cell.

       lwa_spfli-cell_color lt_cell.


       lwa_spfli-checkbox    'X'"选中checkbox ,在数据表工作是存放是否选择,而在ALV工作区是否显示为复选框

       lwa_spfli-exception   '1'"导常1,即显示为红灯

    ELSE.

       lwa_spfli-exception   '2'"导常2

    ENDIF.



     lwa_spfli-link_handle sy-tabix.

     lwa_spfli-hyperlink    'www.baidu.com'"超链接文本

     lwa_spfli-icon         icon_detail"图标名

     lwa_spfli-symbol       sym_folder"元素符号名

    MODIFY pt_spfli FROM lwa_spfli.

  ENDLOOP.

ENDFORM.                    "get_data



*&---------------------------------------------------------------------*

*&       Form   add_fieldcat_build

*&---------------------------------------------------------------------*

*        超链接实现

*----------------------------------------------------------------------*

*       -->PT_FIELDCAT   text

*----------------------------------------------------------------------*

FORM add_fieldcat_build TABLES pt_fieldcat TYPE slis_t_add_fieldcat.

  DATA lwa_fieldcat LIKE LINE OF pt_fieldcat.



   lwa_fieldcat-fieldname 'HYPERLINK'"超链接列名

   lwa_fieldcat-web_field 'LINK_HANDLE'.

  APPEND lwa_fieldcat TO pt_fieldcat.

ENDFORM.                    "get_data




*&---------------------------------------------------------------------*

*&       Form   hyperlink_build

*&---------------------------------------------------------------------*

*        构建超链接URL

*----------------------------------------------------------------------*

*       -->PT_HYPERLINK   text

*----------------------------------------------------------------------*

FORM hyperlink_build TABLES pt_hyperlink TYPE lvc_t_hype.

  DATA lwa_hyperlink LIKE LINE OF pt_hyperlink.



  DO 13 TIMES.

     lwa_hyperlink-handle sy-index.

     lwa_hyperlink-href    'http://www.baidu.com'"链接URL地址

    APPEND lwa_hyperlink TO pt_hyperlink.

  ENDDO.



ENDFORM.                    "hyperlink_build




*&---------------------------------------------------------------------*

*&       Form   set_catalog

*&---------------------------------------------------------------------*

*        set fieldcatalog for alv output    ALV输出表头信息

*----------------------------------------------------------------------*

FORM set_catalog CHANGING pt_fieldcat TYPE slis_t_fieldcat_alv.

  DATA lwa_fieldcat TYPE slis_fieldcat_alv.



  "macro

  DEFINE add_field.

    clear lwa_fieldcat.

     lwa_fieldcat-fieldname &1.

     lwa_fieldcat-seltext_l &2.

     lwa_fieldcat-emphasize &3"列颜色显示

     lwa_fieldcat-key &4.

     lwa_fieldcat-fix_column &4"是否固定显示

    append lwa_fieldcat to pt_fieldcat.

  END-OF-DEFINITION.



  "add field catalog

   add_field 'MANDT'     'Client'                 ''     'X'"前三列固定

   add_field 'CARRID'    'Airline Code'           ''     'X'.

   add_field 'CONNID'    'Fight Number'           ''     'X'.

   add_field 'COUNTRYFR' 'Country From'           ''     ''.

   add_field 'CITYFROM'  'City From'              ''     ''.

   add_field 'AIRPFROM'  'Airpart From'           ''     ''.

   add_field 'COUNTRYTO' 'Country To'             'C510' ''"显示该列颜色

   add_field 'CITYTO'    'City To'                ''     ''.

   add_field 'AIRPTO'    'Airpart To'             ''     ''.

   add_field 'FLTIME'    'Fly Time'               ''     ''.

   add_field 'DEPTIME'   'Dept Time'              ''     ''.

   add_field 'ARRTIME'   'Arrive Time'            ''     ''.

   add_field 'DISTANCE'  'Distance'               ''     ''.

   add_field 'DISTID'    'Mass unit of distance'  ''     ''.

   add_field 'FLTYPE'    'Flight type'            ''     ''.

   add_field 'PERIOD'    'Arrival n day(s) later' ''     ''.

   add_field 'HYPERLINK' 'HYPERLINK'              ''     ''.



  "checkbox

  CLEAR lwa_fieldcat.

   lwa_fieldcat-fieldname 'CHECKBOX'.

   lwa_fieldcat-seltext_l 'Checkbox'.

   lwa_fieldcat-checkbox 'X'"显示为复选框,而不是选中

   lwa_fieldcat-fix_column 'X'.

  APPEND lwa_fieldcat TO pt_fieldcat.



  "icon 图标

  CLEAR lwa_fieldcat.

   lwa_fieldcat-fieldname 'ICON'.

   lwa_fieldcat-seltext_l 'Icon'.

   lwa_fieldcat-icon 'X'.

  APPEND lwa_fieldcat TO pt_fieldcat.



  "symbol 元素符号

  CLEAR lwa_fieldcat.

   lwa_fieldcat-fieldname 'SYMBOL'.

   lwa_fieldcat-seltext_l 'Symbol'.

   lwa_fieldcat-symbol 'X'."显示为元素符号

  APPEND lwa_fieldcat TO pt_fieldcat.



ENDFORM.                    "set_catalog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值