ABAP程序执行过程

ABAP程序执行过程

在SAP系统中,ABAP程序主要有两类 ,一个是报表程序,程序类型为1,另一个是模块池程序,程序类型为M。这两类程序的执行过程还是有很大的区别的。

模块池程序

模块池程序(Module pool programs),也可以叫用户对话程序。在此类程序中,最重要的概念是屏幕(Screen),所有的操作基本上都是围绕屏幕的PBO和PAI进行的。

此类程序有个最大的特点就是只能通过事务代码执行(T-code),程序执行的过程从表象上看就是一系列屏幕切换的过程,详细的程序执行过程如下:

当执行模块池程序时:

 

  • 首先触发LOAD-OF-PROGRAM事件,由ABAP处理器(ABAP Processor) 完成。 此事件结束后,ABAP处理器将控制交给屏幕处理器(Screen Processor)。
  • 屏幕处理器初始化由T-code指定的初始屏幕(The initial screen)。先触发PBO事件,屏幕处理器将控制交还给ABAP处理器来执行相应的PBO模块。在处理PBO模块时,主要是对定义在其中的ABAP程序字段(ABAP Fields)进行操作,处理完的ABAP程序字段的值会传送给相应的屏幕字段(Screen fields),然后输出屏幕。PBO事件结束。
  • 屏幕输出后,由屏幕处理器进行控制,等待着用户在屏幕上进行输入,输入结束后(一般以按下Enter键作为标志),屏幕处理器触发PAI事件并将用户输入到屏幕字段的值传给相应的ABAP程序字段。由ABAP处理器接管控制,执行相应的PAI模块。

报表程序

报表程序类型为1,也是SAP系统中最为常见和重要的程序类型。它有两个特点:1)报表程序的事件是按照系统预定义好的顺序来触发并执行的,程序员不能更改,只能编写每个特定事件块中的操作。2)通常报表程序都包括选择屏幕。此外,在此提一点,报表程序可以通过Job在后台执行。详细的执行过程如下:

 

  • 同模块池程序一样,首先触发LOAD-OF-PROGRAM事件
  • 触发INITIALIZATION事件
  • 触发START-OF-SELECTION事件。这是选择屏幕中的最主要的事件,有点像Java程序中的public static void main()。
  • 如果存在逻辑数据库,则调用GET node和GET node LATE事件。
  • 最后触发END-OF-SELECTION事件

 

 

posted @ 2011-03-01 17:58  学伟  阅读(3092)  评论(0编辑  收藏  举报