SAP ABAP 表格控件及示例
表控件和步进循环是屏幕表显示的对象,您可以在屏幕画家中将其添加到屏幕中。
从编程角度来看,表控件和步进循环几乎完全相同。表控件只是改进的步进循环,以桌面应用程序中与表相关联的外观和感觉显示数据。
ABAP 表控件的特点
使用表控件,用户可以
- 垂直和水平滚动表格
- 调整列宽
- 在字段内滚动(当字段内容比字段宽时)
- 选择表格行或列
- 重新排序列的顺序
- 保存当前显示设置以备将来使用
表控件还提供特殊的格式化功能(一些是自动的,一些是可选的),使表格更易于查看和使用。表控件提供:
- 当用户调整窗口大小时,自动调整表格大小(垂直和水平)
- 行之间和列之间(垂直和水平)的分隔线
- 所有列的列标题字段
步进循环的一个特点是其表格行可以在屏幕上跨越多行。另一方面,表控件的一行必须始终包含在单行中(尽管可以滚动)。
通常,表控件提供的许多功能都由您系统的 SAPgui 前端在本地处理,因此您无需自行编程。唯一的例外是垂直滚动.
示例(事务 TZ60)
语法
要在 ABAP 程序中处理表控件,您必须使用以下语句为每个表控件在程序的声明部分声明一个控件:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
其中
表控件的光标位置可以通过以下方式设置
在 PBO 中,您可以将光标设置在表控件特定行的特定字段上。
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
使用可选的附加 OFFSET,您可以输入光标在字段中的偏移量,如“设置光标位置”所述。
在 PAI 中,您可以读取当前光标位置。
GET CURSOR FIELD <f> LINE <lin> ...
除了“查找光标位置”中给出的信息外,字段
GET CURSOR LINE <lin>.
来确定表控件的行。SY-SUBRC 允许您检查光标是否放置在表控件的行中。
获取内表的相应行
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
系统变量 stepl – 包含循环…endloop 中当前的表行索引。Loopc – 包含表中可见的行数
创建表控件
1. 向屏幕添加表控件元素
2. 为表控件命名。在 ABAP 程序中声明一个具有相同名称的结构(CONTROLS
3. 要创建字段,请转到 Dict./Program fields 功能。
- 输入所需结构的名称。(如果您希望它从程序的字典中选择,请单击相关的按钮)。
- 在字段列表中选择所需的字段,然后单击确定。
- 单击表格控件区域
如果您想要一个选择列,请在属性中勾选相应的复选框并为其命名。在 ABAP 程序中创建该字段。
在 PBO 中应有此语句
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
在 PAI 中应有此语句。
LOOP at <itab>. ENDLOOP.
在循环中,数据在屏幕和内表之间传输。当您填充内表时,使用 DESCRIBE TABLE
要临时更改单个单元格的属性,请在 PBO 中更改 SCREEN 表。您可以更改由 CONTROLS 语句创建的结构的属性。
<cntrl>-fixed_cols etc are the attributes of the control <cntrl>-cols-index etc are the attributes of the columns. <cntrl>-cols-screen-invisible etc are the screen attributes of each column.