SAP ABAP 表格控件及示例

表控件和步进循环是屏幕表显示的对象,您可以在屏幕画家中将其添加到屏幕中。

从编程角度来看,表控件和步进循环几乎完全相同。表控件只是改进的步进循环,以桌面应用程序中与表相关联的外观和感觉显示数据。

ABAP 表控件的特点

使用表控件,用户可以

  • 垂直和水平滚动表格
  • 调整列宽
  • 在字段内滚动(当字段内容比字段宽时)
  • 选择表格行或列
  • 重新排序列的顺序
  • 保存当前显示设置以备将来使用

表控件还提供特殊的格式化功能(一些是自动的,一些是可选的),使表格更易于查看和使用。表控件提供:

  • 当用户调整窗口大小时,自动调整表格大小(垂直和水平)
  • 行之间和列之间(垂直和水平)的分隔线
  • 所有列的列标题字段

步进循环的一个特点是其表格行可以在屏幕上跨越多行。另一方面,表控件的一行必须始终包含在单行中(尽管可以滚动)。

通常,表控件提供的许多功能都由您系统的 SAPgui 前端在本地处理,因此您无需自行编程。唯一的例外是垂直滚动.

示例(事务 TZ60)

SAP ABAP Table Control

语法

要在 ABAP 程序中处理表控件,您必须使用以下语句为每个表控件在程序的声明部分声明一个控件:

CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>

其中 是 ABAP 程序中屏幕上表控件的名称。该控件允许 ABAP 程序读取表控件的属性并影响该控件。此处, 是加载表初始值的屏幕编号。

表控件的光标位置可以通过以下方式设置

在 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 类型 TABLEVIEW USING SCREEN

3. 要创建字段,请转到 Dict./Program fields 功能。

  • 输入所需结构的名称。(如果您希望它从程序的字典中选择,请单击相关的按钮)。
  • 在字段列表中选择所需的字段,然后单击确定。
  • 单击表格控件区域

如果您想要一个选择列,请在属性中勾选相应的复选框并为其命名。在 ABAP 程序中创建该字段。

在 PBO 中应有此语句

LOOP at <itab> USING CONTROL <cntrl_name>.

ENDLOOP.

在 PAI 中应有此语句。

LOOP at <itab>.

ENDLOOP.

在循环中,数据在屏幕和内表之间传输。当您填充内表时,使用 DESCRIBE TABLE LINES -lines 来存储控件中的总行数。FIELD 语句可用于控制数据传输发生的时间。

要临时更改单个单元格的属性,请在 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.