以前在论坛上读到一篇文章,内容是关于ABAP开发的。里面说中国的ABAPER急于转型,没做多久开发就想去做模块,去做业务顾问,然而并没有多少人真的愿意去做好开发。
我原来很不理解他为什么这么说,因为做顾问并没什么不好。
不过最近做开发的时候,感觉他说的的确有一定的道理。因为我就是正在准备转型做业务的,可是发现自己的开发水平远没有自己认为地那么好。在过程中,发现了许多基础的问题其实自己并没有深入的理解,所以趁现在有时间总结一下。[@more@]先从FORM说起。这个很常用了,在使用它的时候会用到
1. ... TABLES itab1 ... itabn
2. ... USING [VALUE(p1)| p1] ... [VALUE(pn) |pn]
3. ... CHANGING [VALUE(p1)| p1] ... [VALUE(pn) |pn]
它们之间有什么区别呢,一个一个来看一下。
TABLES在有些时候根据状况可以用USING或者CHANGING来代替。但是有一点一旦使用TABLES,那参数的TABLE TYPE只能是STANDARD TABLE。被指定的内部表,通常都是代表头行一起传递的。如果该内部表没有表头行,则会自动生成。生成的表头行只能在FORM内部使用。对于表头行,全局命令(HIDE等等)是不能使用的。关于TABLES参数的指定数据类型,我目前知道的是利用STRUCTURE来声明。
关于USING和CHANGING大家比较常用,需要注意的是参数的传递方法,以USING为例:
USING p1
参数在FORM内是可以变更的,在FORM结束后值被保存。
USING VALUE(p1)
使用VALUE()这个属性,只进行值传递。
刚才说到TABLE TYPE,顺便在总结一下:
1. STANDARD TABLE
2. SORTED TABLE
3. HASHED TABLE
4. INDEX TABLE
5. ANY TABLE
以上是命令DATA或者TYPES用到的参照表类型。关系图:
ANY TABLE
|
---------------------
| |
INDEX TABLE HASHED TABLE
|
---------------------
| |
STANDARD TABLE SORTED TABLE
关于具体每种表的特点,大家可以进一步研究一下。
下一个就是分析一下DATA和TYPES的区别。
通常大家会用到TYPES进行构造的定义,而用DATA进行内部表和工作区的定义。TYPES还可以进行内部表数据型的定义。下面有个例子:
TYPES: BEGIN OF STRUC,
NAME(10) TYPE C,
AGE TYPE I,
END OF STRUC.
TYPES: TAB1 TYPE STANDARD TABLE OF STRUC WITH DEFAULT KEY,
TAB2 TYPE SORTED TABLE OF STRUC
WITH NON-UNIQUE KEY NAME,
TAB3 TYPE HASHED TABLE OF STRUC WITH UNIQUE KEY NAME.
DATA: TAB4 TAB1 TYPE STANDARD TABLE OF STRUC.
其中TAB1,TAB2,TAB3可以用来声明FORM的表参数类型,当然是使用USING,功能类似TABLES。但是TAB4就不能作为表参数类型,这也是TYPES和DATA的一个区别。
例子里面涉及到了UNIQUE和NON-UNIQUE,这个属性是限定表主键允许有重复值的。
对于STANDARD TABLE,默认设定是NON-UNIQUE,不能设定UNIQUE。
对于SORTED TABLE,与STANDARD TABLE不同,是没有默认设定的。如果没有设定而使用,那么FORM的表参数将与参照的表类型一致。
对于HASHED TABLE,虽没有默认设定,但是UNIQUE是必要的。不能设定NON-UNIQUE。
再一个是TAB和TAB[]的区别。
咨询了一下,两者的区别是根据TAB是否是有表头的表来区分的。如果定义的内部表有表头,那么TAB就代表表头行,而TAB[]就是整个表体的意思。就知道这么多了。
这些可能真的比较细微,可能大家都比较了解了,只是总结一下加深印象。
还有要说的就是细节问题了,这次在写式样书的时候,一直感觉这方面做得不好。有些很明显的要注意的地方都忽视了,可能大体上结果没什么问题,可是程序是很有精确要求的,所以会造成这样那样的问题。所以以后一定要仔细,多考虑些必要的东西。最后的就是测试了,因为只有通过全面的测试才能确保代码的准确性,尽量降低错误的发生。总之需要提高的还很多,希望大家一起探讨,共同进步。来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/547380/viewspace-1001500/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/547380/viewspace-1001500/