ALV的相关函数:REUSE_ALV_GRID_DISPLAY 代表grid格式的alv,REUSE_ALV_LIST_DISPLAY,代表list格式的alv,
REUSE_ALV_FIELDCATALOG_MERGE:根据内表定义的数据字典对象快速生成fieldcat内表(必须要引用data element)。
此外还有一种以LVC结尾的ALV函数REUSE_ALV_GRID_DISPLAY_LVC,这个函数中的引用类型不再是slis,而是数据字典结构,而且与OO ALV所用到的类型也基本相同,所以推荐使用 LVC结尾的函数。
先介绍以下slis类型池的参数。
layout 主要用于ALV整体输出格式,结构属于类型池: type-pools:slis.
no_colhead(1) type c, " no headings不显示列标题行
no_hotspot(1) type c, " headings not as hotspot
zebra(1) type c, " striped pattern斑马线显示,颜色隔行交替显示
no_vline(1) type c, " columns separated by space不显示垂直网格线
no_hline(1) type c, "rows separated by space B20K8A0N5D不显示水平网格线
cell_merge(1) type c, " not suppress field replication ALV单元格中的内容能够复制到剪贴板
edit(1) type c, " for grid onlyALV是否可编辑,注意只对Grid模式有效,对List模式无效
edit_mode(1) type c, " for grid only
numc_sum(1) type c, " totals for NUMC-Fields possib.
no_input(1) type c, " only display fields
f2code like sy-ucomm, "gs_layout-f2code = '&ETA'.设置触发弹出详细信息窗口的功能码,这里是双击(&ETA)就可以弹出详细窗口,而不需要通过右键菜单
reprep(1) type c, " report report interface active
no_keyfix(1) type c, " do not fix keycolumns
expand_all(1) type c, " Expand all positions
no_author(1) type c, " No standard authority check
* PF-status
def_status(1) type c, " default status space or 'A'
item_text(20) type c, " Text for item button
countfname type lvc_fname,
* Display options
colwidth_optimize(1) type c, "ALV网格(单元格)宽度设置为自动最优化,按输出内容宽度自动调整
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," fieldname for exception列显示为红绿灯
lights_tabname type slis_tabname, " fieldname for exception
lights_rollname like dfies-rollname," rollname f. exceptiondocu
lights_condense(1) type c, " fieldname for exception
* Sums
no_sumchoice(1) type c, " no choice for summing up
no_totalline(1) type c, " no total line
no_subchoice(1) type c, " no choice for subtotals
no_subtotals(1) type c, " no subtotals possible
no_unit_splitting type c, " no sep. tot.lines by inh.units
totals_before_items type c, " diplay totals before the items统计行会在数据行前面显示
totals_only(1) type c, " show only totals只显示合计
totals_text(60) type c, " text for 1st col. in total line合计第一列文本
subtotals_text(60) type c, " text for 1st col. in subtotals
* Interaction交互
box_fieldname type slis_fieldname, " fieldname for checkbox指定数据内表中哪列以选择按钮形式显示(首列前可按下或弹上来的按钮),ALV最左上角会出现全选按钮
box_tabname type slis_tabname," tabname for checkbox
box_rollname like dd03p-rollname," rollname for checkbox
expand_fieldname type slis_fieldname, " fieldname flag 'expand'
hotspot_fieldname type slis_fieldname, " fieldname flag hotspot
confirmation_prompt, " confirm. prompt when leaving当退出ALV报表展示界面时,是否需要提示用户
key_hotspot(1) type c, " keys as hotspot " K_KEYHOT设置关键字段是否是热点,可单击
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, " show detail in popup 右键中有 Detail 菜单,是否弹出详细信息窗口
detail_initial_lines(1) type c, " show also initial lines为空行时单元格内容也会显示在右键弹出的详细框中
detail_titlebar like sy-title," Titlebar for detail设置详细弹出窗口的标题栏
* Display variants
header_text(20) type c, " Text for header button
default_item(1) type c, " Items as default
* colour颜色
info_fieldname type slis_fieldname, " infofield for listoutput指定数据输出内表中哪列存储的是颜色,用来设置ALV每行数据的颜色。注:使用属性需要同时在数据内表中定义一个与该参数所定义字段名相同的栏位,如:LAYOUT-INFO_FIELDNAME=’COLOR’,假设数据内表名为LT_OUT,则需要在该内表增加一个栏们“COLOR”,颜色范围 C000~C999
coltab_fieldname type slis_fieldname, " colors
* others
list_append(1) type c, " no call screen
xifunckey type aqs_xikey, " eXtended interaction(SAPQuery)
xidirect type flag, " eXtended INTeraction(SAPQuery)
dtc_layout type dtc_s_layo, "Layout for configure the Tabstip
allow_switch_to_list(1) type c, "ACC: Switch from FullGrid to List
fieldcat 主要用于ALV显示结构的定义,包括栏位名称,类型,输出格式,
row_pos LIKE sy-curow, " output in row
col_pos LIKE sy-cucol, " position of the column列的输出位置字段在表中第几列
fieldname TYPE slis_fieldname,"针对输出内表哪列进行设置,只有设置了的列才会显示,如果没有设置,则不会显示在ALV中。如果此字段是CURR(currency field) ,QUAN(Quantity field) 需要指定相应的CUKY, UNIT字段.需设置Cfieldname Ctabname 和Qfieldname Qtabname
tabname TYPE slis_tabname,
currency(5) TYPE c, " tcurx表中的货币名称
cfieldname TYPE slis_fieldname, " field with currency unit金额字段所参照的货币单位字段名称(货币单位字段为数据内表中的某列?)
ctabname TYPE slis_tabname, " and table
ifieldname TYPE slis_fieldname, " initial column
quantity(3) TYPE c, "计量单位
qfieldname TYPE slis_fieldname, " field with quantity unit
qtabname TYPE slis_tabname, " and table
roundtypei, " round in write statement四舍五入至小数点后多少位
exponent(3) TYPE c, " exponent for floats浮点数的幂指数为多少位
key(1) TYPE c, " column with key-color指定字段是否是关键字段,如果是则单元格显示的颜色会不同,并会靠前显示
icon(1) TYPE c, " as icon字段将以图标形式显示,INCLUDE <list> ,图标字段内容来自list Inc.文件
symbol(1) TYPE c, " as symbol字段内容作为符号输出,与上面的ICON属性相似
checkbox(1) TYPE c, " as checkbox字段将以复选框形式显示
just(1) TYPE c, " (R)ight (L)eft (C)ent.单元格中内容显示时对齐方式。不设置时按钮数据类型默认对齐方式来对齐
lzero(1) TYPE c, " leading zero 为X时输出前导零
no_sign(1) TYPE c, " write no-sign 不显示数字符号
no_zero(1) TYPE c, " write no-zero 只输出有意义的值,空值不输出。为X时全为零(如:00000)时不输出,所以不输出零时应该最好同时设置lzero = sapce与no_zero = X,相反如果要输出,则应同时设置lzero = X 与no_zero = space
no_convext(1) TYPE c,
edit_mask TYPE slis_edit_mask, "对字段内容进行掩码格式化输出,具体请参照《ABAP BC Programming.docx》中的WRITE … TO章节,如:gt_fieldcat-edit_mask = '____/__/__'可对日期字段都日期格式化显示
emphasize(4) TYPE c, " emphasize设置列的颜色
fix_column(1) TYPE c, " Spalte fixieren列固定不滚动,与Key属性相似,但颜色不会发生变化
do_sum(1) TYPE c, " sum up该列是否进行小计,需与gt_sort-subtot一起使用(即需要参考排序),否则只对整列进行一个合计
no_out(1) TYPE c, " (O)blig.(X)no out但注意用户可以change layout(布局设置)来显示出此列
tech(1) TYPE c, " technical field该字段为技术字段:设置为技术列的列将不会再显示出来,即使是在布局设置里也是看不到的
outputlen LIKE dd03p-outputlen, "列的字符输出宽度
OFFSET TYPE dd03p-outputlen, " offset
"调整输出列抬头的文本:文本可以随着用户调整列的宽度而变化,其文本即是在对应data element中定义的,如果需要定制,则可以指定以下字段
seltext_l LIKE dd03p-scrtext_l, " long key word标题字段显示的名称(长)
seltext_m LIKE dd03p-scrtext_m, " middle key word标题字段显示的名称(中)
seltext_s LIKE dd03p-scrtext_s, " short key word标题字段显示的名称(短)
ddictxt(1) TYPE c, " (S)hort (M)iddle (L)ong设置以长、中还是短名称来显示,取值分别为 S、M、L。直接指定文本显示为长文本、中、还是短文本, 指定这个字段后则会固定下来,不会随着用户的宽度调整变化.
reptext_ddic LIKE dd03p-reptext, " heading (ddic),(header) Analogous(相似) to the Data element main header
rollname LIKE dd03p-rollname,"f1帮助需参照的dataelement,在alv的显示界面将鼠标放到该字段的位置后按f1会弹出该字段的说明。另外,可以不指明字段的描述(如seltext_l、seltext_m、seltext_s),
" 函数会自动将字段的描述显示为该参照的数据元素下面datatype两个属性在字段如果是金额或p小数(数量)类型时,需要对datatype此属性进行设置,否则,如果不设置时,在修改对应单元格内容时,
"会自动将你所输入的数除100,即小数点提前两位;并且如果是数量类型,除了设置datatype外,inttype也需要进行设置,且为 c,具体实现请参考这里
datatype LIKE dd03p-datatype,
inttype LIKE dd03p-inttype,
intlen LIKE dd03p-intlen,
lowercase LIKE dd03p-lowercase,
ref_fieldname LIKE dd03p-fieldname,"如需单元格显示F4输入帮助,则需要指定字段所参照的表名
ref_tabname LIKE dd03p-tabname,"如需单元格显示F4输入帮助,则需要指定字段所参照的表中的字段名
roundfieldname TYPE slis_fieldname,
roundtabname TYPE slis_tabname,
decimalsfieldname TYPE slis_fieldname,
decimalstabname TYPE slis_tabname,
decimals_out(6) TYPE c, " decimals in write statement控制小数点的位数
text_fieldname TYPE slis_fieldname,
ddic_outputlen LIKE dd03p-outputlen,
key_sel(1) TYPE c, " field not obligatory
no_sum(1) TYPE c, " do not sum up
sp_group(4) TYPE c, " group specification
reprep(1) TYPE c, " selection for rep/rep
input(1) TYPE c, " input
edit(1) TYPE c, " internal use only是否可编辑
hotspot(1) TYPE c, " hotspot设置字段内容下面是否有热点(有下划线,可点击,单击即可触发相应事件)
对 lvc_s_layo 结构,选择方式,自带选择不显示
ls_layout-sel_mode = 'A'.
ls_layout-no_rowmark = 'X'.
附加:
如果没有SEL字段以及 EDIT的话,没有标准的选择方式
ls_fcat-edit = &6.