*&---------------------------------------------------------------------* *& Report Z_CPT7_6 * *& * *&---------------------------------------------------------------------* *& 屏幕字段的输入检查 * *& * *&---------------------------------------------------------------------* REPORT Z_CPT7_6 . 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. TABLES: ZTSTUDENT. *CALL SCREEN 0100. CALL SCREEN 0101. *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. * SET PF-STATUS 'xxxxxxxx'. * SET TITLEBAR 'xxx'. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module CHECK1 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE CHECK1 INPUT. IF FLD1 = 'FLD1'. MESSAGE e004(YMESS) WITH 'FLD1 ERROR'. ENDIF. IF FLD1 = 'FLD11'. MESSAGE i004(YMESS) WITH 'FLD1 WARNING'. ENDIF. IF FLD1 = 'FLD111'. MESSAGE i004(YMESS) WITH 'FLD1 OK'. ENDIF. ENDMODULE. " CHECK1 INPUT *&---------------------------------------------------------------------* *& Module CHECK2 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE CHECK2 INPUT. IF FLD3 = 'FLD3'. MESSAGE e004(YMESS) WITH 'FLD3 ERROR'. ENDIF. IF FLD3 = 'FLD33'. MESSAGE e004(YMESS) WITH 'FLD3 WARNING'. ENDIF. IF FLD3 = 'FLD333'. MESSAGE e004(YMESS) WITH 'FLD3 OK'. ENDIF. ENDMODULE. " CHECK2 INPUT *&---------------------------------------------------------------------* *& Module CHECK3 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* 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'. ENDCASE. ACTION = ''. CONCATENATE FLD1 FLD2 FLD3 FLD4 INTO ACTION. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Module STATUS_0101 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE STATUS_0101 OUTPUT. * SET PF-STATUS 'xxxxxxxx'. * SET TITLEBAR 'xxx'. ENDMODULE. " STATUS_0101 OUTPUT *&---------------------------------------------------------------------* *& Module CHECK_STUID INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE CHECK_STUID INPUT. IF ZTSTUDENT-STUID = '1'. MESSAGE e004(YMESS) WITH 'STUID ERROR'. ENDIF. ENDMODULE. " CHECK_STUID INPUT *&---------------------------------------------------------------------* *& Module CHECK_STUNAME INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE CHECK_STUNAME INPUT. IF ZTSTUDENT-STUNAME = 'JIM'. MESSAGE e004(YMESS) WITH 'STUNAME ERROR'. ENDIF. ENDMODULE. " CHECK_STUNAME INPUT *&---------------------------------------------------------------------* *& Module CHECK_STUGRADE INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE CHECK_STUGRADE INPUT. IF ZTSTUDENT-STUGRADE = '9'. MESSAGE e004(YMESS) WITH 'STUGRADE ERROR'. ENDIF. ENDMODULE. " CHECK_STUGRADE INPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0101 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE USER_COMMAND_0101 INPUT. ENDMODULE. " USER_COMMAND_0101 INPUT *&---------------------------------------------------------------------* *& Module CHECK_ALLFIELD INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE CHECK_ALLFIELD INPUT. * IF ZTSTUDENT-STUID = '1' * AND ZTSTUDENT-STUNAME = 'JIM' * AND ZTSTUDENT-STUGRADE = '9'. * MESSAGE e004(YMESS) WITH 'JIM EXIST!'. * ENDIF. MESSAGE i004(YMESS) WITH 'CHECK ALL!'. ENDMODULE. " CHECK_ALLFIELD INPUT *&---------------------------------------------------------------------* *& Module CHECK_FIELD INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE CHECK_FIELD INPUT. MESSAGE i003(YMESS) WITH 'CHECK!'. ENDMODULE. " CHECK_FIELD INPUT *子屏幕100的逻辑流代码 PROCESS BEFORE OUTPUT. MODULE STATUS_0100. PROCESS AFTER INPUT. *检查FLD1,FLD2字段 CHAIN. FIELD: FLD1,FLD2. MODULE CHECK1. ENDCHAIN. *检查FLD3,FLD4字段 CHAIN. FIELD:FLD3,FLD4. MODULE CHECK2. ENDCHAIN. *如果某个字段的值为“XXX”时,执行检查模块 FIELD FLD2 MODULE CHECK3 ON *-INPUT. MODULE CANCEL AT EXIT-COMMAND. MODULE USER_COMMAND_0100. *子屏幕101的逻辑流代码 PROCESS BEFORE OUTPUT. MODULE STATUS_0101. * PROCESS AFTER INPUT. * FIELD ZTSTUDENT-STUID MODULE CHECK_STUID. * FIELD ZTSTUDENT-STUNAME MODULE CHECK_STUNAME. * FIELD ZTSTUDENT-STUGRADE MODULE CHECK_STUGRADE. *在CHAIN中声明的字段,只要其中任一个字段有输入就触发。 *CHAIN. * FIELD: ZTSTUDENT-STUID,ZTSTUDENT-STUNAME,ZTSTUDENT-STUGRADE. * MODULE CHECK_ALLFIELD ON CHAIN-INPUT. * MODULE CHECK_STUID. *ENDCHAIN. *这个语法在任何触发PAI事件的情况中都会被触发 *FIELD ZTSTUDENT-STUID MODULE CHECK_FIELD. *字段的onchange事件 *FIELD ZTSTUDENT-STUID MODULE CHECK_FIELD ON REQUEST. *当字段当前的值不为初始值时触发,但怎么为字段设置初始值呢? *字段默认的初始值是空 FIELD ZTSTUDENT-STUID MODULE CHECK_FIELD ON INPUT. MODULE CANCEL AT EXIT-COMMAND. MODULE USER_COMMAND_0101.