SAP ABAP 表控件示例

表格控件和步骤循环是屏幕表格显示的对象,您可以将其添加到屏幕中的屏幕 Painter.

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

ABAP 表控件的功能

使用表格控件,用户可以:

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

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

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

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

一般来说,表控件提供的许多功能都是由系统的 SAPgui 前端,因此您无需自己编程。唯一值得注意的例外是垂直滚动.

示例(事务 TZ60)

SAP ABAP 表控制

句法

要在 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 )

3.要创建字段,请转到字典/程序字段功能。

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

如果需要选择列,请在属性中选中相应的复选框并为其命名。在 ABAP 程序.

在 PBO 中你应该有声明

LOOP at <itab> USING CONTROL <cntrl_name>.

ENDLOOP.

在 PAI 中你应该有。

LOOP at <itab>.

ENDLOOP.

屏幕和内部表之间的数据传输发生在循环内。填充内部表时使用 DESCRIBE TABLE线-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.