原帖地址:http://blog.csdn.net/lijunhai/archive/2007/12/25/1967081.aspx
使用函数显示ALV格式报表
1)定义ALV
type-pools slis. "调用类型组
data: myrepid like sy-repid. "程序为当前程序
data: i_layout type slis_layout_alv. "ALV显示格式内表
data: allfields type slis_t_fieldcat_alv. " ALV显示字段内表
data: i_fieldcat type line of slis_t_fieldcat_alv. "ALV字段信息结构
data: e_status type slis_formname value 'STANDARD_ER01'. "ALV自定义非标准按钮
myrepid = sy-repid.
2)ALV 显示属性
i_layout-colwidth_optimize = 'X'. "自动调整列宽
i_layout-zebra = 'X'. "变换行颜色
2)ALV写法,有两种:
(1)法一,写成块形式
data: pos type i.
define alv_append_field. "定义模块
i_fieldcat-col_pos = pos. "列标志
i_fieldcat-fieldname = &1. "字段名
i_fieldcat-seltext_l = &2. "字段描述
i_fieldcat-no_zero = 'X'. "不显示值为0的数据和前导0
... "其它的fieldcat属性
append i_fieldcat to allfields. "写进显示字段内表
clear i_fieldcat.
pos = pos + 1. "下一列
end-of-definition.
refresh allfields.
pos = 1.
clear i_fieldcat.
alv_append_field 'FLDNAME' 'FLDTXT' .
(2)法二:标准形式
clear i_fieldcat.
i_fieldcat-fieldname = 'FLDNAME'. "字段名
i_fieldcat-seltext_l = 'FLDTXT'. "字段描述
i_fieldcat-no_zero = 'X'.
... "其它fieldcat属性
append i_fieldcat to allfields.
... "循环同上
3)调用ALV显示函数
call function 'REUSE_ALV_GRID_DISPLAY' "statt LIST
exporting
i_callback_program = myrepid
i_callback_pf_status_set = e_status "使用非标准按钮
is_layout = i_layout
i_CALLBACK_USER_COMMAND = 'USER_COMMAND' "非标准按钮动作
it_fieldcat = allfields "显示字段的内表
i_save = 'A' "是否打开保存
tables
t_outtab = itab " 内表名
exceptions
program_error = 1
others = 2.
注:alv有两种显示格式的function:(1)REUSE_ALV_LIST_DISPLAY(和 write到屏幕一样的样式);(2)REUSE_ALV_GRID_DISPLAY(单 元格样式)。
ALV2:ALV列、行、单元格颜色设置
1 )颜色含义
fldname-COLOR-inv = ‘ 0 ’ 。
ALV3:ALV的html表头
在ALV的function的exporting里添加属性:
endform.
ALV4:ALV里显示状态灯
1)在alv引用类型池定义时加入icon,如type-pools: slis, icon.
2)给显示内表itab定义一字段statu存储状态灯;
ALV5:ALV的layout属性
ALV里的显示属性可通过定义i_layout TYPE slis_layout_alv来使用不同的显示风格。可双击“slis_layout_alv”来查看类型组SLIS里的layout属性:
父类
|
子类
|
子类
|
主要属性(部分)
|
描述
|
slis_layout_alv
|
slis_layout_main
|
|
dummy
|
|
slis_layout_alv_spec
|
slis_layout_alv_spec0
|
no_colhead(1) type c
|
没有标题
| |
zebra(1) type c
|
行颜色间隔改变
| |||
no_vline(1) type c
|
没有竖线,由空格代替
| |||
no_hline(1) type c
|
没有横线,由空格代替
| |||
cell_merge(1) type c
|
单元格复制形式
| |||
edit(1) type c
|
可编辑仅为grid
| |||
edit_mode(1) type c
|
编辑模式仅为grid
| |||
numc_sum(1) type c
|
数值型字段汇总
| |||
no_input(1) type c
|
仅输出
| |||
no_keyfix(1) type c
|
不固定关键字列
| |||
slis_layout_alv_spec1
|
Display options 显示属性
|
| ||
colwidth_optimize(1) type c
|
自动调整列宽
| |||
no_min_linesize(1) type c
|
line size = width of the list
| |||
min_linesize like sy-linsz
|
if initial min_linesize = 80
| |||
max_linesize like sy-linsz,
|
Default 250
| |||
window_titlebar like sy-title
|
| |||
no_uline_hs(1) type c
|
| |||
Exceptions 扩展
|
| |||
lights_fieldname type slis_fieldname
|
| |||
lights_tabname type slis_tabname
|
| |||
lights_rollname like dfies-rollname
|
| |||
lights_condense(1) type c
|
| |||
Sums 合计
|
| |||
no_sumchoice(1) type c
|
不可选择总计
| |||
no_totalline(1) type c
|
没有合计行
| |||
no_subchoice(1) type c
|
不可选择小计
| |||
no_subtotals(1) type c
|
没有小计
| |||
no_unit_splitting type c
|
| |||
totals_before_items type c
|
在明细前显示合计
| |||
totals_only(1) type c
|
只显示合计
| |||
totals_text(60) type c
|
合计第一列文本行
| |||
subtotals_text(60) type c
|
小计第一列文本行
| |||
Interaction 继承
|
| |||
box_fieldname type slis_fieldname
|
| |||
box_tabname type slis_tabname
|
| |||
box_rollname like dd03p-rollname
|
| |||
key_hotspot(1) type c
|
keys as hotspot
| |||
flexible_key(1) type c
|
key columns movable
| |||
group_buttons(1) type c
|
buttons for COL1 - COL5
| |||
get_selinfos(1) type c
|
read selection screen
| |||
group_change_edit(1) type c
|
Settings by user for new group
| |||
no_scrolling(1) type c
|
no scrolling
| |||
Detailed screen 屏幕详细
|
| |||
detail_popup(1) type c
|
弹出显示明细
| |||
detail_initial_lines(1) type c
|
显示初始行
| |||
detail_titlebar like sy-title
|
详细标题栏
| |||
Display variants 显示变量
|
| |||
header_text(20) type c
|
标题按钮文本
| |||
default_item(1) type c
|
默认明细
| |||
colour 颜色
|
| |||
info_fieldname type slis_fieldname
|
| |||
coltab_fieldname type slis_fieldname
|
| |||
others 其它(略)
|
|
ALV6:ALV的fieldcat属性
ALV里的字段属性可通过定义i_fieldcat TYPE slis_t_fieldcat_alv来使用字段的属性。可双击“slis_t_fieldcat_alv”来查看类型组SLIS里的fieldcat 属性,slis_t_fieldcat_alv 来自类slis_fieldcat_alv,该类主要包含两个类:slis_fieldcat_main、 slis_fieldcat_alv_spec,主要有以下属性:
父类
|
子类
|
子类
|
主要属性(部分)
|
描述
|
Slis_fieldcat_alv
|
slis_fieldcat_main
|
slis_fieldcat_main0
|
row_pos
|
输出行
|
col_pos
|
列位置
| |||
fieldname
|
| |||
tabname
|
标签名称
| |||
currency(5)
|
货币单位
| |||
cfieldname
|
field with currency unit
| |||
ctabname
|
Table with currency unit
| |||
ifieldname
|
initial column
| |||
quantity(3)
|
计量单位
| |||
qfieldname
|
参考计量单位的字段名称
| |||
qtabname
|
Table with quantity unit
| |||
round
|
ROUND 值
| |||
exponent(3)
|
流动表示的指数
| |||
key(1)
|
关键字段
| |||
icon(1)
|
作为图标输出
| |||
symbol(1)
|
输出作为符号
| |||
checkbox(1)
|
作为复选框输出
| |||
just(1)
|
对齐
| |||
lzero(1)
|
输出前导零
| |||
no_sign(1)
|
输出抑制符号
| |||
no_zero(1)
|
为输出隐藏零
| |||
no_convext(1)
|
| |||
edit_mask
|
为输出编辑掩码
| |||
emphasize(4)
|
带有颜色的高亮列
| |||
fix_column(1)
|
固定列
| |||
do_sum(1)
|
总计列值
| |||
no_out(1)
|
列没有输出
| |||
tech(1)
|
技术字段
| |||
outputlen
|
列的字符宽度
| |||
offset
|
offset
| |||
seltext_l
|
长文本
| |||
seltext_m
|
中文本
| |||
seltext_s
|
短文本
| |||
slis_fieldcat_main1
|
ref_fieldname
|
| ||
ref_tabname
|
| |||
roundfieldname
|
| |||
roundtabname
|
| |||
decimalsfieldn
|
| |||
decimalstabnam
|
| |||
decimals_out(6)
|
控制小数点的位数
| |||
text_fieldname
|
| |||
reptext_ddic
|
| |||
ddic_outputlen
|
| |||
slis_fieldcat_alv_spec
|
|
key_sel(1)
|
field not obligatory
| |
no_sum(1)
|
do not sum up
| |||
sp_group(4)
|
group specification
| |||
reprep(1)
|
selection for rep/rep
| |||
input(1)
|
input
| |||
edit(1)
|
internal use only
| |||
hotspot(1)
|
hotspot
|
ALV7:ALV式的弹出窗口
弹出式窗口另外做法:可使用write到屏幕的办法,如下: