ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:151.67KB ,
资源ID:29826178      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29826178.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SAPALV精解.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SAPALV精解.docx

1、SAPALV精解 ALV知识 Xiaogangh 一、ALV相关概念ALVABAP LIST VIEWER,这里我姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式以及用户接口。ALV即能显示简单表单(SIMPLE LIST)又能显示有序表单(SEQUENTIAL LIST): 简单表单(SIMPLE LIST)包含一系列不分层次的(NON-HIERARCHICAL),用户自定义的列。 层次表(即有序表SEQUENTIAL LIST)包含列表头以及它的子行,一个列表头的关键行能带出它下面的一些列项目(我们自己理解的时候可以想到BOM表的层

2、次结构)。 我们还可以在简单表单以及关联表单中显示小计和总计二、结合一个具体的实例来看ALV的功能 首先我们看下图中的这个ALV的布局(这是一般ALV程序表单的典型布局):根据上面对ALV的直观形象,下面将屏幕上的区域划分成几块,分别来解释它的作用:1 快捷工具栏(如下图) 细节按钮,你首先必须选中列表中的一行,然后点击它的话,就会弹出一个窗口,显示选中行的细节内容。(另外:你双击你要选择的行,也可以显示细节) 按升序排列,首先选中一列,然后再点击它,就可以看到该列是按照升序重新排列。 按降序排列,首先选中一列,然后再点击它,就可以看到该列是按照降序重新排列。 设置过滤器,通过设置它可以达到筛

3、选的目的,以列名称作为筛选的筛选标准,填入过滤器相应的标准值,然后就可以筛选出满足自己条件的记录。 打印预览,点击它之后,就可以预览一下将要打印内容的布局情况。 Microsoft Excel,调用MS的Excel到当前ALV的列表显示区域。(前提:必须安装了MS的Excel) 字处理,字处理的相关设置。 本地文件,将当前表单存储到本地机器上,有几种供选择的存储格式。 邮件收件人,给系统内用户发邮件 图形,点击它可以根据表单情况绘制相关图表。 更改布局,点击它可以对表单中的列项目排列次序的互换,删减等。 选择布局,从已经保存的布局中选择自己满意的布局。 保存布局,对于自己满意的布局,可以通过点

4、击它来将布局保存起来。2 表单标题区这个区域主要是用来显示一些抬头信息(总揽信息),类似于WORD中的页眉。我们在使用的时候根据需要来进行相关填写。3 表单显示区 这个区域主要是用来显示我们通过代码筛选出来的数据,相关的操作在下面的程序编写部分详细介绍。三、程序的编写1在我们写ALV程序的时候,有一个类型组是肯定要用到的: TYPE-POOLS:SLIS。 在这个类型组中有很多ALV的自定义数据类型以及结构化数据类型(通过TYPE来定义的),我们在写ALV表单的时候需要调用的。我们常用的几个有(蓝色部分):I对一个最简单的ALV表单(无标题区和页脚区),我们只需要定义下面几个data: i_f

5、ieldcat_alv type slis_t_fieldcat_alv with header line, i_layout type slis_layout_alv, alv的格式 i_fieldcat type slis_fieldcat_alv,w_repid like sy-repid. 它对应的start-of-selection中定义子函数如下: start-of-selection. perform getdata. “从数据库中取数据到相应内表中 perform layout_build. “用于定义ALV表单的相关格式、属性 perform fields. “用来定义表单中

6、的各个列的相关信息,比如列名等 perform display_data. “用来显示ALV表单子函数定义如下: form layout_build. i_layout-zebra = X. i_layout-detail_popup = X. “是否弹出详细信息窗口 w_repid = sy-repid. “程序为当前程序 i_layout-f2code = &ETA.“设置触发弹出详细信息窗口的功能码,这里是双击i_layout-no_vline = X.“这个用来设置列间隔线 i_layout-colwidth_optimize = X. “优化列宽选项是否设置 i_layout-det

7、ail_initial_lines = X. i_layout-detail_titlebar = 详细内容. “设置弹出窗口的标题栏endform. form fields. refresh i_fieldcat_alv. pos = 1. clear i_fieldcat. i_fieldcat-col_pos = pos. “第几列 i_fieldcat-fieldname = NUM. i_fieldcat-seltext_l = 序号. “列名 append i_fieldcat to i_fieldcat_alv. pos = pos + 1. i_fieldcat-col_pos

