0% found this document useful (0 votes)
638 views

ABAP Internal Table Performance For STANDARD, SORTED and HASHED Table

The document compares the performance of different internal table types in ABAP including standard, sorted, and hashed tables. It shares the results of a program that tested the read performance of each table type using different sized data sets. Standard tables were the slowest while hashed tables provided the best performance. A poll of ABAP developers found that standard tables remain the most commonly used table type despite having performance drawbacks when not used properly.

Uploaded by

EmilS
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
638 views

ABAP Internal Table Performance For STANDARD, SORTED and HASHED Table

The document compares the performance of different internal table types in ABAP including standard, sorted, and hashed tables. It shares the results of a program that tested the read performance of each table type using different sized data sets. Standard tables were the slowest while hashed tables provided the best performance. A poll of ABAP developers found that standard tables remain the most commonly used table type despite having performance drawbacks when not used properly.

Uploaded by

EmilS
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

ABAP Internal Table Performance

for STANDARD, SORTED and


HASHED Table
Standard Table is the most widely used table Type. It has performance drawbacks if not
used properly.

Few months ago, I asked a question:

Your Preferred table kind for your ITAB


Total of 236 people has voted for the Poll.

Demo Program on ITAB Performance


Before we jump into the poll result, check out the small program and its performance result.
Here Im comparing the Performance of the READ on Internal tables Standard VS Sorted
VS Hashed VS Standard using BINARY.
Performance Comparison - ITAB TYPES
*&---------------------------------------------------------------------*
*& Purpose : Performance Comparison between READ on various TYPEs of
*&
internal tables
*& Author : Naimesh Patel
*& URL
: http://zevolving.com/?p=1861
*&---------------------------------------------------------------------*
REPORT ZTEST_NP_TABLE_TYPE_PERF.
*
TYPES:
BEGIN OF ty_vbpa,
vbeln TYPE vbpa-vbeln,
posnr TYPE vbpa-posnr,
parvw TYPE vbpa-parvw,
kunnr TYPE vbpa-kunnr,
END OF ty_vbpa.
DATA: t_std
TYPE STANDARD TABLE OF ty_vbpa.
DATA: t_sorted TYPE SORTED TABLE OF ty_vbpa WITH UNIQUE KEY vbeln.
DATA: t_hashed TYPE HASHED TABLE OF ty_vbpa WITH UNIQUE KEY vbeln.
TYPES:
BEGIN OF ty_vbak,

vbeln TYPE vbak-vbeln,


found TYPE flag,
END
OF ty_vbak.
DATA: t_vbak TYPE STANDARD TABLE OF ty_vbak.
DATA: lt_vbak TYPE STANDARD TABLE OF ty_vbak.
FIELD-SYMBOLS: <lfs_vbak> LIKE LINE OF t_vbak.
DATA: lv_flag TYPE flag,
lv_sta_time TYPE timestampl,
lv_end_time TYPE timestampl,
lv_diff
TYPE p DECIMALS 5.
DATA: lv_num_main TYPE i,
lv_num_sub TYPE i.
START-OF-SELECTION.
lv_num_main = 50000.
lv_num_sub = lv_num_main / 2.
*
SELECT vbeln
FROM vbak
INTO TABLE t_vbak
UP TO lv_num_main ROWS.
*
SELECT vbeln posnr parvw kunnr
INTO TABLE t_std
FROM vbpa
UP TO lv_num_sub ROWS
FOR ALL ENTRIES IN t_vbak
WHERE vbeln = t_vbak-vbeln
AND
parvw = 'AG'.

" Change for different number of records

* Copying into the Sorted and Hashed table


t_sorted = t_std.
t_hashed = t_std.
*---* READ on Standard Table
GET TIME STAMP FIELD lv_sta_time.
LOOP AT t_vbak ASSIGNING <lfs_vbak>.
READ TABLE t_std TRANSPORTING NO FIELDS
WITH KEY vbeln = <lfs_vbak>-vbeln.
IF sy-subrc EQ 0.
"..
ENDIF.
ENDLOOP.
GET TIME STAMP FIELD lv_end_time.
lv_diff = lv_end_time - lv_sta_time.
WRITE: /(30) 'Standard Table', lv_diff.
*
*---* READ on Standard table with Binary Search
GET TIME STAMP FIELD lv_sta_time.
SORT t_std BY vbeln.
LOOP AT t_vbak ASSIGNING <lfs_vbak>.
READ TABLE t_std TRANSPORTING NO FIELDS
WITH KEY vbeln = <lfs_vbak>-vbeln
BINARY SEARCH.

IF sy-subrc EQ 0.
"..
ENDIF.
ENDLOOP.
GET TIME STAMP FIELD lv_end_time.
lv_diff = lv_end_time - lv_sta_time.
WRITE: /(30) 'Standard Table - Binary', lv_diff.
*
*---* READ on Sorted Table
GET TIME STAMP FIELD lv_sta_time.
LOOP AT t_vbak ASSIGNING <lfs_vbak>.
READ TABLE t_sorted TRANSPORTING NO FIELDS
WITH KEY vbeln = <lfs_vbak>-vbeln.
IF sy-subrc EQ 0.
"..
ENDIF.
ENDLOOP.
GET TIME STAMP FIELD lv_end_time.
lv_diff = lv_end_time - lv_sta_time.
WRITE: /(30) 'Sorted Table', lv_diff.
*
*---* READ on HASHED table
GET TIME STAMP FIELD lv_sta_time.
LOOP AT t_vbak ASSIGNING <lfs_vbak>.
READ TABLE t_hashed TRANSPORTING NO FIELDS
WITH TABLE KEY vbeln = <lfs_vbak>-vbeln.
IF sy-subrc EQ 0.
"..
ENDIF.
ENDLOOP.
GET TIME STAMP FIELD lv_end_time.
lv_diff = lv_end_time - lv_sta_time.
WRITE: /(30) 'Hashed Table', lv_diff.

I ran the program multiple times for different set of records. Here are the average values
based on the performance readings:

And on Graph

Yet on another graph, where Standard table readings are considered at benchmark of 100. I
used average value for all other ITAB Types to show the tentative performance gain when
Using another ITAB Type other than Standard Type.

Now lets see the Poll Result


Most of the participants choose the Standard Table Type by far Standard Table is the
preferred table type.

As per the above program results & graph, you should carefully decide when to use which
Table Type.

You might also like