首页 > 代码库 > 屏幕事件控制器

屏幕事件控制器

SAP程序的执行时通过事件来驱动的

1.INITIALIZATION事件,这个事件是在屏幕未显示之前执行,对程序设置值及屏幕元素进行初始化赋值

2.START-OF-SELECTION事件

该事件是单击执行按钮时触发的

3.END-OF-SELCTION事件

该事件应用于所有事件数据处理完成,即START-OF-SELECTION事件执行完成,但是输出屏幕还未显示之前。在实际开发中,主要应用于一直执行结果的检验等,其输出数据叠加于同一输出屏幕。

下面说说AT SELECTION-SCREEN事件

1.AT SELECTION-SCREEN OUT

在程序执行前会优先检查该事件下的所有代码,可以用于对屏幕输入值得校验,当回执错误信息时,程序会终止并退出。

 1 REPORT ztest_sum.
 2 
 3 TABLES:mara,spfli.
 4 *TABLES sscrfields.  "引用屏幕字段属性
 5 
 6 PARAMETERS p_carr TYPE spfli-carrid.
 7 
 8 AT SELECTION-SCREEN OUTPUT.
 9   IF p_carr IS INITIAL.
10     MESSAGE please enter a value TYPE I.
11   ENDIF.

以上的检测不加OUTPUT也是可以的,但是加了OUTPUT程序在选择屏幕显示前先执行了AT SELECTION-SCREEN OUTPUT下的检查代码,如果不加的话程序在屏幕显示前是不会检查的,需要点击执行按钮后才会去执行该段代码

2.AT SELECTION-SCREEN ON{para|selcrit} 

可以实现程序执行前对指定输入域数据的检查,执行该事件时,其他输入域的输入状态会被锁定,如下所示

 

REPORT ztest_sum.

TABLES:mara,spfli.
*TABLES sscrfields.  "引用屏幕字段属性

PARAMETERS p_carr TYPE spfli-carrid.
PARAMETERS p_carr2 TYPE spfli-carrid.

AT SELECTION-SCREEN ON p_carr.
  IF p_carr IS INITIAL.
    MESSAGE please enter a value1 TYPE E.
  ENDIF.

AT SELECTION-SCREEN ON p_carr2.
  IF p_carr IS INITIAL.
    MESSAGE please enter a value2 TYPE E.
  ENDIF.

3.AT SELECTION-SCREEN

该事件和前两个事件类似但是执行顺序的优先级低于前两个,OUTPUT最先执行 再者就是 ON  了

4.AT SELECTION-SCREEN ON END OF (selcrit)

该事件仅仅针对SELECT-OPTIONS所定义的输入域,并且该输入域对象在进行多行数据输入操作时将触发该事件。

5.AT SELECTION-SCREEN ON BLOCK(block)

该事件应用于包含线结构的屏幕中,非指定框线的所有输入域对象输入状态都将被锁定

6.AT SELECTION-SCREEN ON RADIOBUTTON GROUP(radi)

该事件针对屏幕中的单选按钮组进行控制,执行时,非指定按钮组的输入状态都将被锁定

7.AT SELECTION-SCREEN ON {HELP-REQUEST|VALUE-REQUEST}FOR {para|selrit-low|selcrit-high}

用于实现屏幕输入域的自定义F1和F4帮助