ABAP ALV函数参数说明

1. 方法"set_table_for_first_display"的参数说明

_BUFFER_ACTIVE 如果方法调用是静态的,可以设置这个标记,这表示,如果每次显示ALV都是

相同的字段目录.既然这样,那么字段目录会被放到一个特殊的缓存里,

这样加速了ALV的显示

I_STRUCTURE_NAME 输出数据参考的数据字典的结构名,例如\'SFLIGHT\'.如果指定了这个参数,字段

目录会自动生成,下面的参数IT_FIELDCATALOG不需要传值.

IS_VARIANT 决定布局显示的变式

I_SAVE 决定用户是否可以保存变式:

\'X\' 只能保存全局变式

\'U\' 只能保存特定变式

\'A\' 都可以保存

SPACE 不可以保存变式

I_DEFAULT 决定用户是否可以定义默认的布局:

\'X\' 可以定义默认布局,这个参数是默认的

SPACE 不可以定义默认布局

IS_LAYOUT 布局参数,传递布局控制的一些信息

IS_PRINT 后台打印属性的参数

IT_SPECIAL_GROUPS 如果在字段目录中,一些字段通过SP_GROUP被分组在一起.我们就必须为这些

组传递一个组的文本内表进去

IT_TOOLBAR_EXCLUDING 需要隐藏的标准的按钮的内表

IT_HYPERLINK 为每个句柄分配了超连接的内表,LVC_S_HYPE中的HREF存放了超连接的地址,

HANDLE指定了句柄,使用这些句柄,你可以在GRID中使用超连接

IT_ALV_GRAPHICS 比较复杂,没有用过,意思好象是可以在图表中显示ALV.

IT_OUTTAB 输出数据存放的内表,数据都是存放在这个内表里

IT_FIELDCATALOG 字段目录

IT_SORT 排序的标准

IT_FILTER 过滤的标准

 

2. 结构LVC_S_FCAT参数说明

1.字段目录  [Field catalog]

       字段目录是用来控制ALV显示的网格中每个字段的属性的,比如字段的顺序,对齐方式,可编辑状态,颜色,等等.

       常用的控制字段如下:(下面的示例将说明这些字段的使用,参考STRUCTURE LVC_S_FCAT)

2 ROW_POS ALV 控制: 输出行 (内部使用)  

3 COL_POS ALV 控制: 输出列 列的位置,第几列,例如1,2,…..

4 FIELDNAME ALV 控制: 内部表字段的字段名称 字段名称

5 TABNAME LVC 标签名称 表名,如果是内表,是1

6 CURRENCY ALV 控制: 货币单位  

7 CFIELDNAME ALV 控制: 参考的当前单位的字段名称  

8 QUANTITY ALV 控制: 计量单位  

9 QFIELDNAME ALV 控制: 参考计量单位的字段名称  

10 IFIELDNAME ALV 控制: 内部表字段的字段名称  

11 ROUND ALV 控制: ROUND 值  

12 EXPONENT ALV 控制:流动表示的指数  

13 KEY ALV 控制: 关键字段 关键字段,前面变蓝色

14 KEY_SEL ALV 控制: 可以被隐藏的关键列 可以被隐藏的关键列

15 ICON ALV 控制: 作为图标输出 此列作为图标输出

16 SYMBOL ALV 控制: 输出作为符号  

17 CHECKBOX ALV 控制: 作为复选框输出 复选框输出

18 JUST ALV 控制: 对齐 对齐方式:

\'R\': right justified

\'L\': left justified

\'C\': centered

19 LZERO ALV 控制: 输出前导零 X\'

20 NO_SIGN ALV 控制:输出抑制符号 X\',不输出符号

21 NO_ZERO ALV 控制: 为输出隐藏零 X\',隐藏0

22 NO_CONVEXT ALV 控制: 不考虑输出的转换退出  

23 EDIT_MASK ALV 控制: 为输出编辑掩码 格式

