输入标题、程序类型等信息后,单击”保存“按钮
在属性页输入描述后,直接保存
单击工具条上的”格式“按钮,进入设计界面,添加一个文本字段控件,输入名称和文本,如果控件显示红色的表示未正确设计属性
”退出“按钮属性如下
注意属性中功能码为EXIT,函数类型”En“,表示退出函数。
设计窗口上的按钮说明
控制用屏幕输入输出事件,如在启动屏幕时使用的菜单、工具条,在输入后对输入框的检查,对按钮事件的控制等。
窗口的属性
窗口上所有对象的列表、属性等
单击按钮,出现如下图
PROCESS BEFORE OUTPUT(PBO):屏幕显示前的调用模块。
PROCESS ALTER INPUT(PAI):响应用户输入后的调用模块,如单击按钮、输入字段后回车等事件。
写入代码”MODULE CANCEL AT EXIT-COMMAND.“。表示在退出事件时执行CANCEL模块,这和退出按钮的函数类型属性对应。
REPORT YTEST20160608. *直接调用窗口 CALL SCREEN 100. MODULE CANCEL INPUT. LEAVE PROGRAM. ENDMODULE.执行程序,输出结果如下
单击“退出”按钮,退出程序。
在输入状态名称后,单击创建按钮,如下图
输入短文本
REPORT YTEST20160608. DATA:FORINPUT(20) TYPE C VALUE '初始值', FORCODE(20) TYPE C. *功能码返回值 DATA:OK_CODE TYPE SY-UCOMM, SAVE_OK TYPE SY-UCOMM. *直接调用窗口 CALL SCREEN 100. *输出返回变量 WRITE:FORINPUT, / FORCODE. MODULE STATUS_0100 OUTPUT. *定义状态条、包括菜单、工具条按钮、系统按钮等 SET PF-STATUS 'TESTSTA1'. *将变量值输出至屏幕字段 FORCODE = SAVE_OK. ENDMODULE. MODULE CANCEL INPUT. LEAVE PROGRAM. ENDMODULE. MODULE USER_COMMAND_0100 INPUT. SAVE_OK = OK_CODE. CLEAR OK_CODE. *分析功能码,如果是工具条上的第2个按钮,则退出当前屏幕 CASE SAVE_OK. WHEN 'BIN2'. LEAVE TO SCREEN 0. ENDCASE. ENDMODULE.
REPORT YTEST20160612. *功能码返回值 DATA:OK_CODE TYPE SY-UCOMM, SAVE_OK TYPE SY-UCOMM. *使用学校表 TABLES YTJAYSCHOOL. *直接调用窗口 CALL SCREEN 120. MODULE CANCEL INPUT. LEAVE PROGRAM. ENDMODULE. MODULE STATUS_0120 OUTPUT. SET PF-STATUS 'STATUS1'. ENDMODULE. MODULE USER_COMMAND_0120 INPUT. SAVE_OK = OK_CODE. CLEAR OK_CODE. CASE SAVE_OK. WHEN 'EXIT'. LEAVE PROGRAM. ENDCASE. *将SELECT数据赋给SCHOOL记录,SCHOOL记录关联屏幕字段 SELECT SINGLE * INTO CORRESPONDING FIELDS OF YTJAYSCHOOL FROM YTJAYSCHOOL WHERE YSH_ID = YTJAYSCHOOL-YSH_ID. IF SY-SUBRC NE 0. CLEAR YTJAYSCHOOL. ENDIF. ENDMODULE.
消息类型 | 后继操作 |
E:错误 | 所有字段重新输入,重新启动PAI处理,所有字段重新输入 |
W:警告 | 所有字段允许输入,在未输入新值回车,也会继续PAI处理 |
I:信息(弹出窗口) | 中断当前操作 |
A:异常终止 | 返回 |
S:成功 | 处理PA |
PROCESS BEFORE OUTPUT. MODULE STATUS_0100. *检查FLD1、FLD2 PROCESS AFTER INPUT. CHAIN. FIELD: FLD1,FLD2. MODULE CHECK1. ENDCHAIN. *检查FLD3、FLD4 CHAIN. FIELD: FLD3,FLD4. MODULE CHECK2. ENDCHAIN. *当FLD2的首字符是*时执行CHECK3检查 FIELD FLD2 MODULE CHECK3 ON *-INPUT. MODULE CANCEL AT EXIT-COMMAND. MODULE USER_COMMAND_0100.调整主程序,代码如下
REPORT YTEST20160613. *功能码返回值 DATA: OK_CODE TYPE SY-UCOMM, SAVE_OK TYPE SY-UCOMM. *定义输入字段变量 DATA: FLD1(20) TYPE C, FLD2(20) TYPE C, FLD3(20) TYPE C, FLD4(20) TYPE C, ACTION(50) TYPE C. *直接调用窗口 CALL SCREEN 100. MODULE CANCEL INPUT. LEAVE PROGRAM. ENDMODULE. MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'STATUS1'. ENDMODULE. 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. 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. 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. MODULE CHECK3 INPUT. MESSAGE I005(YMESS) WITH 'FLD2 * WARNING'. ENDMODULE.输出结果如下图
REPORT YTEST20160613001. *功能码返回值 DATA: OK_CODE TYPE SY-UCOMM, SAVE_OK TYPE SY-UCOMM. *VRM类型定义接口 TYPE-POOLS VRM. DATA: FLD1(20) TYPE C. *内表、记录,字段变量定义 DATA: FNAME TYPE VRM_ID, VVA TYPE VRM_VALUES, LVVA LIKE LINE OF VVA. *直接调用窗口 CALL SCREEN 100. MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'STATUS1'. *加两条记录 FNAME = 'FLD1'. LVVA-KEY = '广州'. APPEND LVVA TO VVA. CLEAR LVVA. LVVA-KEY = '上海'. APPEND LVVA TO VVA. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING ID = FNAME VALUES = VVA * EXCEPTIONS * ID_ILLEGAL_NAME = 1 * OTHERS = 2 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDMODULE. MODULE CANCEL INPUT. LEAVE PROGRAM. ENDMODULE. MODULE USER_COMMAND_0100 INPUT. SAVE_OK = OK_CODE. CLEAR OK_CODE. CASE SAVE_OK. WHEN 'CANCEL'. LEAVE PROGRAM. ENDCASE. ENDMODULE.输出结果如图