Sorted table
来源:互联网 发布:肌肉科技 知乎 编辑:程序博客网 时间:2024/06/03 20:50
Sorted tables
This is the most appropriate type if you need a table which is sorted as you fill it. You fill sorted tables using the INSERT statement. Entries are inserted according to the sort sequence defined through the table key. Any illegal entries are recognized as soon as you try to add them to the table. The response time for key access is logarithmically proportional to the number of table entries, since the system always uses a binary search. Sorted tables are particularly useful for partially sequential processing in a LOOP if you specify the beginning of the table key in the WHERE condition.
Using Sorted table and Index while processing Internal tables
There would have been many instances where we would have to process large entries in an internal table with a WHERE condition. This article is intended to demonstrate the comparison between three different methods in handling this situation.
First Method: The normal method used by most of us. Standard internal table processing using WHERE condition
Second Method: Same as above, but here we would be using the Sorted table
Third Method: Sorted table and using the Index
Following is the demo program illustrating the above three methods:
REPORT ZINTERNAL_TABLE_OPERATIONS.* Program to find the best method in reading the internal tables
Type declaration
TYPES:
BEGIN OF TY_MARA,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
END OF TY_MARA.* Internal table declaration
DATA:
T_MARA TYPE STANDARD TABLE OF TY_MARA,
T_MARA1 TYPE SORTED TABLE OF TY_MARA
WITH NON-UNIQUE KEY MATNR MTART.* Variable declaration
DATA:
W_COUNTER TYPE I,
W_RUNTIME1 TYPE I,
W_RUNTIME2 TYPE I,
W_TABIX LIKE SY-TABIX.* Table workarea definition
DATA:
WA_MARA TYPE TY_MARA.SELECT MATNR " Material Number
MTART " Material Type
FROM MARA
INTO TABLE T_MARA.T_MARA1[] = T_MARA[].* CASE 1: Processing internal table using LOOP..WHERE ConditionGET RUN TIME FIELD W_RUNTIME1.LOOP AT T_MARA INTO WA_MARA WHERE MTART EQ 'FHMI'.
ADD 1 TO W_COUNTER.
ENDLOOP.GET RUN TIME FIELD W_RUNTIME2.
Calculate Runtime
W_RUNTIME2 = W_RUNTIME2 - W_RUNTIME1.
WRITE W_RUNTIME2.CLEAR W_COUNTER.* CASE 2: Using a Sorted tableGET RUN TIME FIELD W_RUNTIME1.
LOOP AT T_MARA1 INTO WA_MARA WHERE MTART EQ 'FHMI'.
ADD 1 TO W_COUNTER.
ENDLOOP.GET RUN TIME FIELD W_RUNTIME2.
Calculate Runtime
W_RUNTIME2 = W_RUNTIME2 - W_RUNTIME1.
WRITE W_RUNTIME2.CLEAR W_COUNTER.* CASE 3: Using INDEX on a sorted tableGET RUN TIME FIELD W_RUNTIME1.
READ TABLE T_MARA1 INTO WA_MARA WITH KEY MTART = 'FHMI'.
IF SY-SUBRC EQ 0.
W_TABIX = SY-TABIX + 1.
ADD 1 TO W_COUNTER.
LOOP AT T_MARA1 INTO WA_MARA FROM W_TABIX.
IF WA_MARA-MTART NE 'FHMI'.
EXIT.
ENDIF.
ADD 1 TO W_COUNTER.
ENDLOOP.
ENDIF.
GET RUN TIME FIELD W_RUNTIME2.
Calculate Runtime
W_RUNTIME2 = W_RUNTIME2 - W_RUNTIME1.
WRITE W_RUNTIME2.Following is the analysis report in microseconds, as per the data volume:
Records: 21,390
Iteration No
Using Normal LOOP & WHERE
Using Sorted table LOOP & WHERE
Using INDEX on Sorted table
1
897
887
11
2
839
879
10
3
839
877
10
4
834
880
9
5
842
837
10
Records: 132,693
Iteration No
Using Normal LOOP & WHERE
Using Sorted table LOOP & WHERE
Using INDEX on Sorted table
1
34239
35774
3567
2
34271
38250
3592
3
34492
36534
3554
4
34198
35695
3584
Sorted table might have given a better performance here if the field in the WHERE condition is the first field in the internal table. However, from the above statistics, we can say that method 3 is better than the other 2 methods. In production environment, the data would be huge and the performance could be much improved with this simple technique.
- Sorted table
- Insert Data into Sorted Table
- Insert Data into Sorted Table
- ABAP Internal Table Performance for STANDARD, SORTED and HASHED Table
- sorted
- Sorted
- sorted
- sorted
- sorted
- sorted
- sorted( )
- sorted
- TABLE
- table
- table
- table
- Table
- table
- hdu3652 A-B number 数位DP
- 死锁详解
- 一.python多线程类型总结
- 解决Could not load file or assembly CefSharp.Core.dll的问题
- HDU 4324 Triangle LOVE(拓扑排序)
- Sorted table
- iscroll 移動端向上滑不動
- 如何利用AJAX进行文件的上传,并对上传内容进行限制,在项目中总会遇见这样的问题,下面就为大家举个栗子。 HTML代码 <form id="uploadForm" enctype="multipar
- 什么是过渡绘制,如何防止过渡绘制
- win10 Hyper-v 虚拟机监控程序灰色 尝试检索虚拟交换机列表时出错
- python2学习之如何将Unicode中文字符串显示出来
- Eclipse的Deployment Assembly (程序部署集)
- 每日英语阅读(一)
- Android Studio 取消热修复模式