24 EMPHASIZE ALV 控制: 带有颜色的高亮列 列的颜色

25 FIX_COLUMN ALV 控制: 固定列  

26 DO_SUM ALV 控制: 总计列值 X\',合计

ALV_GRID介绍二(2)

27 NO_SUM ALV 控制: 没有总计列值 X\' ,没有合计

28 NO_OUT ALV 控制: 列没有输出 X\' ,隐藏此列

29 TECH ALV 控制: 技术字段 X\'.也是隐藏,但是有点不一样

30 OUTPUTLEN ALV 控制: 列的字符宽度 输出的长度

31 CONVEXIT 转换例程  

32 SELTEXT ALV 控制: 对话功能的列标识符  

33 TOOLTIP ALV 控制: 列抬头的工具提示  

34 ROLLNAME ALV 控制: F1 帮助的数据元素  

35 DATATYPE ABAP 字典中的数据类型 ABAP 字典中的数据类型

36 INTTYPE ABAP 数据类型(C,D,N,...) ABAP 数据类型(C,D,N,...)

37 INTLEN 以字节计的内部长度 内容的长度

38 LOWERCASE 允许/不允许小写字母 X\' 允许大小写

39 REPTEXT 标题  

40 HIER_LEVEL ALV 控制: 内部使用  

41 REPREP ALV 控制: 价值是补充/补充接口的选择标准 

42 DOMNAME 定义域名  

43 SP_GROUP 组代码  

44 HOTSPOT ALV 控制: 单击敏感 X\',下面出现下划线,响应单击

45 DFIELDNAME ALV 控制: 数据库中列组的字段名称  

46 COL_ID ALV 控制: 列 ID  

47 F4AVAILABL 字段有输入帮助吗 X\'.此列有搜索帮助

48 AUTO_VALUE ALV 控制: 自动复制值  

49 CHECKTABLE 表名  

50 VALEXI 固定值存在  

51 WEB_FIELD ALV 控制: 内部表字段的字段名称  

52 HREF_HNDL 自然数 热点连接的句柄

53 STYLE ALV 控制: 样式 下面有例子会介绍,比如PUSHBUTTION

54 STYLE2 ALV 控制: 样式  

55 STYLE3 ALV 控制: 样式  

56 STYLE4 ALV 控制: 样式  

57 DRDN_HNDL 自然数 下拉的句柄

58 DRDN_FIELD ALV 控制: 内部表字段的字段名称 下拉的字段

59 NO_MERGING 字符字段长度 1 相同的值不合并

60 H_FTYPE ALV 树控制: 功能类型 (总计,平均,最大.最小, ...)  

61 COL_OPT 可选列优化的条目  

62 NO_INIT_CH 字符字段长度 1  

63 DRDN_ALIAS 字符字段长度 1  

64 REF_FIELD ALV 控制: 内部表字段的参考字段名称  

65 REF_TABLE ALV 控制: 内部表字段的参考表名称  

66 TXT_FIELD ALV 控制: 内部表字段的字段名称  

67 ROUNDFIELD ALV 控制: 带有 ROUND 说明的字段名称 

68 DECIMALS_O ALV 控制: 输出小数位的编号  

69 DECMLFIELD ALV 控制: 带有 DECIMALS 说明的字段名称 

70 DD_OUTLEN ALV 控制: 输出字符长度  

71 DECIMALS 小数点后的位数 设置小数的位数

72 COLTEXT ALV 控制: 列标题 列标题

73 SCRTEXT_L 长字段标签  

74 SCRTEXT_M 中字段标签  

75 SCRTEXT_S 短字段标签  

76 COLDDICTXT ALV 控制: 确定 DDIC 文本参考 

77 SELDDICTXT ALV 控制: 确定 DDIC 文本参考 

78 TIPDDICTXT ALV 控制: 确定 DDIC 文本参考 

79 EDIT ALV 控制: 准备输入 输出状态.\'X\'可输入

