ABAP可执行程序的流,翻译自 ABAP Keyword Documentation 的 Flow of an Executable Program 。
SUBMIT 语句会在一个独立的内部会话中装载被调用的程序,然后在ABAP运行环境中启动一系列进程, 这些进程按以下顺序引发被调用的程序中的事件和操作:
1.程序构造事件 LOAD-OF-PROGRAM
2.用 PARAMETERS 和 SELECT-OPTIONS 后DEFAULT 定义的开始值被转给了相关的数据对象。其他的数据对象的开始值在 LOAD-OF-PROGRAM之前被设置。
3.报表事件 INITIALIZATION
4.如果有至少一个输入字段或者按钮,SELSCREEN OPTIONS 中定义的选择屏幕 SELECTION-SCREEN 会被调用。如果没有指定显示选择屏幕,则调用标准选择屏幕。这样完整的选择屏幕就执行了。在这之后程序流是继续还是终止,取决于选择屏幕上最后一个用户动作。在处理选择屏幕的第一个事件之前,AT SELECTION-SCREEN OUTPUT ,在选择屏幕中定义的值被传递。
5.报表事件 START-OF-SELECTION
6.如果调用的程序和数据库相连,会有不同的 GET 事件。
7.报表事件 END-OF-SELECTION
8.调用基本列表:
如果基本列表为空,则程序退出
如果是假脱机列表,则发送到 SAP 假脱机系统并程序退出
如果在list_options中定义了 EXPORTING LIST TO MEMORY ,则基本列表存储在ABAP MEMORY中,程序退出
否则基本列表是一个屏幕列表并显示在屏幕上。在展示屏幕上的用户动作会触发列表事件。当用户退出列表显示时,程序退出。
9.如果在第四步没有选择屏幕展示,进程体现在后台或者根本没有进程,那么程序流结束
如果第四步有选择屏幕,运行环境会在基本列表结束后再次调用被调用的程序。在新的调用中,运行环境提供 参数,选择条件,以及在初始化事件和at select-screen output 之间的选择屏幕界面的动态选择和以前的输入值(其他的设置,比如分页是否活动或者是否通过)。此次程序调用直到用户选择的选择屏幕界面的 Back Exit Cancel 退出。
可以用 LEAVE PROGRAM 在任何一步退出程序调用,用 LEAVE LIST-PROCESSING 可以离开列表处理。
注:
如果被调用的程序与逻辑数据库相关联,系统就会调用上面列出的步骤的数据库程序的相关子例程。