dialog module (2)屏幕上的元素与程序通信

来源:互联网 发布:知乎dota2 lol 编辑:程序博客网 时间:2024/06/03 20:18

屏幕上的元素与程序实现通信,是通过在屏幕上定义name与程序中变量同名的元素来实现的。

如下面的例子所示:

程序中定义了五个变量,fld1,fld2,fld3,fld4,action。这五个变量分别对应屏幕上的五个输入输出字段。

这五个输入输出字段的name属性分别为 fld1、fld2、fld3、fld4、action。 所以,我们在PAI中对变量action的修改就会反应到屏幕上的action字段上。而且,在PAI中可以直接从变量fld1、fld2..中得到用户在屏幕上的输入值。

另外,本例子还蕴含的知识点是,通过不同的message类型控制程序的执行流程。

比如,我们如果弹出的message是E错误类型的,那么后续的PAI是不会被执行的,在这个程序中的表现就是action的值没有被改变;如果弹出的message是W警告和S成功类型的,那么后续的PAI会被执行,在这个程序中的表现就是action的值被改变了。

1-1.png

REPORT  ytest12.
DATA: ok_code type sy-ucomm,
      save_ok type sy-ucomm.
data: fld1(20)typec,
      fld2(20)typec,
      fld3(20)typec,
      fld4(20)typec,
      action(50)typec.

CALL SCREEN 100.
*&---------------------------------------------------------------------*
*&      Module  CHECK1  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE check1 INPUT.
  "当输入Fld1 = 'FLD1'时提示错误,而且不执行PAI
  if fld1 = 'FLD1'.
    message e005(YMESS)with'FLD1 error'.
  endif.
  "当输入fld1 = 'FLD11'时弹出窗口提示,执行PAI
  if fld1 = 'FLD11'.
    message i005(Ymess)with'FLD1 warning'.
  endif.
  "当输入fld1 = 'FLD111'时输出成功,执行PAI
  if fld1 = 'FLD111'.
    message s005(Ymess)with'FLD1 ok'.
  endif.
ENDMODULE.                 " CHECK1  INPUT
*&---------------------------------------------------------------------*
*&      Module  CHECK2  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE check2 INPUT.
  if fld3 = 'FLD3'.
    message e005(ymess)with'FLD3 error'.
  endif.
  if fld3 = 'FLD33'.
    message i005(ymess)with'FLD3 warning'.
  endif.
   if fld3 = 'FLD333'.
    message s005(ymess)with'FLD3 OK'.
  endif.
ENDMODULE.                 " CHECK2  INPUT
*&---------------------------------------------------------------------*
*&      Module  CHECK3  INPUT
*&---------------------------------------------------------------------*
*       text当FLD2的第一个字符是*时,执行该module
*----------------------------------------------------------------------*
MODULE check3 INPUT.
  message i005(ymess)with'FLD2* warning'.
ENDMODULE.                 " CHECK3  INPUT
*&---------------------------------------------------------------------*
*&      Module  CANCEL  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE cancel INPUT.
  leave PROGRAM.
ENDMODULE.                 " CANCEL  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  clear ok_code.
  case save_ok.
    when 'EXIT'.
      leave program.
  endcase.
  action = ''.
  CONCATENATE fld1 fld2 fld3 fld4 into action .
ENDMODULE.                 " USER_COMMAND_0100  INPUT

 

参考资料:http://download.csdn.net/detail/fengyan5022/4136492

原创粉丝点击