ABAP内表类型,有3大类:1 标准 2 排序 3 hash
1. 标准
这种是经常使用的类型,查找,修改都频繁的内表,就使用该类型
2.排序
如果经常需要查找内表的记录,但是不确定是否记录有唯一主键时使用
3.Hash
如果经常需要查找内表的记录,但是确定是否记录有唯一主键时使用
对一般开发abap人员来说,只要会使用第一种类型的内表即可(+binary search),就可以完成大部分工作。但对于BW的转换来说,就需要这3种类型非常熟悉.
1 针对有大数据量的查找操作:Hash > sort ==标准(+binary search)>标准
2 有大量修改内表记录的操作:标准 > Sort /Hash (不确定sort和hash的性能)
对BW TR来说,Sort /Hash太有用了。
- 基本很少修改内表数据,就是一次取数,为后续读取
- 多层嵌套循环性能问题
第二索引
内表也有第二索引的key,这个功能在对一个内表有多种查询方式的时候,特别有用。不用再去复制一个内表然后排序。
https://blog.csdn.net/weixin_42646630/article/details/113919809
**********************************************************************
* secondary key for internal table
**********************************************************************
DATA: ls_sflight TYPE sflight,
lt_sflight_hsh TYPE HASHED TABLE OF sflight WITH UNIQUE KEY carrid connid fldate
WITH NON-UNIQUE SORTED KEY sec_key COMPONENTS carrid planetype.
SELECT * FROM sflight INTO TABLE lt_sflight_hsh
UP TO 100 ROWS
WHERE carrid = 'AA' OR carrid = 'LH'.
* Access data via 'primary table key' - Hash search
READ TABLE lt_sflight_hsh INTO ls_sflight
WITH TABLE KEY carrid = 'AA'
connid = '017'
fldate = '20171226'.
* Access data via normal key - linear searchxian
READ TABLE lt_sflight_hsh INTO ls_sflight
WITH KEY carrid = 'AA'
planetype = 'A380-800'.
* Access data via secondary key - binary search
READ TABLE lt_sflight_hsh INTO ls_sflight
WITH TABLE KEY sec_key
COMPONENTS carrid = 'AA'
planetype = 'A380-800'.
建议bw 顾问去了解下这些功能,是解决性能问题非常好用的技能,而且代码也会变的简洁清晰。