刚学abap,最早接触的怎么生成一个list,作为输出。所以,在abap里面,最熟悉的可以说是list方面的知识。List最熟悉的另一个原因,是相对其他来说,最为简单,光用一句write,就可以在list上面涂鸦点看得见的东西,这比什么内表啊,类型什么的要到debug里面看的要直观的多,也方便的多。
也就因为此,list的方面的知识,很多都是作为一个程序员的基本功,而不是abap专有的东西。所以也在此我也就不再复述了。毕竟我水平也不咋地。
而在一个list生成的过程中,专属于abap的么,就是要分清一个用来出力的内表的结构(很不好意思,现在做对日开发,习惯用出力了,不知道正规说法怎么说,还请各位赐教)。以及分清楚什么是header,什么是details。以便在定义出力用了内表结构的时候,要把作为header的项目和details的项目分开,一遍在循环内表,输出的时候,能够方便的用at new 和 at end of这两个事件。
如果再深入一点,那就是其实list是有page这个"概念"的。可能是从小到大不用打印机,外加用管了office这个软件。所以第一次,在abap里面用TOP-OF-PAGE的时候,我楞是没看出换页了,以为自己哪里出了错。在这里,要请和我一样刚刚接触abap的初学者们了解的一点的是,at new page事件是每页都触发。end of page是只有在定义了页脚,且输出行数超过一页的行数时,只触发满页的页,最后一页往往是不会触发的。如果要硬性除发,其实这在很多情况下都会发生。可以用RESERVE x lines 这语句,其中x最好是你定义page 的行数。
这里说到了两个事件。其实要想想,abap关于list方面的初级知识,有点技术含量我想也只有要理清各个事件的关系了。如果要了解各个事件之间的关系。我建议还是去看sap的标准教程。因为人家说的那可是图文并茂。并不像我这样干巴巴的。
最后,就是list的分类。分为basic list 和detail list的区别。Basic list是最先出来的一张list。这张list由于是最先出来的,所以abap给予其很多关照,给了其很多事件,可以说几乎贯穿了整个出力过程。而detail list就可怜的多,十几个list共用着AT LINE-SELECTION,TOP-OF-PAGE DURING LINE-SELECTION(不知道拼对了没有。)。而靠着SY-LSIND来区分着彼此。
好了,这就是我在看了bc405之后,对于各个list之间的想法,搞规矩,希望各位前辈们能指出我之中错误和不足的地方。谢谢大家。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14927513/viewspace-442239/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14927513/viewspace-442239/