8、 = pos. i_fieldcat-fieldname = AUFNR. i_fieldcat-seltext_l = 生产订单. append i_fieldcat to i_fieldcat_alv. clear i_fieldcat. Endform. form display_data. call function REUSE_ALV_GRID_DISPLAY exporting i_callback_program = w_repid “当前程序 i_save = is_layout = i_layout “子函数layout_build填充的格式定义 it_fieldcat =

9、i_fieldcat_alv “子函数fields填充的各列 tables t_outtab = head1. “假设数据都在head1内表中endform.II对一个稍微复杂一点的ALV表单(有标题区和页脚区),我们需要定义下面几个data: i_fieldcat_alv type slis_t_fieldcat_alv,“用来存储我们将要在表单显示区域显示出来的表单的列名,每个列名对应的字段名以及列表头其他相关属性信息的数据类型 i_fieldcat type slis_fieldcat_alv, i_layout type slis_layout_alv. “ALV的格式data: i_

10、events type slis_t_event, i_event_exit type slis_t_event_exit, i_list_comments type slis_t_listheader, “用来填充表单标题区域的数据类型 i_excluding type slis_t_extab.data: w_variant like disvariant, 显示变式结构 wx_variant like disvariant, w_variant_save(1) type c, w_exit(1) type c, w_user_specific(1) type c, w_callback_

11、ucomm type slis_formname, 字符型 w_print type slis_print_alv, 类型组 w_layout type slis_layout_alv, 类型组 w_html_top_of_page type slis_formname, 字符型 w_fieldcat_alv like line of i_fieldcat_alv, w_excluding like line of i_excluding, w_events like line of i_events, w_event_exit like line of i_event_exit, w_lis

12、t_comments like line of i_list_comments.*=*initialization. perform init_variant. “这个子函数很重要,没有它会出错*-*它对应的start-of-selection中定义子函数如下: start-of-selection. perform getdata. “从数据库中取数据到相应内表中 perform event_build. perform layout_build. “用于定义ALV表单的相关格式、属性 perform fields. “用来定义表单中的各个列的相关信息,比如列名等 perform displ

13、ay_data. “用来显示ALV表单*-*子函数定义如下:(这里只定义前面文档没有提到的子函数,其他同名的请参考前面)form init_variant. clear: w_variant. w_repid = sy-repid. “当前程序 w_variant-report = w_repid. w_variant-username = sy-uname. w_variant_save = A. All typesendform.form event_build. call function REUSE_ALV_EVENTS_GET exporting i_list_type = 0 im

14、porting et_events = i_events. read table i_events with key name = slis_ev_top_of_page into w_events. if sy-subrc = 0. move ALV_TOP_OF_PAGE to w_events-form. “将标题区数据赋值给W_EVENTS modify i_events from w_events index sy-tabix. endif. read table i_events with key name = slis_ev_end_of_list into w_events.

15、if sy-subrc = 0. move ALV_END_OF_LIST to w_events-form.“将页尾数据赋值给W_EVENTS modify i_events from w_events index sy-tabix. endif. read table i_events with key name = slis_ev_end_of_page into w_events. if sy-subrc = 0. move ALV_END_OF_PAGE to w_events-form. “将页脚区数据赋值给W_EVENTS modify i_events from w_event

16、s index sy-tabix. endif.endform.*-*form event_build子函数中黑体字部分对应的几个子函数,我们需要定义如下:form alv_top_of_page. clear: i_list_comments. w_list_comments-typ = H. H=Header, S=Selection, A=Action供选择 w_list_comments-key = . w_list_comments-info = XX汽车有限公司变速箱废品率报表. append w_list_comments to i_list_comments. w_list_c

17、omments-typ = S. H = Header, S = Selection, A = Action w_list_comments-key = . concatenate 库位: werks-low into werks_t. w_list_comments-info = werks_t. append w_list_comments to i_list_comments. w_list_comments-typ = S. H = Header, S = Selection, A = Action w_list_comments-key = . concatenate 库位: wer

18、ks-low into werks_t. w_list_comments-info = werks_t. append w_list_comments to i_list_comments. call function REUSE_ALV_COMMENTARY_WRITE exporting i_logo = ENJOYSAP_LOGO it_list_commentary = i_list_comments.endform.form alv_end_of_list. clear: i_list_comments. w_list_comments-typ = A. H = Header, S

