*&---------------------------------------------------------------------*
*& Report YLPY_ALV005
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YLPY_ALV005.
INCLUDE <icon>.
INCLUDE <symbol>.
TYPE-POOLS slis.
TABLES spfli.
* 给显示数据的内表增加以下额外字段,以实现相关显示样式
TYPES: BEGIN 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.
DATA: lt_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.
DATA: lt_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
*& Report YLPY_ALV005
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YLPY_ALV005.
INCLUDE <icon>.
INCLUDE <symbol>.
TYPE-POOLS slis.
TABLES spfli.
* 给显示数据的内表增加以下额外字段,以实现相关显示样式
TYPES: BEGIN 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.
DATA: lt_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.
DATA: lt_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