ABAP报表设计
Include是提高程式可读性很好的方法,下面抄一篇别人的文章。^_^
(from http://blog.sina.com.cn/s/blog_5116d3ba0100efx2.html###)
很多都是个人习惯吧,但是有一些习惯,能够让其他人在读你写的程序或者修改的时候,很快捷,有规律可循。
INCLUDE ZXXXXX_BlOCK。
里面有无非就是以下几个部分
INITIALIZATION.(初始化。在所有以下事件块运行之前运行的,只运行一次的事件块)
AT SELECTTION-SCREEN OUTPUT.(PBO事件块)
AT
AT SELECTION-SCREEN.(PAI事件块)
START-OF-SELECTION.(程序运行事件块)
PS(我的个人见解):SAP中的程序还是有很多类型的.尤其是类报表程序,有可执行程序(REPORT 开头)还有MODULE POOL(PROGARM 开头)2种形式.
那么他们什么区别呢?有教材解释SAP的ABAP开发属于事件驱动开发。这和VB很类似。但是恰恰是这句话,很精华的解释了SAP程序的必然结构。对于事 件驱动,那么,SAP程序就需要是由一个个事件去触发才能够执行的程序,当我们使用SE38去创建1类型的可执行性程序(EPORT 开头)这样的程序,我们可以直接调试,我们会发现,这个程序是按照我所写的以上事件块的顺序去依次执行的。它的事件块的顺序是指定好的。所以我们能够 F8,去运行。我们去创建MODULE POOL就不能去执行,因为它需要用TCODE的去指定运行入口,一般都会在MODULE POOL 里面创建 SCREEN . 在一个SCREEN里 就会有两个事件块,就是PBO 和PAI.我们使用多个大量的屏幕,或者使用TABLECONTROL控件,再或是使用子屏幕范围控件嵌套各种SUBSCREEN(子屏幕),其中都是需 要PAI 和 PBO 相互联系的,一个屏幕的PAI中,必然后会有一个CALL SCREEN 或者CALL SUBSCREEN ... INCLUDIG....命令去调用另一个屏幕或者子屏幕,然后另一个屏幕先运行PBO,有屏幕上的操作,就执行被操作屏幕的PAI。个人感觉正式这种灵 活的编写方式,导致了这种类型(MODULE POOL)的程序不能直接F8,编译器无法获取程序从哪里开始,而TCODE就会指定从哪个屏幕开始。
我的前辈们,一般都习惯使用以下的习惯。
PS(个人见解):INCLUDE 是什么?(CR:就是产生的请求号,也可以理解为一个程序的代码版本,所有的SAP程序都是在D系统(DEVELOPMENT SYSTEM)然后传到Q(测试)系统由顾问进行测试,又不干扰生产系统的程序运行,最后再传到P(生产)系统,覆盖原来的代码,变成修改后代码逻辑) 恩,我感觉它是一种封装起来的思想。我研究一下,它单独产生CR,而和它的主程序没有任何关联。这也是必然的,因为INCLUDE是一个全局全系统的声 明,一旦你取了一个名字,那么其他人也能够引用使用,这就导致它的修改CR是单独产生的。
再然后就是SELECT-SCREEN 的相关定义了。
2、习惯使用PERFROM来封装代码,取有意义的名字,然后把所有的FORM都丢进
3、在START-OF-SELECTION中,我们一般都会写以下几个PERFORM,
到此为止,一个报表程序的框架就出来了。当然,其中在注意使用一下宏等小地方,来节省代码的行数。
尽可能实现代码的复用。注意在FORM里定义的变量在离开FORM后,就会被系统释放掉,回收内存空间。
SAP程序优化,是BC490的范畴,最近比较忙,还没有去研究,BC414是基础。