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 hotspotzebra(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 onlynumc_sum(1) type c, " totals for NUMC-Fields possib.no_input(1) type c, " only display fieldsf2code like sy-ucomm, "gs_layout-f2code = '&ETA'.设置触发弹出详细信息窗口的功能码,这里是双击(&ETA)就可以弹出详细窗口,而不需要通过右键菜单reprep(1) type c, " report report interface activeno_keyfix(1) type c, " do not fix keycolumnsexpand_all(1) type c, " Expand all positionsno_author(1) type c, " No standard authority check
* PF-statusdef_status(1) type c, " default status space or 'A'item_text(20) type c, " Text for item buttoncountfname type lvc_fname,* Display optionscolwidth_optimize(1) type c, "ALV网格(单元格)宽度设置为自动最优化,按输出内容宽度自动调整no_min_linesize(1) type c, " line size = width of the listmin_linesize like sy-linsz, " if initial min_linesize = 80max_linesize like sy-linsz, " Default 250window_titlebar like sy-title,no_uline_hs(1) type c,
* Exceptionslights_fieldname type slis_fieldname," fieldname for exception列显示为红绿灯lights_tabname type slis_tabname, " fieldname for exceptionlights_rollname like dfies-rollname," rollname f. exceptiondoculights_condense(1) type c, " fieldname for exception
* Sumsno_sumchoice(1) type c, " no choice for summing upno_totalline(1) type c, " no total lineno_subchoice(1) type c, " no choice for subtotalsno_subtotals(1) type c, " no subtotals possibleno_unit_splitting type c, " no sep. tot.lines by inh.unitstotals_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 checkboxbox_rollname like dd03p-rollname," rollname for checkboxexpand_fieldname type slis_fieldname, " fieldname flag 'expand'hotspot_fieldname type slis_fieldname, " fieldname flag hotspotconfirmation_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 - COL5get_selinfos(1) type c, " read selection screengroup_change_edit(1) type c, " Settings by user for new groupno_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 variantsheader_text(20) type c, " Text for header buttondefault_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~C999coltab_fieldname type slis_fieldname, " colors
* otherslist_append(1) type c, " no call screenxifunckey type aqs_xikey, " eXtended interaction(SAPQuery)xidirect type flag, " eXtended INTeraction(SAPQuery)dtc_layout type dtc_s_layo, "Layout for configure the Tabstipallow_switch_to_list(1) type c, "ACC: Switch from FullGrid to List
fieldcat 主要用于ALV显示结构的定义,包括栏位名称,类型,输出格式,
row_pos LIKE sy-curow, " output in rowcol_pos LIKE sy-cucol, " position of the column列的输出位置字段在表中第几列fieldname TYPE slis_fieldname,"针对输出内表哪列进行设置,只有设置了的列才会显示,如果没有设置,则不会显示在ALV中。如果此字段是CURR(currency field) ,QUAN(Quantity field) 需要指定相应的CUKY, UNIT字段.需设置Cfieldname Ctabname 和Qfieldname Qtabnametabname TYPE slis_tabname,currency(5) TYPE c, " tcurx表中的货币名称cfieldname TYPE slis_fieldname, " field with currency unit金额字段所参照的货币单位字段名称(货币单位字段为数据内表中的某列?)ctabname TYPE slis_tabname, " and tableifieldname TYPE slis_fieldname, " initial columnquantity(3) TYPE c, "计量单位qfieldname TYPE slis_fieldname, " field with quantity unitqtabname TYPE slis_tabname, " and tableroundtypei, " 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 = spaceno_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 headerrollname 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 obligatoryno_sum(1) TYPE c, " do not sum upsp_group(4) TYPE c, " group specificationreprep(1) TYPE c, " selection for rep/repinput(1) TYPE c, " inputedit(1) TYPE c, " internal use only是否可编辑hotspot(1) TYPE c, " hotspot设置字段内容下面是否有热点(有下划线,可点击,单击即可触发相应事件)