SAP ABAP 表控制与示例-07
表控件和步骤循环是添加到屏幕刷中的屏幕的屏幕表显示的对象。
从编程的角度来看,表控件和步进循环几乎完全相同。表控件只是改进的步骤循环,用于显示具有与桌面应用程序中的表关联的外观的数据。
使用表控件,用户可以:
- 垂直和水平滚动浏览表格
- 调整列的宽度
- 在字段中滚动(当字段内容比字段宽时)
- 选择表行或列
- 对列的顺序重新排序
- 保存当前显示设置以供将来使用
表控件还提供特殊的格式设置功能(一些是自动的,一些是可选的),使表更易于查看和使用。工作台控制提供 –
- 当用户调整窗口大小时自动调整表大小(垂直和水平)
- 行之间和列之间的分隔线(垂直和水平)
- 所有列的列标题字段
步骤循环的一个功能是其表行可以跨越屏幕上的多行。另一方面,表控件的一行必须始终包含在一行中(尽管可以进行滚动)。
通常,表控件提供的许多功能都由系统的 SAPgui 前端在本地处理,因此您无需自行编程。唯一值得注意的例外是垂直滚动。
示例(事务码:TZ60)
语法
若要处理 ABAP 程序中的表控件,必须使用以下语句在程序的声明部分为每个表控件声明一个控件:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
其中ctrl
是 ABAP 程序中屏幕上的表控件的名称。该控件允许 ABAP 程序读取表控件的属性并影响控件。此处,scr
是加载表的初始值的屏幕编号。
可以通过以下方式设置表控件的游标位置:
在 PBO 中,您可以在表控件的特定行的特定字段上设置光标。
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
使用可选的加法 OFFSET,可以在字段中输入光标的偏移量,如设置光标位置下所述。
在PAI中,您可以读取当前光标位置。
GET CURSOR FIELD <f> LINE <lin> ...
除了“找出游标位置”下提供的信息外,字段 lin
还包含有关游标当前位于表控件的哪一行的信息。您还可以使用
GET CURSOR LINE <lin>.
以确定表控件的行。SY-SUBRC 允许您检查游标是否放置在表控件的行中。
要获取内部表的相应行:
GET CURSOR line <lin>.
ind = <table_control>-top_line + <lin> - 1.
Read table <itab> index ind.
系统变量 stepl – 在循环中包含当前表行索引 …尾环。Loopc – 包含表中可见的行数
创建表控件
1.将表格控制元素添加到屏幕
2.为表控件命名。在 ABAP 程序中,声明具有相同结构( 控件 tcl
类型 TABLEVIEW USING SCREEN scrn
)
3.To 创建字段,请转到 Dict./Program 字段功能。
- 输入所需字段的结构的名称。(如果您希望它从程序的字典中选取它,请单击相关的puhbutton)。
- 在字段列表中选择所需的字段,然后选择“确定”。
- 在表控制区域中单击
如果需要选择列,请选中属性中的相应复选框并为其命名。在 ABAP 程序中创建字段。
在PBO中,您应该有声明
LOOP at <itab> USING CONTROL <cntrl_name>.
ENDLOOP.
在PAI中,你应该有。
LOOP at <itab>.
ENDLOOP.
在循环中,数据传输发生在屏幕和内部表之间。填充内部表时,请使用 DESCRIBE TABLE itab
行cntrl_name
行来存储控件中的总行数。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.
参考:https://www.guru99.com/abap-table-controls.html