控制ALV界面的主要是字段目录,对应的结构是LVC_S_FCAT/LVC_T_FCAT,如果是调用不带LVC后缀的函数,则对应的是SLIS_FIELDCAT_ALV/SLIS_T_FIELDCAT_ALV
两套参数可以通过函数相互转换,如果需要的话,可以调用如下两个函数
LVC_TRANSFER_TO_SLIS
LVC_TRANSFER_FROM_SLIS
相关的函数在函数组SLVC中,有兴趣的可以进去看看
字段名 | 字段描述 | 功能 | 备注 |
COL_POS | ALV 控制: 输出列 | 列位置,即从左到右的顺序。若为空,则按字段添加到内表中的顺序 | 该字段可为空,如果为空,alv输出顺序按fcat字段顺序,KEY字段会提前到最左边 |
FIELDNAME | ALV 控制: 内部表字段的字段名称 | 字段名,对应输出内表的字段 | 如果字段在内表中不存在,可能会导致系统异常 |
KEY | ALV 控制: 关键字段 | key值在左右滚动时不移动,蓝色显示 | 如果没有设置COL_POS字段,KEY字段按顺序提前到最左边,即使KEY字段在FCAT的其他位置 |
ICON | ALV 控制: 作为图标输出 | TYPE-POOLS:ICON | showicon |
SYMBOL | ALV 控制: 输出作为符号 | TYPE-POOLS:SYM | showsymb |
CHECKBOX | ALV 控制: 作为复选框输出 | 复选框标志 只有字段值为X时,复选框才会被设置为选中,空或者其它值时为不选中 | |
JUST | ALV 控制: 对齐 | 空时: 字符默认左对齐:C/X/D/T/STRING/XSTRING 数值默认右对齐:I/F/P/N | 非空时:(R)ight/(L)eft/(C)enter |
LZERO | ALV 控制: 输出前导零 | N、NUMC类型的数据默认隐藏前导0,若要显示前导0,可设置此标识 | |
NO_SIGN | ALV 控制:输出抑制符号 | I/F/P类型的数据,显示时隐藏负号:- 不影响内表数据【-100,则会显示为100,但内表里仍是-100】 | 不影响字符数据 |
NO_ZERO | ALV 控制: 为输出隐藏零 | 当字段为数值为0时,不显示【如0,0.00,则会显示为空】 当字段包含前导0时,隐藏前导0,【如0100,则会显示为100】 | |
NO_CONVEXT | ALV 控制: 不考虑输出的转换退出 | 不考虑输出的转换退出 使字段【CONVEXT】【EDIT_MASK】及【REF_TABLE/REF_FIELD】设置的转换失效 | |
CONVEXIT | 转换例程 | 对应域的转换例程【如MATN1】 常用来隐藏前导0或者WBS内外码的转换 | CONVERSION_EXIT_ZDAY_INPUT CONVERSION_EXIT_ZDAY_OUTPUT |
EDIT_MASK | ALV 控制: 为输出编辑掩码 | 使用方式1:EDIT_MAST = '==MATN1' 为字段添加转换出口,效果与 CONVEXIT = 'MATN1'是相同的 | 使用方式2: EDIT_MAST = '____年__月__日'用于将20111111输出时转换为2011年11月11日】 类似WRITE语法的 USING EDIT MASK '____年__月__日' |
EMPHASIZE | ALV 控制: 带有颜色的高亮列 | 整列级别的颜色控制,如C100 第一位C(olor) 第二位 1/2/3/4/5/6/7 1 gray-blue:灰蓝色 2 light gray:浅灰色(ALV默认颜色) 3 yellow:黄色 4 blue-green:蓝绿色 5 green:绿色 6 red:红色 7 orange:橙色的 第三位(1/0) 0:颜色不加强(第四位起作用) 1:颜色加强(背景,第四位不起作用) 第四位(1/0) 0:背景颜色 1:字体颜色 | 如果想要在数据行级别、甚至单元格级别设置颜色,整列级别设置颜色就无法实现了,这时就需要在数据内表(itab)中添加对应的字段 rowcolor TYPE char4, "行颜色设置 cellcolor TYPE lvc_t_scol, "单元格颜色设置 通过内表数据来控制行、单元格颜色 行颜色的控制与列颜色类似,用四位字符控制 单元格颜色控制 FNAME 设置颜色的字段名 COLOR 的三个字段分别对应 -COL 第二位 -INT 第三位 -INV 第四位 |
FIX_COLUMN | ALV 控制: 固定列 | 与KEY字段类似,固定列但颜色不变蓝,必须要在左边才起作用(如果设置固定列的左边包含非固定列,则该列不固定) | |
DO_SUM | ALV 控制: 总计列值 | 对数值类型(IFP)的字段进行汇总,汇总后可进行小计 | |
NO_SUM | ALV 控制: 没有总计列值 | 不允许对列进行汇总,点击汇总则提示错误消息 | 该字段的作用是不允许用户进行汇总操作,如果设置了no_sum = x.该列进行汇总,汇总按钮失效 |
NO_OUT | ALV 控制: 列没有输出 | 隐藏列,设置为x:不输出该列 | |
TECH | ALV 控制: 技术字段 | 设置为X时,彻底隐藏,不能通过ALV布局调出来,与NO_OUT区别也在此 | |
OUTPUTLEN | ALV 控制: 列的字符宽度 | 指定字段的固定的输出宽度 若未指定参考,影响筛选界面字段宽度 | 优先级低:列宽(OUTPUTLEN) 优先级中:字段级优化列宽(COL_OPT) 优化级高:布局级优化列宽(CWIDTH_OPT) 同时设置时,优先级高的生效 |
SELTEXT | ALV 控制: 对话功能的列标识符 | 筛选界面字段名称 | 影响的是点击筛选按钮时,弹出的选择屏幕中的字段描述 |
TOOLTIP | ALV 控制: 列抬头的工具提示 | 鼠标放在列标题上的提示信息(默认是引用数据元素的标题) | 优先级最高 其次是 长/中/短描述 |
ROLLNAME | ALV 控制: F1 帮助的数据元素 | 按F1时关联的数据元素,显示的是对应数据元素的文档信息 | 如果字段没有指定文本信息,数据元素的描述信息会自动带过来 |
DATATYPE | ABAP 字典中的数据类型 | 域中设置的数据类型,长度为4, 如:CURR、QUAN、CHAR、DATS、TIMS | 不影响数据,只影响数据的输出效果(如对齐方式等) |
INTTYPE | ABAP 数据类型(C,D,N,...) | 预定义的数据类型:c/x/d/t/i/f/p/n | 数值-1,inttype = c,NO_SIGN不起作用,输出-1 |
INTLEN | 以字节计的内部长度 | 对应数据类型的长度 | 影响输出效果,如:对齐方式等 |
LOWERCASE | 允许/不允许小写字母 | X:区分大小写/空:不区分(小写自动转换为大写) | 主要影响数据的录入,当通过ALV输入数据的时候,如果未设置该标识,则输入小写字母如abc时,系统自动转换为ABC 主键字段一般都是大写,主要是文本、描述字段时需要注意 |
REPTEXT | 标题 | 覆盖DDIC数据元素标题标签 | |
SP_GROUP | 组代码 | 特殊分组,可在修改布局界面,快速选择该分组 | |
HOTSPOT | ALV 控制: 单击敏感 | 设置为带下划线热点,可触发热点、双击事件 | 缺点是无法选中 |
F4AVAILABL | 字段有输入帮助吗 | X:f4帮助起作用, space/空:不起作用 | |
STYLE | ALV 控制: 样式 | 设置为按钮、有F4、无F4、热点 此处的STYLE的控制时列级别的,如果需要在单元格级别设置字段级STYLE,同样需要在内表中添加字段来控制 style TYPE lvc_t_styl, "字段格式设置 注意该内表是排序表,添加数据时使用INSERT语法,用APPEND容易出错 | 查询CL_GUI_ALV_GRID的属性, MC_STYLE_BUTTON MC_STYLE_DISABLED MC_STYLE_ENABLED MC_STYLE_F4 MC_STYLE_F4_NO MC_STYLE_HOTSPOT MC_STYLE_HOTSPOT_NO MC_STYLE_NO_DELETE_ROW |
DRDN_HNDL | 自然数 | 设置整列为下拉列表 | 在FCAT中设置该字段,如1 使用方法set_drop_down_table初始化下拉列表内容 |
DRDN_FIELD | ALV 控制: 内部表字段的字段名称 | 设置单元格级别的下拉列表 | 内表添加字段HANDLE字段,如:DROP_field TYPE i FCAT-DRDN_FIELD = 'DROP_FIELD'.(如果想控制在单元格级别,就不要设置DRDN_HNDL字段了) 如果每行数据的下拉列表不一致,比较字段A的输入影响列表,则可以在A的修改时触发DATA_CHANGED事件中设置下拉明细 |
NO_MERGING | 字符字段长度 1 | X,无合并,排序时,相同值的单元格不合并 | |
H_FTYPE | ALV 树控制: 功能类型 (总计,平均,最大.最小, ...) | DO_SUM 和该字段组合使用,用于设置默认的汇总方式:总计SUM 平均值AVG 最大值MAX 最小值MIN ALV中不起作用 | 该字段不设置,则为总计SUM CL_GUI_ALV_TREE中使用 如果修改某叶子节点值(非叶子节点值自动计算累加),需要刷新父节点时,调用方法update_calculations |
COL_OPT | 可选列优化的条目 | 字段级别的优化宽度,会覆盖指定宽度 ALV_TREE中不起作用,ALV_TREE需要手动调用方法来实现字段的优化列宽 | X 代表第一次交互时 A 代表一直优化 Optimization Is Kept Always 空代表不优化 |
DRDN_ALIAS | 字符字段长度 1 | 当下拉列表是带有文本描述的时候,需要指定该字段为x,否则会导致数据类型错误 | X:返回值为INT_VALUE SPACE:返回值为VALUE,即文本描述 |
REF_FIELD | ALV 控制: 内部表字段的参考字段名称 | 参考字段(引用属性包括:列标题、快捷信息、F4帮助 | 鼠标放在列标题上,显示的是对应数据元素的长文本 如果字段宽度比较小,则会优先显示heading文本,将字段宽度拉长以后,显示的完整描述是中文本 |
REF_TABLE | ALV 控制: 内部表字段的参考表名称 | 参考DDIC表/结构 | |
DECIMALS_O | ALV 控制: 输出小数位的编号 | 如果字段不是数量、金额字段(未参考),可在此设置小数点位数 | |
COLTEXT | ALV 控制: 列标题 | 列标题,如果字段参考了DDIC,可不设置 | |
SCRTEXT_L | 长字段标签 | 覆盖DDIC数据元素长标签 | 鼠标移动到标题上的时候提示的消息,如果长文本不存在且有参考数据库字段,则显示数据元素的长文本 |
SCRTEXT_M | 中字段标签 | 覆盖DDIC数据元素中标签 | 如果长文本不存在,则显示中文本 |
SCRTEXT_S | 短字段标签 | 覆盖DDIC数据元素短标签 | 如果中文本不存在,则显示短文本 |
COLDDICTXT | ALV 控制: 确定 DDIC 文本参考 | S M L R代表引用参考数据元素的哪个标签 | |
SELDDICTXT | ALV 控制: 确定 DDIC 文本参考 | S M L R代表引用参考数据元素的哪个标签 | |
TIPDDICTXT | ALV 控制: 确定 DDIC 文本参考 | S M L R代表引用参考数据元素的哪个标签 | |
EDIT | ALV 控制: 准备输入 | X:可编辑,space:不可编辑 | 该控制是在整列的级别上,如果想控制仅仅某一行可编辑,则需要通过style来控制 |