SAP应用界面开发:4)SAP屏幕事件控制

      1)INITIALIZATION事件
       
该事件在屏幕未显示之前执行,对程序设置值及屏幕元素进行初始化赋值。如下代码:
       [For Example]
    PARAMETERS QUAL_DAY TYPE DEFAULT SY-DATUM.
    SELECTION-SCREEN PUSHBUTTON /1(20) SAVE USER-COMMAND SAVE.
    INITIALIZATION. "程序初始化事件,該事件在程序屏幕未顯示之前執行。對程序設置值及屏幕元素進行初始化設置.
      QUAL_DAY+6(2) = '01'.
      QUAL_DAY = QUAL_DAY - 1.
      MOVE 'SAVE' TO SAVE. "给SAVE按钮赋值
    运行界面如下:
    
    2)START-OF-SELECTION事件
    
该事件在单击按钮后触发。
    [For Example]
    PARAMETERS QUAL_DAY TYPE DEFAULT SY-DATUM.
    SELECTION-SCREEN PUSHBUTTON /1(20) SAVE USER-COMMAND SAVE.

    INITIALIZATION. "程序初始化事件,該事件在程序屏幕未顯示之前執行。對程序設置值及屏幕元素進行初始化設置.
     QUAL_DAY+6(2) = '01'.
     QUAL_DAY = QUAL_DAY - 1.
     MOVE 'SAVE' TO SAVE. "给SAVE按钮赋值

   *START-OF-SELECTION事件在單擊按鈕后觸發該事件.
   START-OF-SELECTION.
     "STOP.  "EXIT.:從EXIT語句后的程序將不再執行包括END-OF-SELECTION模塊,REJECT.語名后的程序將不再執行,但不影響END-OF-SELECTION.模塊的執行.
     WRITE: 'DATE=',QUAL_DAY.
   
运行界面后按F8或者单击查询,如下:
   
   
   3)END-OF-SELECTION事件
   
该事件应用于所有数据处理完成,即START-OF-SELECTION相关执行事件执行完成,但输出屏幕还未显示之前,在实际的应用于一些执行结果的检验等。
   [For Example]
   PARAMETERS QUAL_DAY TYPE DEFAULT SY-DATUM.
   SELECTION-SCREEN PUSHBUTTON /1(20) SAVE USER-COMMAND SAVE.

   INITIALIZATION. "程序初始化事件,該事件在程序屏幕未顯示之前執行。對程序設置值及屏幕元素進行初始化設置.
     QUAL_DAY+6(2) = '01'.
     QUAL_DAY = QUAL_DAY - 1.
     MOVE 'SAVE' TO SAVE. "给SAVE按钮赋值

   *START-OF-SELECTION事件在單擊按鈕后觸發該事件.
   START-OF-SELECTION.
    "STOP.  "EXIT.:從EXIT語句后的程序將不再執行包括END-OF-SELECTION模塊,REJECT.語名后的程序將不再執行,但不影響END-OF-  SELECTION.模塊的執行.
     WRITE: 'DATE=',QUAL_DAY.


   END-OF-SELECTION.
    IF QUAL_DAY <> SY-DATUM. "<>符號與><符號都是不等於
      WRITE:'TODAY=',SY-DATUM.
    ELSE.
      WRITE:'QUAL_DAY=',QUAL_DAY.
   ENDIF.
   运行界面如下:
   

   

   
4)屏幕事件的中止
   EXIT,STOP,REJECT,CHECK.

STOP命令
使用该命令的程序位置
INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION和GET 事件中
处理说明
1、 当在INITIALIZATION事件执行该命令,系统将直接触发应用服务器和客户端屏幕元素的发送;
2、 在其他事件中将直接触发END-OF-SELECTION事件的执行,如果不想执行END-OF-SELECTION,请使用REUTNR或者EXIT.
 
EXIT命令
使用该命令的程序位置
用于循环和程序模块中:...ENDDO,...ENDWHILE,...ENDLOOP,...ENDSELECT
处理说明
1、 循环处理中,EXIT只跳出当前的循环;
2、 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,将直接触发List输出,将不执行END-OF-SELECTION事件;如果没有List输出,系统将直接返回选择屏幕;
3、 对于procedure系统返回调用处;

Sap推荐EXIT只是用于循环处理,对于处理模块请使用Return。 

RETURN命令
使用该命令的程序位置
用于处理模块中(event block, dialog module, procedure (function module, method, subroutine))
处理说明
1、 对于procedure ,RETURN将无条件退出当前的处理模块,不影响后续模块的执行;
2、 对于START-OF-SELECTION, GET, END-OF-SELECTION事件中,将直接触发List输出,将不执行END-OF-SELECTION事件;如果没有List输出,系统将直接返回选择屏幕;
注意事项
RETURN不管存在多少层次的循环,将直接退出当前处理模块,这一点和EXIT不同。

CHECK命令
使用该命令的程序位置
用于循环和程序模块中:...ENDDO,...ENDWHILE,...ENDLOOP,...ENDSELECT
处理说明
1、 循环处理中,CHECK只是不执行本次循环的后续处理,继续调到下一次循环;
2、 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,只是中断本事件内的后续代码的执行 ,不影响其他后续模块的处理,这和EXIT,RETURN是不同的;
3、 对于没有循环procedure系统返回调用处;
4、 对逻辑数据库的GET事件,系统退出本次纪录和子节点的读取处理,将继续下一条纪录的处理;
注意事项
Sap推荐CHECK只是用于循环处理,对于处理模块请使用Return。

REJECT命令
使用该命令的程序位置
用于逻辑数据库的GET处理事件中
处理说明
REJECT的处理类似CHECK,但和CHECK不同的是:REJECT如果在循环内也同样退出本次的处理,而CHECK只是退出循环,不退出处理

注意事项