COLLECT
Basic form
COLLECT [wa INTO] itab.
Addition
... SORTED BY f
Effect
COLLECT is used to create unique or compressed
datsets. The key fields are the default key fields
of the internal table itab .
If you use only COLLECT to fill an internal table,
COLLECT makes sure that the internal table does not contain two
entries with the same default key fields.
If, besides its default key fields, the internal table contains number
fields (see also ABAP/4 number
types ), the contents of these number fields are added together if
the internal table already contains an entry with the same key fields.
If the default key of an internal table processed with COLLECT
is blank, all the values are added up in the first table line.
If you specify wa INTO , the entry to be processed is taken from
the explicitly specified work area wa . If not, it comes from the
header line of the internal table itab .
After COLLECT , the system field SY-TABIX contains the
index of the - existing or new - table entry with default key fields
which match those of the entry to be processed.
Notes
COLLECT can create unique or compressed datasets
and should be used precisely for this purpose. If uniqueness or
compression are unimportant, or two values with identical default key
field values could not possibly occur in your particular task, you
should use APPEND instead. However,
for a unique or compressed dataset which is also efficient,
COLLECT is the statement to use.
If you process a table with COLLECT , you should also use
COLLECT to fill it. Only by doing this can you guarantee that
-
the internal table will actually be unique or compressed, as
described above and
-
COLLECT will run very efficiently.
If you use COLLECT with an explicitly specified work area, it
must be compatible with the line type of the internal table.
Example
Compressed sales figures for each company
-
DATA: BEGIN OF COMPANIES OCCURS 10,
NAME(20),
SALES TYPE I,
END OF COMPANIES.
COMPANIES-NAME = 'Duck'. COMPANIES-SALES = 10.
COLLECT COMPANIES.
COMPANIES-NAME = 'Tiger'. COMPANIES-SALES = 20.
COLLECT COMPANIES.
COMPANIES-NAME = 'Duck'. COMPANIES-SALES = 30.
COLLECT COMPANIES.
The table COMPANIES now has the following appearance:
Addition
... SORTED BY f
Effect
COLLECT ... SORTED BY f is obsolete and should no
longer be used. Use APPEND ... SORTED BY f
which has the same meaning.
Note
Performance
The cost of a COLLECT in terms of performance increases with
the width of the default key needed in the search for table entries and
the number of numeric fields with values which have to be added up, if
an entry is found in the internal table to match the default key
fields.
If no such entry is found, the cost is reduced to that required to
append a new entry to the end of the table.
A COLLECT statement used on a table which is 100 bytes wide and
has a key which is 60 bytes wide and seven numeric fields is about
approx. 50 msn (standardized
microseconds).
Note
Runtime errors
-
COLLECT_OVERFLOW : Overflow in integer field when calculating
totals.
-
COLLECT_OVERFLOW_TYPE_P : Overflow in type P field when
calculating totals.
Related
APPEND ,
WRITE ... TO ,
MODIFY ,
INSERT
Index
© SAP AG 1996