80 TECH_COL ALV 控制: 内部使用  

81 TECH_FORM ALV 控制: 内部使用  

82 TECH_COMP ALV 控制: 内部使用  

83 HIER_CPOS ALV 控制: 层次列位置  

84 H_COL_KEY 树控制: 列名称/项目名称  

85 H_SELECT 标识是否可以选择树控制中的列  

86 DD_ROLL 数据元素 (语义域)  

87 DRAGDROPID ALV 控制: 拖&放处理拖放对象 

88 MAC 字符字段长度 1  

89 INDX_FIELD 自然数  

90 INDX_CFIEL 自然数  

91 INDX_QFIEL 自然数  

92 INDX_IFIEL 自然数  

93 INDX_ROUND 自然数  

94 INDX_DECML 自然数  

95 GET_STYLE 字符字段长度 1  

96 MARK 字符字段长度 1  

3. 结构LVC_S_LAYO参数说明(ALV 控制: 布局结构)

布局是用来控制整个ALV的一个布局,比如ALV的标题,是否可编辑,行颜色,列颜色。参照ALV的控制结构[LVC_S_LAYO],以后的例子我将详细介绍如何设置行颜色和列颜色.

   详细的结构说明

  字段名 描述  Value range

CWIDTH_OPT 最优化宽度 SPACE, \'X\'

SMALLTITLE 小标题,如果设置了这个字段,

则标题与列标题大小一样 SPACE, \'X\'

GRID_TITLE 标题,在网格和工具条之间 最长70个字符

NO_HEADERS 如果被设置,列标题隐藏 SPACE, \'X\'

NO_HGRIDLN 隐藏水平线 SPACE, \'X\'

NO_MERGING 禁用单元格合并 SPACE, \'X\'

NO_ROWMARK 如果被设置,选择列在选择模式

为D和A的时候隐藏 SPACE, \'X\'

NO_TOOLBAR 隐藏工具条 SPACE, \'X\'

NO_VGRIDLN 隐藏垂直线 SPACE, \'X\'

SEL_MODE 选择模式 SPACE, \'A\', \'B\', \'C\', \'D\'

SPACE 等同于B 参考B 默认设置

\'A\' 行和列的选择,无法选择单元格 多行,多列 用户可以使用最左边的选择按钮来选择多行

\'B\' 单选,不可以多选行,不可以多选单元格 多行,多列  

\'C\' 多选,可以多选行,不可以多选单元格 多行,多列  

\'D\' 单元格的选择,可以多选单元格 多行,多列,任何单元格多选 用户可以使用最左边的选择按钮来选择多行

EXCP_CONDS 合计例外 SPACE, \'X\'

EXCP_FNAME 字段名称带有例外编码 最长30个字符

EXCP_LED 例外作为 LED SPACE, \'X\'

EXCP_ROLLN 例外文档的数据元素 SPACE, \'X\'

CTAB_FNAME 带有复杂单元格颜色编码的字段名称 最长30个字符

INFO_FNAME 带有简单行彩色代码的字段名称 最长30个字符

ZEBRA 可选行颜色,如果设置了,出现了间隔色带 SPACE, \'X\'

NO_TOTLINE 没有总计 SPACE, \'X\'

NUMC_TOTAL 可以对NUMC字段进行合计 SPACE, \'X\'

TOTALS_BEF 总计输出在第一行,小计在新的值之前 SPACE, \'X\'

STYLEFNAME 设置单元格,比如PUSHBUTTON 最长30个字符

4. ALV的一些功能

功能一:在第一次显示以后,修改字段目录和布局.

 在运行的时候,很有可能需要在显示之后,需要设置一个新的布局或者字段目录.有下面这些方法去实现.

   字段目录 :    get_frontend_fieldcatalog

                set_frontend_fieldcatalog

   布局:         get_frontend_layout

                set_frontend_layout

   使用这些方法,你在执行的任何时候,可以获取这些内容,然后修改他们.

 

