ITPUB论坛 » ERP二次开发 » ABAP 文本框回车问题
新一届的微软MVP评选已经开始,欢迎各位推荐!
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]
查看完整版本: ABAP 文本框回车问题


Powered by ITPUB论坛