现在的位置: 首页 > 综合 > 正文

Abap/4操作屏幕(3)

2013年10月25日 ⁄ 综合 ⁄ 共 6141字 ⁄ 字号 评论关闭
*&---------------------------------------------------------------------*
*& 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.

抱歉!评论已关闭.