2011年(45)
分类: 数据库开发技术
2011-08-28 17:52:07
上一篇博文我只是画了一个屏幕,一个外壳而已,真正要实现我们需要的功能还需要写相应的代码。
输入SE51,打开我们的例子程序,切换到“流程逻辑”,默认的屏幕代码如下图所示:
第一个PROCESS BEFORE OUTPUT(PBO)的意思是画面载入时所做的动作。
第二个PROCESS AFTER INPUT(PAI)的意思是用户在屏幕上输入之后获取屏幕的动作。
我们把注释掉的代码去掉注释,然后保存,并双击“STATUS_0100”字符串,出现如下对话框:
下图提示我们是否
是要新增一个INCLUDE还是
在原有的程序上新增代码段,我们选择第二个:
这个时候画面自动切换到SE38并打开我们的程序,自动加入如下代码(去掉相应的注释并填入内容):
我们双击上面的“ZCREEN0100”,出现一下画面:
填入相应内容之后:
上面第一个代表菜单栏;第二个代表自定义工具栏,第三个代表系统工具栏(ENTER,保存,退出,返回):
点击第二个,输入SUM,然后点击“SUM”下方图示的位置,进入如下图:
继续:
设定快捷键:
继续:
于是,自定义按钮算是好了。
第三个,系统工具栏,输入如下名称:
还需要点击进去进行设置,都一样的,这里我们点击“SAVE”,其他照做:
于是,这个系统工具栏算是弄好了。记得保存并激活。回到程序画面。双击“TITLE0100”,弹出下列对话框:
这个是画面的标题:
点击全部显示,进入之后激活:
返回SE51画面激活屏幕,回到程序试运行程序:
发现屏幕都有工具按钮了,但是点击没反应!接下去添加控件代码了!
双击下面的“USER_COMMAND_0100”,跟STATUS_0100一样:
输入如下代码:
WHEN后面的内容都是控件的名称!!!
还记得我们屏幕上那个按钮的“功能代码”吗?参照上一篇博文,我们的按钮功能代码是“OK”,于是我们在CASE里添加如下代码:
WHEN 'OK'.
...
我们在程序中怎么获得屏幕上控件的值呢?起始很好办,只要我们在程序中新建一个变量,类型和长度以及名称都跟屏幕上控件对应属性一致就可以了。
比如屏幕上那个文本框名称是:TXT。我们要获取这个文本框的内容,就需要新建一个TXT的变量,长度最好一直,类型要一样:
DATA:TXT(9) TYPE C.
而复选框和单选框的声明也是类似,名称要一样(大写),变量的类型是C,长度是1。如下:
DATA:C1 TYPE C,
C2 TYPE C,
R1 TYPE C,
R2 TYPE C.
一旦复选框和单选被选择,它们的值是‘X’。
WHEN 'OK'.
MESSAGE TXT TYPE 'I'.
IF C1 = 'X'.
MESSAGE '复选框1被选中' TYPE 'I'.
ENDIF.
IF C2 = 'X'.
MESSAGE '复选框2被选中' TYPE 'I'.
ENDIF.
IF R1 = 'X'.
MESSAGE '单选框1被选中' TYPE 'I'.
ELSEIF R2 = 'X'.
MESSAGE '单选框2被选中' TYPE 'I'.
ENDIF.
我们在SE51中屏幕设计器上画出一个文本框,只作为输出,即内容说明:
此文本框名称是TXT1,长度是14,于是我们定义变量如下:
DATA:TXT1(14) TYPE C.
CASE代码块更改如下:
CASE OK_CODE.
WHEN 'ENTER'.
MESSAGE 'CLICK ENTER' TYPE 'I'.
WHEN 'SUM'.
MESSAGE 'CLICK SUM' TYPE 'I'.
WHEN 'SAVE'.
MESSAGE 'CLICK SAVE' TYPE 'I'.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'OK'.
MESSAGE TXT TYPE 'I'.
IF C1 = 'X'.
MESSAGE '复选框1被选中' TYPE 'I'.
ENDIF.
IF C2 = 'X'.
MESSAGE '复选框2被选中' TYPE 'I'.
ENDIF.
IF R1 = 'X'.
MESSAGE '单选框1被选中' TYPE 'I'.
ELSEIF R2 = 'X'.
MESSAGE '单选框2被选中' TYPE 'I'.
ENDIF.
TXT1 = '填充内容!'.
WHEN 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
本文主要是讲解基本控件的使用。接下去一片博文要讲述下拉框的使用。