SCREEN 实例(重点在于FIELD的验证结合CHAIN的用法)
    REPORT中代码------------------------------------------------------------------------------------------
TABLES SPFLI.
DATA: OK_CODE TYPE SY-UCOMM.
DATA: 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.
*&---------------------------------------------------------------------*
*&      Module  CANCEL  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
CALL SCREEN 100.
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.
*  SELECT SINGLE *
*    INTO CORRESPONDING FIELDS OF SPFLI
*    FROM SPFLI
*    WHERE CARRID EQ SPFLI-CARRID AND CONNID EQ SPFLI-CONNID.
*IF sy-subrc ne 0.
*  CLEAR spfli.
*ENDIF.
  ACTION = ''.
  CONCATENATE FLD1 FLD2 FLD3 FLD4 INTO ACTION.
endmodule.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module STATUS_0100 output.
  SET PF-STATUS 'STATUS1'.
*  SET TITLEBAR 'xxx'.
endmodule.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  CHECK1  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module CHECK1 input.
IF fld1 = 'FLD1'.
  MESSAGE e398(00) WITH 'FLD1 ERROR'.
ENDIF.
IF FLD1 = 'FLD11'.
  MESSAGE I398(00) WITH 'FLD1 WARNING'.
ENDIF.
IF FLD1 = 'FLD111'.
  MESSAGE S398(00) WITH 'FLD1 OK'.
ENDIF.
endmodule.                 " CHECK1  INPUT
*&---------------------------------------------------------------------*
*&      Module  CHECK2  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module CHECK2 input.
IF FLD3 = 'FLD3'.
  MESSAGE E398(00) WITH 'FLD3 ERROR'.
ENDIF.
IF FLD3 = 'FLD33'.
  MESSAGE I398(00) WITH 'FLD3 WARNING'.
ENDIF.
IF FLD3 = 'FLD333'.
  MESSAGE S398(00) WITH 'FLD3 OK'.
ENDIF.
endmodule.                 " CHECK2  INPUT
*&---------------------------------------------------------------------*
*&      Module  CHECK3  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module CHECK3 input.
  MESSAGE I398(00) WITH 'FLD2 * WARNING'.
endmodule.                 " CHECK3  INPUT
 
 
 
 
 
屏幕100的逻辑流---------------------------------------------------------------------------------------
 PROCESS BEFORE OUTPUT.
 MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
  CHAIN.
    FIELD: FLD1, FLD2.
    MODULE CHECK1.
  ENDCHAIN.
  CHAIN.
    FIELD: FLD3, FLD4.
    MODULE CHECK2.
  ENDCHAIN.
  FIELD FLD2 MODULE CHECK3 ON *-INPUT.
 MODULE CANCEL AT EXIT-COMMAND.
 MODULE USER_COMMAND_0100.