
2008-7-1 22:33
yblong_yang
ABAP 文本框回车问题
各位高手:
有个问题希望大家帮忙;就是我在screen上放了两个文本框 Edit1 和Edit2;先希望光标在Edit1是按会车光标要跑到Edit2上去;Edit2是按回车再跑到Edit1上去;请各位高手帮忙;谢谢/
2008-7-3 09:54
jimmie1978
按回车后系统首先会进入PAI事件,你在PAI事件里面SET CURSOR就可以了,如果是自建程序那就写在AT SELECTION-SCREEN事件里面
2008-7-5 09:35
yblong_yang
能否给例子:
我是这样做的。
在PAI 里写代码: Field Fieldname1 module mod1.
再在abap程序里写 :
MODULE mod1 INPUT.
set cursor field 'fieldname2'.
ENDMODULE.
我想是在 光标在fieldname1 是按回车就要调到fieldname1里去;但这样不行。
请帮忙谢谢/
2008-7-7 09:21
jimmie1978
SAP默认的是大写,所以引号里面的字符串文本也必须为大写,不知道你是否注意了,写成'FIELDNAME1'再试一下
2008-7-7 21:25
yblong_yang
回复 #4 jimmie1978 的帖子
在PAI 里写代码: Field FIELDNAME1 module mod1.
再在abap程序里写 :
MODULE mod1 INPUT.
set cursor field 'FIELDNAME2'.
FIELDNAME2 = '12'.
ENDMODULE.
还是不行;我在后面加了句 FIELDNAME2 = '12'.值是赋过去了;但光标还是不在FIELDNAME2。请帮忙;谢谢/
2008-7-8 09:06
jimmie1978
系统调用事件的顺序是PBO-->输出屏幕-->PAI-->PBO-->......
如果像你说的那样不变的话那就是执行PAI事件后加载PBO事件的时候类似于屏幕重设(就是重新加载PBO事件)而引起的结果,PAI本身的代码没有问题。
2008-7-8 09:16
jimmie1978
我现在也不是很清楚你的需求,你可以加我MSN:[email]jimmie1978@hotmail.com[/email]我们交流下,希望能帮到你!
2008-7-8 12:08
VagrantLee
PAI?
2008-7-8 15:07
jimmie1978
*&---------------------------------------------------------------------*
*& 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.
2008-7-22 15:03
gubrier
冒昧的说一下,这样的想法是没有问题的,也许是疏忽了,这样写代码是不能达到效果的。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.
[[i] 本帖最后由 gubrier 于 2008-7-22 15:11 编辑 [/i]]
2008-7-22 15:10
gubrier
回复 #3 yblong_yang 的帖子
光看这段代码,实际上是设置光标位置,写死了要在 2 里面。所以,才会出现你说的情况。
尝试一下 下面的代码。
MODULE mod1 INPUT.
DATA g_fie(8) TYPE C.
get cursor field g_field.
CASE g_field.
WHEN 'PA_TEXT1'.
SET CURSOR FIELD 'PA_TEXT1'.
WHEN OTHERS.
SET CURSOR FIELD 'PA_TEXT2'.
ENDCASE.
CLEAR g_field.
ENDMODULE.
2008-8-25 13:00
citymatch
set cursor field 'fieldname2'.
2008-9-6 16:26
citymatch
学习了
2008-9-8 11:44
netpast
在 PAI写
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
DATA G_FIELD(8) TYPE C.
CASE OK_CODE.
WHEN 'ENTR'.
get cursor field g_field.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
在PBO写
*&---------------------------------------------------------------------*
*& Module SET_CUSSOR OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SET_CUSSOR OUTPUT.
CASE g_field.
WHEN 'EDIT1'.
SET CURSOR FIELD 'EDIT2'.
WHEN OTHERS.
SET CURSOR FIELD 'EDIT1'.
ENDCASE.
ENDMODULE. " SET_CUSSOR OUTPUT
页:
[1]

Powered by ITPUB论坛