关键字:
SET CURSOR语句必须位于PBO代码段中,否则不起作用。示例如下:
SET CURSOR FIELD
'MARA-MEINS' LINE 2 OFFSET 1.
在ABAP程序中,ALV控件功能强大,操作灵活,大部分的表格都使用ALV来设计,但是ABAP基本控件中的TableView依然以设计简单、编码方便的原因而经常被使用。我们在使用TableView中需要处理的一个问题就是设置TableView的总行数。
在屏幕上放置一个Table控件后,还要在ABAP程序中声明一个同名的TableView变量才能操作,声明示例如下。
CONTROLS tb TYPE
TABLEVIEW USING SCREEN 100.
声明变量后,TableView的总行数可以通过字段lines来设置。如tb-lines =
10即设置Table的总行数为10,用户只能在这10行内输入数据。如果设tb-lines =
0,则垂直滚动条不可用,屏幕可见范围内的行都可以输入。通常我们设置Table的总行数等于和它关联的内表的总行数。
需要注意的是:设置TableView的lines字段必须在PBO操作之前,也就是说必须在进入屏幕(CALL
SCREEN)之前或是处理屏幕的PAI代码段中。另外,因为 lines =
0表示不处理总行数,为了实现Table的总行数为0,我们可以将Table包含的所有可输入字段的input =
0。这个操作必须在PBO代码段中进行,不能和设置lines的代码在一起,否则不起作用。
设置input的示例代码如下(请按你的需要加以更改)。
LOOP AT screen.
IF
screen-name = 'xxx'.
IF tb-lines = 0.
screen-input = 0.
ELSE.
screen-input = 1.
ENDIF.
modify screen.
ENDIF
ENDLOOP.
另外就是有时需要设置屏幕的输入焦点在哪个控件上,或者是在表格的哪一行中。通过SET CURSOR语句可以设置屏幕的输入焦点,SET
CURSOR语句必须位于PBO代码段中,否则不起作用。示例如下:
SET CURSOR FIELD
'MARA-MEINS' LINE 2 OFFSET 1.
其中FIELD后面是一个字符串或是字符串变量,是接受输入焦点的控件的名字,如果这个控件不在TABLE中,则不要使用后面的LINE关键字,当控件处
于一个Table中时,LINE表示焦点应该位于Table的第几行,OFFSET指定焦点处于控件的第N个位置,从左往右计算,最前面是0。
提示:可以通过GET
CURSOR语句得到屏幕当前的输入焦点,此语句可以在PAI和PBO代码段中使用。