ABAP-ALV-知识整理.doc
- 文档编号:92182
- 上传时间:2022-10-02
- 格式:DOC
- 页数:37
- 大小:390KB
ABAP-ALV-知识整理.doc
《ABAP-ALV-知识整理.doc》由会员分享,可在线阅读,更多相关《ABAP-ALV-知识整理.doc(37页珍藏版)》请在冰豆网上搜索。
ABAPALV知识整理
ABAPALV知识整理
---------王礼平
目录
一、ALV简介 3
1、简介 3
2、ALV_GRID介绍 3
3、其它描述 3
二、开发ALV的基本流程 4
三、ALV相关开发细节 6
1、标准ALV与对象ALV的共同开发细节 6
2、标准ALV开发相关细节 6
3、对象ALV开发相关细节 9
四、注意事项 27
五、附属信息 28
1、ALV快捷工具栏功能说明(如下图) 28
2、类型SLIS_FIELDCAT_ALV常用参数说明 29
3、类型SLIS_T_SORTINFO_ALV常用参数说明 29
4、类型SLIS_LAYOUT_ALV常用参数说明 29
5、类型SLIS_T_EVENT常用参数说明 30
6、结构LVC_S_FCAT参数说明(清单观察器控制的字段目录) 31
7、结构LVC_S_LAYO参数说明(ALV控制:
布局结构) 33
8、打印的参数控制请参考结构[LVC_S_PRNT] 34
9、排序的参数控制请参考结构[LVC_S_SORT] 34
11、'REUSE_ALV_GRID_DISPLAY'函数常用参数 34
12、'REUSE_ALV_LIST_DISPLAY'函数常用参数 34
13、方法"set_table_for_first_display"的参数说明 34
14、方法"REFRESH_TABLE_DISPLAY"的参数说明 35
六、ALV常见问题 35
七、示例程序 35
一、ALV简介
1、简介
ALV――SAPLISTVIEWER是SAP中的一种报表方式,这里姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式及用户接口。
ALV是系统的一种网格的显示方式,这种方式带有汇总\排序\筛选等功能,ALV格式的数据是以单元格为单位显示,SAP提供了一套ALV的功能模块,可以对输出报表的样式作修饰,提高报表输出的可读性和功能性,对于动态报表程序是一个很有效率的工具。
ALV家族包含3中ALV工具:
简易的,两层ALV,分等级连续的列表和树形结构的ALV。
一般的ALV报表有一个表头,再加上表内容,并附加一些如排序,分类汇总,合计或下载为本地文件等预设功能。
ALV报表显示方式基本上有2种,一种是Grid方式,一种是List方式,是分别调用不同的Function来实现。
1)当调用“REUSE_ALV_GRID_DISPLAY”函数时,ALV的显示样式如下:
2)当调用“REUSE_ALV_LIST_DISPLAY”函数时,ALV的显示样式如下:
2、ALV_GRID介绍
TheALVGridControl(ALV=SAPListViewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用。
在SAP的开发项目中,ALVGRID也可以作为修改和创建数据的一种工具。
它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏。
3、其它描述
报表的自主开发设计主要逻辑都是依托于选择屏幕上字段,也就是提供给用户让他们得到自己想要结果的选择条件途径。
其中最重要的就是必选字段,因为必选字段是取数逻辑的精华所在,他可以很巧妙的限制很多非必要的情况出现,减少开发人员的开发量,还能让用户最直接最快捷的得到与实际业务相关的展现结果。
对于一个报表程序的开发流程,一般都会有几个INCLUDE.(X代表任意自定义字母)
REPORTZXXXXXX.
INCLUDE ZXXXX_INIT.
INCLUDE ZXXXX_F01.
INCLUDE ZXXXX_block.
很多都是个人习惯吧,但是有一些习惯,能够让其他人在读程序或者修改程序的时候,很快捷,有规律可循。
INCLUDEZXXXXX_BlOCK。
里面无非就是以下几个部分
INITIALIZATION.(初始化。
在所有以下事件块运行之前运行的,只运行一次的事件块)
ATSELECTTION-SCREENOUTPUT.(PBO事件块,即屏幕输出前事件块)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR 选择屏幕字段名称。
(自定义搜索帮助事件块)
ATSELECTION-SCREEN.(PAI事件块,即屏幕操作后事件块)
START-OF-SELECTION.(程序运行事件块)
其它见解:
SAP中的程序还是有很多类型的.尤其是类报表程序,有可执行程序(REPORT开头)还有MODULEPOOL(PROGARM开头)2种形式.
ABAP开发属于事件驱动开发,这句话也清晰的解释了SAP程序的必然结构。
对于事件驱动,SAP程序就需要是由一个个事件去触发才能够执行的程序,当我们使用SE38去创建1类型的可执行性程序(REPORT开头)这样的程序,我们可以直接调试,我们会发现,这个程序是按照上面所写的事件块的顺序去依次执行的。
它的事件块的顺序是指定好的。
所以我们能够按F8,去运行。
我们所创建的MODULEPOOL就不能去执行,因为它需要用TCODE的去指定运行入口,一般都会在MODULEPOOL里面创建SCREEN.在一个SCREEN里就会有两个事件块,分别是PBO和PAI。
我们使用多个屏幕,或者使用TABLECONTROL控件,再或是使用子屏幕范围控件嵌套各种SUBSCREEN(子屏幕),其中都是需要PAI和PBO相互联系的,一个屏幕的PAI中,必然后会有一个CALLSCREEN或者CALLSUBSCREEN...INCLUDIG....命令去调用另一个屏幕或者子屏幕,然后另一个屏幕先运行PBO,有屏幕上的操作,就执行被操作屏幕的PAI。
个人感觉正式这种灵活的编写方式,导致了这种类型(MODULEPOOL)的程序不能直接F8,编译器无法获取程序从哪里开始,而TCODE就会指定从哪个屏幕开始。
INCLUDE ZXXXX_INIT(ZXXXX_TOP):
进入程序的第一个INCLUDE。
INCLUDE是什么?
?
(CR:
就是产生的请求号,也可以理解为一个程序的代码版本,所有的SAP程序都是在D系统(DEVELOPMENTSYSTEM)然后传到Q(测试)系统由顾问进行测试,又不干扰生产系统的程序运行,最后再传到P(生产)系统,覆盖原来的代码,变成修改后代码逻辑)恩,我感觉它是一种封装起来的思想。
我研究一下,它单独产生CR,而和它的主程序没有任何关联。
这也是必然的,因为INCLUDE是一个全局全系统的声明,一旦你取了一个名字,那么其他人也能够引用使用,这就导致它的修改CR是单独产生的。
这里也可以定义程序所需的数据类型和数据对象。
INCLUDE ZXXXX_F01:
习惯使用PERFROM来封装代码,取有意义的名字,然后把所有的FORM都放在这边。
在START-OF-SELECTION中,我们一般都会写以下几个PERFORM,
PREFORMfrm_get_data.(取数逻辑)
PERFORMfrm_alv_layout_build.(创建ALV显示格式)
PERFORMfrm_alv_set_columns.(调用ALV函数)
二、开发ALV的基本流程
第一步:
定义ALV所要用到的类型池:
TYPE-POOLS:
SLIS;
第二步:
定义ALV所要显示的数据对应的内表数据类型及内表数据对象;
第三步:
定义一些显示ALV时所要使用到的变量,例如:
Data:
w_repidlikesy-repid,“ABAP程序,我们一般取当前程序
w_callback_ucommtypeslis_formname,"字符型,功能
w_printtypeslis_print_alv,"类型组
w_layouttypeslis_layout_alv,"类型组
w_html_top_of_pagetypeslis_formname,"字符型
w_fieldcat_alvlikelineofi_fieldcat_alv,“从上面的数据结构类型引用过来的
w_excludinglikelineofi_excluding,“同上
w_eventslikelineofi_events,“同上
w_event_exitlikelineofi_event_exit,“同上
w_list_commentslikelineofi_list_comments.“同上
第四步:
定义选择屏幕;
第五步:
声明各个选择屏幕事件块,例如:
定义initialization部分,在这个部分往往要指定w_repid的值,w_repid=sy-repid。
定义start-of-selection部分,在这通常会调用各种子程序,以下以标准ALV显示为例:
1)调用一个子程序(通常命名为frm_get_dataXXX(X代表任意自定义字母)),用于获取ALV所要显示的数据;例如:
FORM frm_get_data.
……“其它处理逻辑
SELECT lifnr "供应商账号
ktokk "账号组
name1 "名称1
name2 "名称2
INTO CORRESPONDING FIELDS OF TABLE it_main
FROM zmmjyht003
WHERE (l_where)
.
……“其它处理逻辑
ENDFORM.
2)调用一个子程序(通常命名为frm_alv_layout_build),用于设置ALV所要显示的样式;
例如:
FORM frm_alv_layout_build.
g_layout-zebra = 'X'.
g_layout-colwidth_optimize = 'X'. "列数据最优化显示
g_layout-box_fieldname = 'SELFLAG'. "表示ALV行项目选中的字段
ENDFORM.
3)调用一个子程序(通常命名为frm_alv_set_columns),用于完成ALV所要显示的列的相关设置;
例如:
FORM frm_alv_set_columns.
REFRESH g_fieldcat_alv.
PERFORM frm_set_l_fieldcat USING 1 '
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABAP ALV 知识 整理