19、= Selection, A = Action w_list_comments-key = . w_list_comments-info = 页脚显示. append w_list_comments to i_list_comments. call function REUSE_ALV_COMMENTARY_WRITE exporting it_list_commentary = i_list_comments i_logo = ENJOYSAP_LOGO i_end_of_list_grid = X.endform.form alv_end_of_page. 它的定义类似上面两个子函数的内容

20、,这里不再赘述endform.*-*form display_data. call function REUSE_ALV_GRID_DISPLAY exporting* i_background_id = SIWB_WALLPAPER i_background_id = SIWB_WALLPAPER i_callback_program = w_repid i_callback_html_top_of_page = w_html_top_of_page* i_structure_name = TRDIR i_default = X i_save = A is_variant = w_varia

21、nt is_layout = w_layout* i_callback_user_command = w_callback_ucomm it_fieldcat = i_fieldcat_alv it_events = i_events it_event_exit = i_event_exit it_excluding = i_excluding is_print = w_print* i_screen_start_column = 1* i_screen_start_line = 1* i_screen_end_column = 70* i_screen_end_line = 30 table

22、s t_outtab = head1.endform.2写一个ALV程序的基本流程(主要包括ALV相关的那部分,后面会附上一个ALV源程序的代码): 第一步:定义将要用到的表,即TALBES定义部分,然后定义TYPE-POOLS: SLIS. 第二步:定义“1”中提到的这些数据类型或者内表的实体对象 第三步:定义一些需要用到的变量 第四步: 定义自己的选择屏幕 第五步: 定义INITIALIZATION部分,在这个部分往往要指定w_repid的值, w_repid = sy-repid。 第六步: start-of-selection部分 用一个子函数完成对ALV表单标题区域的赋值(i_lis

23、t_comments)。 用一个子函数完成自己所需要数据的抓取 用一个子函数完成要显示列表的列名行(第一行)的相关赋值(i_fieldcat_alv)以及设置 用一个子函数完成输出格式的设置(i_layout),比如双击一条记录是否弹出对话框啊?是用哪个功能键触发等等 用一个子函数FORM DISPLAY_DATA来显示上面我们已经分别封装好的数据,需要调用两个常用的FUNCTION MODULE: FUNCTION REUSE_ALV_GRID_DISPLAY “用来显示表单数据 FUNCTION REUSE_ALV_COMMENTARY_WRITE “用来显示表单标题 附件: 示例程序源代

24、码(注:下面这个程序调用的ALV功能应该讲是比较完全的了,大家可以通过上面的学习之后,再看这个程序,应该会有所收获)*-* Program: ZZ_ALV_REPORT_STUB* Author : Clayton Mergen* Date :* Purpose: Report using ALV function* Notes:* 1) Logos & wallpapers can be found in table BDS_CONN05* with class = PICTURES* 2) Transaction OAER can be used to create PICTURES.*

25、Run transaction OAER with class name = PICTURES, Class type = OT,* and Object key with whatever name you want to create. In the* next screen, right clicking on screen and import*-* Revisions*-* Name :* Date :* Comments:*-report zflex004 no standard page heading line-size 200 line-count 65 message-id

26、 zz.*-* Tables*-tables: ekpo, mara, trdir.*-* Global Types*-type-pools: slis.*-* Global Internal Tables*-data: i_fieldcat_alv type slis_t_fieldcat_alv, i_events type slis_t_event, i_event_exit type slis_t_event_exit, i_list_comments type slis_t_listheader, i_excluding type slis_t_extab.* Display dat

27、adata: begin of i_data occurs 0, matnr like mara-matnr, mtart like mara-mtart, end of i_data.*-* Global Variables*-data: w_variant like disvariant, 显示变式结构 wx_variant like disvariant, w_variant_save(1) type c, w_exit(1) type c, w_repid like sy-repid, abap程序,当前主程序 w_user_specific(1) type c, w_callback

28、_ucomm type slis_formname, 字符型 w_print type slis_print_alv, 类型组 w_layout type slis_layout_alv, 类型组 w_html_top_of_page type slis_formname, 字符型 w_fieldcat_alv like line of i_fieldcat_alv, w_excluding like line of i_excluding, w_events like line of i_events, w_event_exit like line of i_event_exit, w_list_comments like line of i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1