• Event Flow


    1 报表过程事件
    报表过程事件是在报表运行过程中由系统自动控制,按照一定次序被触发的事件,其目的是从数据库中选择数据并整理,准备进行列表输出。这些事件从报表程序启动开始就被系统顺序触发,现分述如下:
    INITIATION: 初始化事件,用于程序初始化,例如选择屏幕中字段默认值的填充。
    START-OF-SELECTION:选择开始事件,如果报表中含有选择屏幕,则在选择屏幕的处理结束后触发,使报表程序的默认事件块。如果程序中部分代码不隶属于任何事件关键字,则自动被插入该事件块的初始部分。
    END-OF-SELECTION:选择结束事件,如果程序中使用逻辑数据库,则在所有逻辑数据处理结束后触发。一般在该事件中输出列表。
     
    2 选择屏幕事件
    如果报表需要使用选择屏幕接受用户输入,除定义选择屏幕元素之外,还需要编辑选择屏幕事件块来选择屏幕行为进行控制,与其相关的系列事件将在INITIATION之后START-OF-SELECTION之前被触发。现分述如下:
    AT SELECTION-SCREEN OUTPUT:选择屏幕PBO事件,显示选择屏幕之前触发。
    AT SELECTION-SCREEN:选择屏幕PAI事件,用户在选择屏幕中执行某些功能后被触发。该事件关键字语句包含多个附加项,可以用于控制选择屏幕状态,并对其中的用户交互进行响应。例如,当用户输入不正确的值时,给处错误消息。或是进行一些妥当性检查。

    (1)其实就像一个FORM,所以在这个事件里声明的变量都是局部变量。

    (2)根据SY-UCOMM这个系统变量可以判断用户的命令

    (3)在这个事件里响应的是屏幕上选择条件中的事件,例如CHECKBOX的选择与否,RADIOBUTTON的选择,LISTBOX的选择等等。

    所以分为以下几个方面:

    1. ... ON field:在PARAMETER变化时触发的事件,对于选择屏幕某字段输入的PAI事件,当该字段的值被传递给程序时被触发,可以应用于改字段本身的正确性检查,如可系统提示错误,则可以在该字段中重新输入,此时其他元素呈灰色,不接受输入

    2. ... ON END OF sel:SELECT-OPTION触发的事件,用于整个选择表输入结束后各行的检查

    3. ... ON VALUE-REQUEST FOR psel_low_high:当光标位于某屏幕字段时,选择的帮助(F4)

    4. ... ON HELP-REQUEST FOR psel_low_high:当光标位于某屏幕字段时,选择的帮助(F1)

    5. ... ON RADIOBUTTON GROUP radi:单选按钮事件,必须进行整体输入检查

    6. ... ON BLOCK block:框架的触发事件

    7. ... OUTPUT:响应屏幕上的事件,修改选择屏幕的唯一方法

     
    3 逻辑数据库事件
    如果报表中使用到逻辑数据库,则在START-OF-SELECTION事件结束后将触发数据库事件。现说明如下:
    GET node    选择逻辑数据库中当前级别数据中的数据。
    GET node LATE 选择逻辑数据库中上一级别数据源中的数据。
    逻辑数据库事件的作用也是选择并整理数据,因而也可以将其看作是一种报表过程事件。
     
    4 列表事件
    在所有报表过程和选择屏幕事件结束后,系统将开始触发列表事件,这些事件块控制列表输出状态,负责处理列表过程中的交互并响应用户行为。主要有以下四种列表事件块。
    TOP-OF-PAGE:页眉控制,在每个新页面开始时触发。
    END-OF-PAGE:页脚控制,在当前页面结束时触发。
    AT LINE-SELECTION:行选择控制,用户选择某列表行时触发。
    AT USER-COMMAND : 用户交互控制,用户选择某个GUI功能时触发。
    如果一个报表中定义了后两种事件之一,则称其为交互之列表,因为这种表不仅能显示列表输出,还可以根据用户的行为给出更多其他的交互式信息。
    一般性的报表事件触发过程如下:
    1         一旦用户开始运行报表过程的可执行程序,事件LOAD-OF-PROGRAM首先被触发,程序开始运行。
    2         INITIALZATIONG 被触发。
    3         如果程序中定义了供用户输入的选择屏幕,每次选择屏幕输出之前,事件AT SELECTION-SCREEN OUTPUT
    被触发。
    4         如果用户在选择屏幕中输入某些值后执行某些功能,系统将触发AT SELECTION-SCREEN。
    5         之后触发START-OF-SELECTION事件。
    6         如果报表中使用到逻辑数据库,则接下来触发的事件为GET和GET LATE。
    逻辑数据库是一种数据源,为程序提供数据筛选和整理的方式,在逻辑数据库内部,数据条目通过循环一行一行读入程序,并可以在GET事件块内部进行处理。
    7         之后执行END-OF-SELECTION事件,如有列表,一般在该事件之后输出列表,此后系统运行时环境将控制交给显示服务器。
    8         然后触发页眉,页脚控制的TOP-OF-PAGE和END-OF-PAGE.
    9         如果程序中定义有列表事件,则系统可以响应用户在列表屏幕中的行为,触发各种程序中交互事件。行选择交互事件(AT LINE-SELECTION)允许用户从列表中选择某行,并将触发响应的事件。如果用户选择其他子定义的功能代码(功能代码与相关菜单,按钮或键盘热键有关,又程序员在GUI状态中定义),将触发用户指令交互,即AT USER-COMMAND事件。
     
    5 事件块的中止
    事件块的中止分为有条件中止和无条件中止。
    1 有条件中止 CHECK
    CHEXK: 如果CHECK语句中的条件为假,则系统离开当前事件并转向下一个事件块(不一定是END-OF-SELECTION)。但是如果CHECK用在事件块内部的循环语句中,则只作用于当前循环。
    2 无条件中止STOP,EXIT
    STOP: 立即结束任何当前事件,直接转向END-OF-SELECTION.
    EXIT: 立即离开任何模块,直接转向列表输出屏幕,不执行END-OF-SELECTION。
  • 相关阅读:
    JS常用方法【笔记整理】持续整理中
    JS中常用的几种时间格式处理【笔记整理】
    Css中部分知识点整理【笔记整理】
    Http相关知识整理【笔记整理】
    Echarts环形进度使用2 接上一篇中记录Echarts进度环使用【不同状态不同进度环颜色及圈内文字】
    NodeJS+Express+MongoDB 简单实现数据录入及回显展示【Study笔记】
    mongodb中的populate方法【转载】
    Echarts环形进度使用 1【简单的使用示例】
    Java的八种基本数据类型及其包装类
    Java文件的写入
  • 原文地址:https://www.cnblogs.com/fan769875881/p/9980112.html
Copyright © 2020-2023  润新知