刚刚接触abap才3个月。而abap里面,最先引起我注意的就是内表。因为发觉它真的很神奇。
在abap里面是没有数组的概念。所以来说,内表给我的第一印象就是一个abap里面的准数组。但是其有“麻烦”的地方。
首先,一定要需要一个结构,当然你可以直接的用把其定义成一个对象。比方说一个表中的一个字段。但是我个人还是习惯把其看成是一个结构,只是在这一个结构中只有一个字段。看起来比想象数组而已。
其次,每个内表都要带个拖油瓶,不是工作区就是field-symbol。尽管来说用field-symbol从本质上来讲也是对内表的直接操作。但是对于吹毛求疵的我来说,那些多余的代码在我看来也是一个拖油瓶。
当然除了麻烦之外,还有很多方便的地方。比方说给其在运用的地方做了很多方便的“接口”。使其几乎所有abap的数据对象都能极其方便的往内表面里面塞。这里有几乎是因为我不知道abap里面的数据对象有多少,但是我碰到的都能往里面塞。除了这些之外,还配备了诸如sort,read等方式对其内部进行准操作。
之所以说内表是表,而不是数组。是因为其有index和key的概念,而正是这概念,使得内表分为了三类。
第一类是标准表,也是所有内表中最接近数组的一种表。对于内表来说,用index定位要比key来的快,这适用于标准表。但是我没有发现,除此之外,通过系统自带的手段来提升标准表处理的速度。也许这看起来是个软肋,但是这也提供了其最宽松的处理条件。你可以任意的对其进行insert,delete和modify等操作。而这是其他表所不具备的。
第二类是排序表。在这里index依然是最快的定位方式。但是对于一张内表中的key项来说,如果依靠其进行定位会比非key值快很多。因为在定位数据的时候,对key值进行的二分法查找。当然此时,你无法直接的对key值进行操作,并且通过index来修改受到了极大的限制。
第三类,hash表。如果想要了解什么是hash表,找本数据结构的书看看吧。里面讲的比我清楚。看过之后,你同时也会明白,基于index的定位,在hash里面基本没有什么意义,也就是无效。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14927513/viewspace-429475/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14927513/viewspace-429475/