|
冒昧的说一下,这样的想法是没有问题的,也许是疏忽了,这样写代码是不能达到效果的。AT-SELECTION-SCREEN OUTPUT 事件是不需要写的,因为默认的光标位置就是屏幕上的第一个FIELD.
我重新改了一下。
REPORT z_test_dean.
DATA g_field(8) TYPE c.
SELECTION-SCREEN BEGIN OF BLOCK blk1.
PARAMETERS:
pa_text1(20) TYPE c,
pa_text2(20) TYPE c.
SELECTION-SCREEN END OF BLOCK blk1.
AT SELECTION-SCREEN.
* 如果想判断,首先要获得当前的光标位置。
get cursor field g_field.
CASE g_field.
WHEN 'PA_TEXT1'.
SET CURSOR FIELD 'PA_TEXT1'.
WHEN OTHERS.
SET CURSOR FIELD 'PA_TEXT2'.
ENDCASE.
这样的话,点了enter以后,光标仍然在原来的field里面,不过位置是文本的第一位,请注意。欢迎交流。
*&---------------------------------------------------------------------*
*& Report Z_JTEST26
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_JTEST26.
DATA G_FIELD TYPE C.
SELECTION-SCREEN BEGIN OF BLOCK BLK1.
PARAMETERS:
PA_TEXT1(20) TYPE C,
PA_TEXT2(20) TYPE C.
SELECTION-SCREEN END OF BLOCK BLK1.
AT SELECTION-SCREEN OUTPUT.
CASE G_FIELD.
WHEN '1'.
SET CURSOR FIELD 'PA_TEXT1'.
WHEN OTHERS.
SET CURSOR FIELD 'PA_TEXT2'.
ENDCASE.
AT SELECTION-SCREEN.
IF G_FIELD IS INITIAL.
G_FIELD = '1'.
ELSE.
CLEAR G_FIELD.
ENDIF.
[ 本帖最后由 gubrier 于 2008-7-22 15:11 编辑 ]
|