DATA ls_fcat TYPE lvc_s_fcat .

DATA lt_fcat TYPE lvc_t_fcat .

DATA ls_layout TYPE lvc_s_layo .

CALL METHOD gr_alvgrid->get_frontend_fieldcatalog

  IMPORTING

    et_fieldcatalog = lt_fcat[] .

 LOOP AT lt_fcat INTO ls_fcat .

   IF ls_fcat-fieldname = \'PAYMENTSUM\' .

     ls_fcat-no_out = space .

     MODIFY lt_fcat FROM ls_fcat .

   ENDIF .

 ENDLOOP .

CALL METHOD gr_alvgrid->set_frontend_fieldcatalog

   EXPORTING

     it_fieldcatalog = lt_fcat[] .

 

CALL METHOD gr_alvgrid->get_frontend_layout

  IMPORTING

    es_layout = ls_layout .

   ls_layout-grid_title = \'Flights (with Payment Sums)\' .

CALL METHOD gr_alvgrid->set_frontend_layout

  EXPORTING

is_layout = ls_layout .

功能二:设置排序条件

有时候我们需要使用到数据的排序.这个可以通过填充参考结构LVC_T_SORT创建的内表来实现,这个内表中包含了排序的标准.可以传递给set_table_for_first_display这个方法的IT_SORT参数来初始化一个排序.

FORM prepare_sort_table CHANGING pt_sort TYPE lvc_t_sort .

     DATA ls_sort TYPE lvc_s_sort .

     ls_sort-spos = \'1\' .

     ls_sort-fieldname = \'CARRID\' .

     ls_sort-up = \'X\' . "A to Z

     ls_sort-down = space .

     APPEND ls_sort TO pt_sort .

     ls_sort-spos = \'2\' .

     ls_sort-fieldname = \'SEATSOCC\' .

     ls_sort-up = space .

     ls_sort-down = \'X\' . "Z to A

     APPEND ls_sort TO pt_sort .

ENDFORM. " prepare_sort_table

 这有2点特别的说明:

    1.如果这边排序的字段名,不存在于字段目录中,那将出现DUMP.

    2.排序以后,垂直的网格中,如果出现相同的内容,就会合并,如果要避免,请在布局中设置"no_merging"为"X" .

  可以通过使用方法“get_sort_criteria” 和“set_sort_criteria”来获取和设置排序的标准.

功能三:设置过滤(和排序类似)

ALV的标准按钮中已经有过滤的功能,我们也可以在初始显示的时候就设置过滤条件.我们需要把过滤条件填充到参考表类型"LVC_T_FILT"创建的内表中.过滤条件是类似一个RANGES结构的.然后把这个内表传递给方法"SET_TABLE_FOR_FIRST_DISPLAY"中的参数"IT_FILTER"

 

FORM prepare_filter_table CHANGING pt_filt TYPE lvc_t_filt .

     DATA ls_filt TYPE lvc_s_filt .

     ls_filt-fieldname = \'FLDATE\' .

     ls_filt-sign = \'E\' .

     ls_filt-option = \'BT\' .

     ls_filt-low = \'20030101\' .

     ls_filt-high = \'20031231\' .

     APPEND ls_filt TO pt_filt .

ENDFORM. " preparefiltertable

    我们可以使用"get_filter_criteria" 和"set_filter_criteria"来获取过滤条件和设置过滤条件.

注意: 

  1.如果你设置了ALV是可编辑的,可能会覆盖你在布局中选择方式的设置的.

  2.设置了选择方式以后,我们可以使用很多方法来获取用户的选择.比如"GET_SELECTED_CELLS","GET_SELECTED_CELLS_ID","GET_SELECTED_ROWS","GET_SELECTED_COLUMNS"

  3.在执行PAI以后,用户所选择的单元格,行或者列可能丢失.你可以在PBO中,使用对应的SET方法来恢复这些选择.

你可能感兴趣的:(ABAP,ALV)