REUSEALVGRIDDISPLAY超详细讲解.docx
《REUSEALVGRIDDISPLAY超详细讲解.docx》由会员分享,可在线阅读,更多相关《REUSEALVGRIDDISPLAY超详细讲解.docx(15页珍藏版)》请在冰豆网上搜索。
REUSEALVGRIDDISPLAY超详细讲解
一、
REUSE_ALV_GRID_DISPLAY详解
调用功能模块:
CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_interface_check ='' 接口一致性检查
i_callback_program =sy-repid 当前程序名
is_layout =layout 输出样式
it_fieldcat =fieldcat[] 字段定义描述表
i_callback_pf_status_set='PF_STATUS_SET' 触发事件调用子程序
i_callback_user_command ='USER_COMMAND' 鼠标事件操作子程序
it_events =i_events[] 出口程序触发事件
i_callback_html_top_of_page ='ALV_TOP_OF_PAGE' ALV输出表头设置
i_grid_settings=wl_lvc_s_glay 打印表头设置
it_sort=sortable[] 排序设置
TABLES
t_outtab =ig_out
EXCEPTIONS
program_error =1
OTHERS =2.
常用属性:
(赋值’’中内容必须为大写)
1. Fieldcat
data:
fieldcattypeslis_t_fieldcat_alvwithheaderline.
it_fieldcat =fieldcat[]
属性
(用来定义表单中的各个列的相关信息)
Fieldcat-col_pos=n. 输出列
Fieldcat-tabname=‘FIELDNAME’. 对应的内表字段名
Fieldcat-seltext_s/m/l=‘列名’. 输出列文本
(_s:
短文本
_l:
长文本)
Fieldcat-emphasize=‘CX10’. 带有颜色的高亮列
(其中X=(1-7)
颜色同format)
Fieldcat-hotspot=‘X’. 作为热点显示
可触发鼠标触发事件
Fieldcat-currency=‘CURRKEY’. 表TCURX中的货币名称
Fieldcat-quantity(3) 计量单位
Fieldcat-qfieldname 参考计量单位的字段名称
Fieldcat-round=n. 四舍五入至小数位数下
n位
Fieldcat-exponent=n. 浮点数的幂指数为n
Fieldcat-key=‘X’. 关键字段
Fieldcat-icon=‘X’. 作为图标输出
Fieldcat-symbol=‘X’. 输出作为符号
Fieldcat-checkbox=‘X’. 作为复选框输出
Fieldcat-just=SPACE,'R','L','C'. 对齐方式
Fieldcat-lzero=‘X’. 输出前导零
Fieldcat-no_sign=‘X’. 输出抑制符号
Fieldcat-no_zero=‘X’. 为输出隐藏零
Fieldcat-edit_mask=SPACE,mask.. 输出为mask的模式
Fieldcat-fix_column=‘X’. 固定列
Fieldcat-do_sum=‘X’. 总计列值总和
Fieldcat-no_out=‘X’. 列不输出
Fieldcat-tech=‘X’. 该字段为技术字段
Fieldcat-outputlen=n 列的字符宽度为n
Fieldcat-decimals_out=n 能控制小数点的位数为n
Fieldcat-datatype=C,I,N… 定义数据类型
2. SORT
data:
sortabletypeslis_t_sortinfo_alvwithheaderline.
it_sort=sortable[]
属性
(排序)
Sortable-Fieldname 字段名
Up 升序排列
Down 降序排列
Subtot
3. Layout
data:
layouttypeslis_layout_alv.
is_layout =layout
属性(用于定义ALV表单的相关格式、属性)
info_fieldname='LINE_COLOR'. 设置特殊行颜色
(将LINE_COLOR增加到内表字段,写'CX10'到特殊行的LINE_COLOR,X为颜色值)
colwidth_optimize=‘X’. 优化列宽设置
no_colhead='X'. 不显示列名
no_vline='X'. 不显示列间竖线
zebra
f2code='&ETA'. 设置触发弹出详细信息窗口的功能码,这里是双击
no_vline 这个用来设置列间隔线
detail_initial_lines
detail_popup 是否弹出详细信息窗口
detail_titlebar 设置弹出窗口的标题栏
totals_text
totals_only
group_change_edit
header_text
4.按钮
DATA:
i_eventsTYPEslis_t_eventWITHHEADERLINE.
事件:
it_events =i_events[]
i_callback_pf_status_set='PF_STATUS_SET'
i_callback_user_command ='USER_COMMAND'
出口程序触发事件对应子程序:
FORMPF_STATUS_SETUSINGrt_extabTYPEslis_t_extab.
FORMuser_commandUSINGucommLIKEsy-ucommselfieldTYPEslis_selfield.
系统按钮功能码:
功能代码:
函数文本:
图标名称:
&ETA 细节 ICON_SELECT_DETAIL
&EB9 调用报告... ICON_TABLE_SETTINGS
&REFRESH 刷新 ICON_REFRESH
&ALL 全部选择 ICON_SELECT_ALL
&SAL 取消全选 ICON_DESELECT_ALL
&OUP 按升序排列 ICON_SORT_UP
&ODN 按降序排列 ICON_SORT_DOWN
&ILT 设置过滤器 ICON_FILTER
&UMC 总计 ICON_SUM
&SUM 小计... ICON_INTERMEDIATE_SUM
&RNT_PREV 打印预览 ICON_LAYOUT_CONTROL
&VEXCEL MicrosoftExcel ICON_XLS
&AQW 字处理... ICON_WORD_PROCESSING
%PC 本地文件 ... ICON_EXPORT
%SL 邮件收件人 ICON_MAIL
&ABC ABC分析 ICON_ABC
&GRAPH 图形 ICON_GRAPHICS
&OL0 更改布局... ICON_ALV_VARIANTS
&OAD 选择格式... ICON_ALV_VARIANT_CHOOSE
&AVE 保存格式... ICON_ALV_VARIANT_SAVE
&INFO 信息 ICON_INFORMATION
4. ALV表头设置
i_callback_html_top_of_page ='ALV_TOP_OF_PAGE'
formtop_of_pageusingcl_ddtypereftocl_dd_document.
语法同HTMLfomat
二、
REUSE_ALV_GRID_DISPLAY常用参数用法
byliyi
ly_liyi@
NeusoftGroupERPDivision
Jan.2008
Thisdocumentcontains17pages.Itcanbetransmittedorprintedasawhole.Noportionofitcanbemodifiedorreproducedwithoutthewrittenpermissionfromtheauthor.
TableofContents
KEYWORDS:
REUSE_ALV_GRID_DISPLAY参数
1.前提条件
ALVReport是SAP中一种常见的报表展现形式,它可以标准化、简单化R/3系统中的表单,可以提供给用户一个统一的表单格式以及用户接口。
ALV既能显示简单表单(SIMPLELIST)又能显示有序表单(SEQUENTIALLIST),编写一个ALV程序包含以下基本流程:
第一步:
定义将要用到的表,即TALBES定义部分,然后定义TYPE-POOLS:
SLIS
第二步:
定义“第一步”中提到的这些数据类型或者内表的实体对象
第三步:
定义一些需要用到的变量
第四步:
定义自己的选择屏幕
第五步:
定义INITIALIZATION部分,在这个部分往往要指定w_repid的值,
w_repid=sy-repid
第六步:
start-of-selection部分
用一个子函数完成对ALV表单标题区域的赋值(i_list_comments)
用一个子函数完成自己所需要数据的抓取
用一个子函数完成要显示列表的列名行(第一行)的相关赋值(i_fieldcat_alv)以及设置
用一个子函数完成输出格式的设置(i_layout)
用一个子函数FORMDISPLAY_DATA来显示上面封装好的数据,需要调用两个常用的FUNCTIONMODULE:
FUNCTION'REUSE_ALV_GRID_DISPLAY'“显示表单数据
FUNCTION'REUSE_ALV_COMMENTARY_WRITE'“显示表单标题
本文将着重介绍ABAP中显示表单数据REUSE_ALV_GRID_DISPLAY函数中常用参数的含义及用法,REUSE_ALV_LIST_DISPLAY中参数与此类似。
由于本文介绍ALV表单标题输出函数,需要读者对简单ALV报表有所了解。
文档最后通过一个实例演示了该函数中常用参数的实际用法及效果。
2.开发实例
ALV报表需要展现的数据抓取封装完成以后,需要用到FUNCTION输出数据,一个常用的FUNCTIONMODULE是REUSE_ALV_GRID_DISPLAY,该函数将以GRID风格将数据展现给前台用户。
该函数主要包含以下常用参数:
参数名称
默认值
用法
I_INTERFACE_CHECK
SPACE
接口一致性检查
I_BYPASSING_BUFFER
SPACE
是否使用BUFFER
I_BUFFER_ACTIVE
SPACE
如果每次显示ALV都是
相同的字段目录,则该字段目录会被放到一个特殊的缓存里,
加快ALV的显示速度。
I_CALLBACK_PROGRAM
SPACE
调用程序名称
I_CALLBACK_PF_STATUS_SET
SPACE
设置屏幕菜单
I_CALLBACK_USER_COMMAND
SPACE
实现对应菜单项及相应事件功能
I_CALLBACK_TOP_OF_PAGE
SPACE
设置ALV表头
I_CALLBACK_HTML_TOP_OF_PAGE
SPACE
加入HTML格式的表头
I_CALLBACK_HTML_END_OF_LIST
SPACE
加入HTML格式的表尾
I_STRUCTURE_NAME
为输出表数据结构的命名,指定了这个参数,域目录将会自动生成
I_BACKGROUND_ID
SPACE
设置报表背景
I_GRID_TITLE
设置抬头信息
I_GRID_SETTINGS
打印表头设置
IS_LAYOUT
设定输出样式
IT_FIELDCAT
设定显示的项目名称及输出设定
IT_SPECIAL_GROUPS
如果字段目录中一些字段通过SP_GROUP被分组在一起.必须为这些
组传递一个组的文本内表
IT_SORT
排序设置
IT_FILTER
过滤设置
I_DEFAULT
'X'
用户是否可以定义默认的布局:
'X'可以定义默认布局,
SPACE不可以定义默认布局
I_SAVE
SPACE
保存表格布局:
'X'只能保存全局变式
'U'只能保存特定变式
'A'都可以保存
SPACE不能保存变式
IS_VARIANT
管理表格布局
IT_EVENTS
设置抬头和结尾
IT_EVENT_EXIT
设置回调的方法的执行行为,表明用户所写的代码是在执行标准执行之前还是之后
IS_PRINT
从后端开始打印的参数
I_SCREEN_START_COLUMN
0
对话格式展现的开始列
I_SCREEN_START_LINE
0
对话格式展现的开始行
I_SCREEN_END_COLUMN
0
对话格式展现的结束列
I_SCREEN_END_LINE
0
对话格式展现的结束行
I_HTML_HEIGHT_TOP
0
HTML表头高度
I_HTML_HEIGHT_END
0
HTML表尾高度
IT_ALV_GRAPHICS
是否可以在图表中显示ALV
IT_HYPERLINK
使用超链接
T_OUTTAB
需要展现的表
下面针对常用的输入参数进行详细介绍:
●I_CALLBACK_PROGRAM:
定义调用程序名称,一般为当前程序sy-repid。
●I_CALLBACK_PF_STATUS_SET:
定义屏幕菜单,此参数允许报表展现用户自定义的屏幕菜单。
如设定i_callback_pf_status_set = 'PF_STATUS_SET'
定义如下FORM,程序自动调用PF01菜单。
FORM PF_STATUS_SET USING rt_extab TYPE slis_t_extab.
set pf-status 'PF01'.
ENDFORM.
●I_CALLBACK_USER_COMMAND:
此参数响应菜单项及相应事件。
如I_CALLBACK_USER_COMMAND= 'USER_COMMAND'
点击相应的按钮或双击等操作触发对应定义的事件。
FORM user_command using i_ucomm like sy-ucomm is_selfield type slis_selfield.
case i_ucomm.
when '&IC1'.
message i888(sabapdocu) with 'DOUBLE CLICKED!
'.
when 'CREATE'.
message i888(sabapdocu) with 'CREATE'.
CALL SCREEN 1001 .
endcase.
ENDFORM.
●I_CALLBACK_TOP_OF_PAGE:
设置ALV表头信息。
如I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE'
FORM TOP-OF-PAGE.
DATA:
t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
ld_line TYPE i,
ld_linese TYPE c.
wa_header-typ = 'S'. "标题字体大小.
wa_header-info = 'thetopofalv program.'. "alv页上方的标题.
APPEND wa_header TO t_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' "输出表标题.
EXPORTING
it_list_commentary = t_headeR.
ENDFORM.
此参数设置的表头格式如下:
●IT_FIELDCAT:
设定显示的项目名称。
如设定it_fieldcat = fieldcat_alv[]
下面将信息填充至fieldcat_alv后,报表运行时自动展现填充的信息。
FORM frm_display_alv .
DEFINE h_out.
wa_fieldcat-fieldname = '&1'.
wa_fieldcat-seltext_l = &2.
append wa_fieldcat to fieldcat_alv.
clear wa_fieldcat.
END-OF-DEFINITION.
h_out matkl 'material group' . "
h_out matnr 'material num' .
h_out meins 'material unit'.
h_out maktx 'material desc'.
ENDFORM.
展现效果如下:
●I_SAVE:
设定是否可以保存报表布局(具体参数值见上表)。
如I_SAVE = 'A'此设置允许保存所有布局。
●IS_LAYOUT:
设定报表输出样式。
该参数确定字段宽度、行颜色、是否显示分隔线等等属性,通常定义为
slis_layout_alv类型组。
如:
gs_layout TYPE slis_layout_alv.
is_layout = gs_layout
Ø设置Grid的字段列宽度自动适应
GS_LAYOUT-COLWIDTH_OPTIMIZE='X'
Ø 设置Grid的行颜色变换显示
GS_LAYOUT-ZEBRA ='X'
Ø设置弹出窗口的标题栏
GS_LAYOUT-DETAIL_TITLEBAR='详细内容'
Ø设置Grid的多行选择列,其中BOX必须为内表的一列,为一个字符长度
GS_LAYOUT-BOX_FIELDNAME='BOX'
Ø设置Grid是否显示行分割线
GS_LAYOUT-NO_VLINE='X'
Ø设置Grid的合计行显示在明细的上面
GS_LAYOUT-TOTALS_BEFORE_ITEMS='X'
Ø 设置Grid不显示弹出明细显示窗口
GS_LAYOUT-DETAIL_POPUP='X'
Ø设置Grid显示LED列,LIG