SAP ALV 详细说明 (转)

标签:
ooalv |
分类: alv |
一.ALV介绍
http://hi.csdn.net/attachment/201203/22/0_1332397772OZJ7.gifALV
它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏.
三.ALV GRID CONTROL实例
http://hi.csdn.net/attachment/201203/22/0_13323978227DpL.gifALV
四、ALV
GRID相关的几个控制结构
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 |
|
12 |
EXPONENT |
ALV |
|
13 |
KEY |
ALV |
关键字段,前面变蓝色 |
14 |
KEY_SEL |
ALV |
可以被隐藏的关键列 |
15 |
ICON |
ALV |
此列作为图标输出 |
16 |
SYMBOL |
ALV |
|
17 |
CHECKBOX |
ALV |
复选框输出 |
18 |
JUST |
ALV |
对齐方式: |
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',合计 |
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 |
|
35 |
DATATYPE |
ABAP |
ABAP |
36 |
INTTYPE |
ABAP |
ABAP |
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 |
|
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 |
字符字段长度 |
相同的值不合并 |
60 |
H_FTYPE |
ALV |
|
61 |
COL_OPT |
可选列优化的条目 |
|
62 |
NO_INIT_CH |
字符字段长度 |
|
63 |
DRDN_ALIAS |
字符字段长度 |
|
64 |
REF_FIELD |
ALV |
|
65 |
REF_TABLE |
ALV |
|
66 |
TXT_FIELD |
ALV |
|
67 |
ROUNDFIELD |
ALV |
|
68 |
DECIMALS_O |
ALV |
|
69 |
DECMLFIELD |
ALV |
|
70 |
DD_OUTLEN |
ALV |
|
71 |
DECIMALS |
小数点后的位数 |
设置小数的位数 |
72 |
COLTEXT |
ALV |
列标题 |
73 |
SCRTEXT_L |
长字段标签 |
|
74 |
SCRTEXT_M |
中字段标签 |
|
75 |
SCRTEXT_S |
短字段标签 |
|
76 |
COLDDICTXT |
ALV |
|
77 |
SELDDICTXT |
ALV |
|
78 |
TIPDDICTXT |
ALV |
|
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 |
字符字段长度 |
|
89 |
INDX_FIELD |
自然数 |
|
90 |
INDX_CFIEL |
自然数 |
|
91 |
INDX_QFIEL |
自然数 |
|
92 |
INDX_IFIEL |
自然数 |
|
93 |
INDX_ROUND |
自然数 |
|
94 |
INDX_DECML |
自然数 |
|
95 |
GET_STYLE |
字符字段长度 |
|
96 |
MARK |
字符字段长度 |
|
2.布局控制[layout]
字段名 |
描述 |
|
CWIDTH_OPT |
最优化宽度 |
SPACE, 'X' |
SMALLTITLE |
小标题,如果设置了这个字段, |
SPACE, 'X' |
GRID_TITLE |
标题,在网格和工具条之间 |
最长70个字符 |
NO_HEADERS |
如果被设置,列标题隐藏 |
SPACE, 'X' |
NO_HGRIDLN |
隐藏水平线 |
SPACE, 'X' |
NO_MERGING |
禁用单元格合并 |
SPACE, 'X' |
NO_ROWMARK |
如果被设置,选择列在选择模式 |
SPACE, 'X' |
NO_TOOLBAR |
隐藏工具条 |
SPACE, 'X' |
NO_VGRIDLN |
隐藏垂直线 |
SPACE, 'X' |
SEL_MODE |
选择模式 |
SPACE, '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个字符 |
3.打印和排序,过滤控制
五.编写简单的ALV程序.
第一步:创建个SCREEN,在屏幕上创建个容器,CONTAINER.定义变量.
第二步: 创建ALV这个对象,它的父组件是那个容器.
PERFORM. prepare_field_catalog CHANGINGgt_fieldcat .
PERFORM. prepare_layout CHANGING gs_layout .
CALL
METHODgr_alvgrid->set_table_for_first_display
EXPORTING
* I_BUFFER_ACTIVE
=
*
I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME
=
*
IS_VARIANT =
* I_SAVE =
* I_DEFAULT =
'X'
is_layout =
gs_layout
* IS_PRINT
=
*
IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING
=
*
IT_HYPERLINK =
CHANGING
it_outtab =
gt_list[]
it_fieldcatalog =
gt_fieldcat
* IT_SORT
=
*
IT_FILTER =
EXCEPTIONS
invalid_parameter_combination
= 1
program_error =
2
too_many_lines =
3
OTHERS = 4
.
CALL
METHODgr_alvgrid->refresh_table_display
*
EXPORTING
*
IS_STABLE =
* I_SOFT_REFRESH
=
EXCEPTIONS
finished =
1
OTHERS = 2
.
IF
sy-subrc <> 0.
*--异常处理
ENDIF.
参数 |
含义 |
I_BUFFER_ACTIVE |
如果方法调用是静态的,可以设置这个标记,这表示,如果每次显示ALV都是 |
I_STRUCTURE_NAME |
输出数据参考的数据字典的结构名,例如'SFLIGHT'.如果指定了这个参数,字段 |
IS_VARIANT |
决定布局显示的变式 |
I_SAVE |
决定用户是否可以保存变式: |
I_DEFAULT |
决定用户是否可以定义默认的布局: |
IS_LAYOUT |
布局参数,传递布局控制的一些信息 |
IS_PRINT |
后台打印属性的参数 |
IT_SPECIAL_GROUPS |
如果在字段目录中,一些字段通过SP_GROUP被分组在一起.我们就必须为这些 |
IT_TOOLBAR_EXCLUDING |
需要隐藏的标准的按钮的内表 |
IT_HYPERLINK |
为每个句柄分配了超连接的内表,LVC_S_HYPE中的HREF存放了超连接的地址, |
IT_ALV_GRAPHICS |
比较复杂,没有用过,意思好象是可以在图表中显示ALV. |
IT_OUTTAB |
输出数据存放的内表,数据都是存放在这个内表里 |
IT_FIELDCATALOG |
字段目录 |
IT_SORT |
排序的标准 |
IT_FILTER |
过滤的标准 |
方法"REFRESH_TABLE_DISPLAY"的参数说明
参数 |
含义 |
IS_STABLE |
刷新的稳定性,有2个参数,一个是行,一个是列.如果设置了相应的值, |
I_SOFT_REFRESH |
这个参数只是在异常情况下被使用,如果设置了这个参数,任何创建的合计, |
第三步,获取要显示数据的字段目录.有两种方式.
FORM.
prepare_field_catalog CHANGINGpt_fieldcat TYPE lvc_t_fcat
.
DATA
ls_fcat type lvc_s_fcat .
ls_fcat-fieldname = 'CARRID'
.
ls_fcat-inttype = 'C'
.
ls_fcat-outputlen = '3'
.
ls_fcat-coltext = 'Carrier
ID' .
ls_fcat-seltext = 'Carrier
ID' .
APPEND ls_fcat to pt_fieldcat
.
CLEAR
ls_fcat .
ls_fcat-fieldname = 'CONNID'
.
ls_fcat-ref_table = 'SFLIGHT'
.
ls_fcat-ref_table = 'CONNID'
.
ls_fcat-outputlen = '3'
.
ls_fcat-coltext = 'Connection
ID' .
ls_fcat-seltext = 'Connection
ID' .
APPEND ls_fcat to pt_fieldcat
.
ENDFORM.
.
FORM.
prepare_field_catalog CHANGING pt_fieldcat TYPElvc_t_fcat
.
DATA
ls_fcat type lvc_s_fcat .
CALL FUNCTION
'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name =
'SFLIGHT'
CHANGING
ct_fieldcat =
pt_fieldcat[]
EXCEPTIONS
inconsistent_interface =
1
program_error =
2
OTHERS =
3.
IF sy-subrc <>
0.
*--Exception
handling
ENDIF.
LOOP AT pt_fieldcat INTO
ls_fcat .
CASE pt_fieldcat-fieldname
.
WHEN
'CARRID' .
ls_fcat-outpulen = '10'
.
ls_fcat-coltext = 'Airline
Carrier ID' .
MODIFY pt_fieldcat FROM
ls_fcat .
WHEN 'PAYMENTSUM'
.
ls_fcat-no_out = 'X'
.
MODIFY
pt_fieldcat FROM ls_fcat .
ENDCASE .
ENDLOOP .
ENDFORM. .
第四步,设置布局
FORM.
prepare_layout CHANGING ps_layout TYPElvc_s_layo.
ENDFORM. " prepare_layout
第五步,排除不需要的标准按钮(可选,这个是第一种方法,还有另外一种,在添加自定义的按钮的时候介绍)
FORM.
exclude_tb_functions CHANGING pt_exclude TYPEui_functions
.
ENDFORM. .
按照上面的步骤,一个ALV的DEMO基本可以创建了.下面我们将讲述一些功能.