ALV与OO方式 下载本文

内容发布更新时间 : 2024/10/11 0:30:48星期一 下面是文章的全部内容请认真阅读。

ABAP_ALV_Function方式与OO方式(较为简单、普通的ALV) - qdxjmei 时间 2014-02-26 06:56:00 博客园-所有随笔区

原文 http://www.cnblogs.com/xjm123/p/3568225.html 目 录

一、 ALV 简介 1 、简介

2 、ALV_GRID 介绍 3 、其它描述

二、开发ALV 的基本流程 三、ALV 相关开发细节

1 、标准ALV 与对象ALV 的共同开发细节 (无) 2 、标准ALV 开发相关细节 3 、对象ALV 开发相关细节 四、注意事项 五、附属信息

1 、ALV 快捷工具栏功能说明(如下图) 2 、类型SLIS_FIELDCAT_ALV 常用参数说明 3 、类型SLIS_T_SORTINFO_ALV 常用参数说明 4 、类型SLIS_LAYOUT_ALV 常用参数说明 5 、类型SLIS_T_EVENT 常用参数说明

6 、结构LVC_S_FCAT 参数说明( 清单观察器控制的字段目录) 7 、结构LVC_S_LAYO 参数说明(ALV 控制: 布局结构) 8 、打印的参数控制请参考结构 [LVC_S_PRNT] 9 、排序的参数控制请参考结构[LVC_S_SORT] 11 、'REUSE_ALV_GRID_DISPLAY' 函数常用参数 12 、'REUSE_ALV_LIST_DISPLAY' 函数常用参数 13 、方法\的参数说明 14 、 方法\的参数说明 六、ALV 常见问题 七、示例程序

一、 ALV 简介

1 、简介

ALV――SAP LIST VIEWER 是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介绍

The ALV Grid Control (ALV = SAP List Viewer) 是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用。在SAP的开发项目中,ALV GRID也可以作为修改和创建数据的一种工具。它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏。 ALV工具栏:

3 、其它描述

报表的自主开发设计主要逻辑都是依托于选择屏幕上字段,也就是提供给用户让他们得到自己想要结果的选择条件途径。其中最重要的就是必选字段,因为必选字段是取数逻辑的精华所在,他可以很巧妙的限制很多非必要的情况出现,减少开发人员的开发量,还能让用户最直接最快捷的得到与实际业务相关的展现结果。

对于一个报表程序的开发流程,一般都会有几个INCLUDE.(X代表任意自定义字母) REPORT ZXXXXXX. INCLUDE ZXXXX_INIT. INCLUDE ZXXXX_F01. INCLUDE ZXXXX_block.

很多都是个人习惯吧,但是有一些习惯,能够让其他人在读程序或者修改程序的时候,很快捷,有规律可循。 INCLUDE ZXXXXX_BlOCK 。 里面无非就是以下几个部分

INITIALIZATION. (初始化。在所有以下事件块运行之前运行的,只运行一次的事件块) AT SELECTTION-SCREEN OUTPUT. (PBO事件块,即屏幕输出前事件块) AT SELECTION-SCREEN ON VALUE-REQUEST FOR 选择屏幕字段名称。(自定义搜索帮助事件块) AT SELECTION-SCREEN. (PAI事件块,即屏幕操作后事件块) START-OF-SELECTION. (程序运行事件块)

其它见解:SAP中的程序还是有很多类型的.尤其是类报表程序,有可执行程序(REPORT 开头)还有MODULE POOL(PROGARM 开头)2种形式.

ABAP 开发属于事件驱动开发,这句话也清晰的解释了SAP程序的必然结构。对于事件驱动,SAP程序就需要是由一个个事件去触发才能够执行的程序,当我们使用SE38去创建1类型的可执行性程序(REPORT 开头)这样的程序,我们可以直接调试,我们会发现,这个程序是按照上面所写的事件块的顺序去依次执行的。它的事件块的顺序是指定好的。所以我们能够按F8,去运行。我们所创建的MODULE POOL就不能去执行,因为它需要用TCODE去指定运行入口,一般都会在MODULE POOL 里面创建 SCREEN . 在一个SCREEN里就会有两个事件块,分别是PBO 和PAI。我们使用多个屏幕,或者使用TABLE CONTROL控件,再或是使用子屏幕范围控件嵌套各种SUBSCREEN(子屏幕),其中都是需要PAI 和 PBO 相互联系的,一个屏幕的PAI中,必然会有一个CALL SCREEN 或者CALL SUBSCREEN ... INCLUDIG....命令去调用另一个屏幕或者子屏幕,然后另一个屏幕先运行PBO,有屏幕上的操作,就执行被操作屏幕的PAI。个人感觉正是这种灵活的编写方式,导致了这种类型(MODULE POOL)的程序不能直接F8,编译器无法获取程序从哪里开始,而TCODE就会指定从哪个屏幕开始。

INCLUDE ZXXXX_INIT(ZXXXX_TOP) :进入程序的第一个INCLUDE。INCLUDE 是什么??

(CR:就是产生的请求号,也可以理解为一个程序的代码版本,所有的SAP程序都是在D系统(DEVELOPMENT SYSTEM)然后传到Q(测试)系统由顾问进行测试,又不干扰生产系统的程序运行,最后再传到P(生产)系统,覆盖原来的代码,变成修改后代码逻辑)

恩,我感觉它是一种封装起来的思想。我研究一下,它单独产生CR,而和它的主程序没有任何关联。这也是必然的,因为INCLUDE是一个全局全系统的声明,一旦你取了一个名字,那么其他人也能够引用使用,这就导致它的修改CR是单独产生的。这里也可以定义程序所需的数据类型和数据对象。

INCLUDE ZXXXX_F01 :习惯使用PERFROM来封装代码,取有意义的名字,然后把所有的FORM都放在这边。 在START-OF-SELECTION中,我们一般都会写以下几个PERFORM, PREFORM frm_get_data. ( 取数逻辑)

PERFORM frm_alv_layout_build. (创建ALV显示格式) PERFORM frm_alv_set_columns. (调用ALV函数)