ALV
ALV是ABAP List Viewer 的缩写,是实际业务中查询数据或修改数据时经常使用的程序。
ALV的主要功能
- 过滤设置
- 变更列宽
- 变更布局
- ABC分析
- 下载excel及word文档的保存
ALV的类型
- Function ALV
- GRID ALV
- SALV
其中Function ALV 和Grid ALV内部含有相似的结构和功能,而SALV是之后出现的。他们出现的技术顺序依次为Function ALV > Grid ALV > SALV。
ALV功能的SAL包(SALV也称为New ALV)。SALV可以使用函数生成ALV一样不适用画面以全屏模式输出,也可以利用容器在画面上显示ALV。利用Grid的ALV不能以Batch Job登录后再后台运行,但SALV可正常运行。SALV与现有方法相比为开发提供了便利,集合了详细功能以及接口方式提供,但SALV的唯一缺点就是不支持编辑模式。
GRID ALV容器接口
ALV程序中使用的接口由参照cl_gui_alv_grid类的变量定义。用下列语句定义对像引用变量。如:
data:gs_grid type ret to cl_gui_alv_grid.
用create obejct语句调用类的构造函数并生成ALV GRID接口。
GRID ALV容器中拥有画面显示的所有信息,调用类方法可以重新定义或修改ALV画面属性。
GRID ALV容器的结构
要利用ALV显示数据,至少要经过两个步骤:
- 定义内表:定义显示在画面上的内表。在ALV上存储数据信息的内表叫输出表(Output Table)。
- 数据结构(字段目录):定义ALV GRID容器显示在画面上的结构。即拥有ALV GRID容器中心的数据结构、技术属性、描述等信息。一般利用ABAP数据字典的表,结构体或直接使用内表结构。
只要启动ALV GRID,则传递给ALV GRID容器中的输出表一直有效。输出表可以利用ABAP数据字典对象,但也可以只用字段目录创建ALV结构。字段目录(Field Catalog )是存储要显示在ALV画面上的字段信息的表。
SAP 容器
创建SAP容器及容器对象
若要显示ALV画面,必须要有连接屏幕与ALV GRID控件的SAP 容器控件。即SAP容器为了充当连接器,将SAP控件包含在容器中。SAP容器类型有SAP Tree、SAP Picture、SAP Textedit、SAP Spkitter控件等。SAP容器是包含其他控件的控件,也称为父控件(ParentControl)。SAP容器的位置如下:
SAP容器的类型
容器类型 | 功能 |
---|---|
SAP自定义控件 | SAP自定义控件 在使用屏幕编辑器的一般画面上定义领域类:CL_GUI_CUSTOM_CONTAINER |
SAP对话框控件 | 对话框或者在全画面上以对话框的形式显示类:CL_GUI_DIALOGBOX_CONTAINER |
SAP Docking控件 | 在画面领域的各边角可以调节其大小。是在ALV程序中经常与自定义控件一起使用的形态类:CL_GUI_DOCKING_CONTAINER |
SAP拆分控件 | 拆分容器时使用类:CL_GUI_SPLITTER_CONTAINER |
SAP细拆分控件 | 和Splitter控件功能相同,可以再拆分已被拆分的容器类:CL_GUI_EASY_SPLITTER_CONTAINER |
创建引用变量
SAP自定义控件参数属性
容器属性 | 功能 |
---|---|
parent | 指定显示控件实例的上级控件 |
container_name | 指定在屏幕编辑中指定的自定义控件(即指定屏幕自定义控件名字) |
style | 指定控件的外部样式 |
dynnr | 要追加到控件上的屏幕编号 |
repid | 要追加到控件上的程序ID |
lifetime | 设置控件的生命周期(根据 LEAVE TRANSACTOIN,CALL TRANSACTION 等命令设置成非激活状态) |
no_autodef_progid_gynnr | 自动指定程序ID和屏幕编号(设置成X则是OFF) |
调用屏幕
其中屏幕1000到1100的屏幕已经被系统占用,因此自定义屏幕名不能在1000~1100之间。
call screen 100.
创建ALV GRID控件
data: gs_grid type ref to cl_gui_aiv_grid.