What is the difference between 'extract' and 'collect'
statements?
Once you have declared the possible record types as field
groups and defined their structure, you can fill the extract dataset using
the following statements:
EXTRACT <fg>.
When the first EXTRACT statement occurs in a program,
the system creates the extract dataset and adds the first extract record
to it. In each subsequent EXTRACT statement, the new extract record is
added to the dataset.
Each extract record contains exactly those fields that
are contained in the field group <fg>, plus the fields of the field
group HEADER (if one exists). The fields from HEADER occur as a sort key
at the beginning of the record. If you do not explicitly specify a field
group <fg>, the EXTRACT statement is a shortened form of the statement
extracts used in field groups (version 2.x - obsolete these days as noone
uses field groups anymore), and collect is used to accumulate the contents
of a field if X no. of keys are the same.
EXTRACT HEADER.
When you extract the data, the record is filled with the
current values of the corresponding fields. As soon as the system
has processed the first EXTRACT statement for a field group <fg>, the
structure of the corresponding extract record in the extract dataset is
fixed. You can no longer insert new fields into the field groups <fg>
and HEADER. If you try to modify one of the field groups afterwards and
use it in another EXTRACT statement, a runtime error occurs.
By processing EXTRACT statements several times using different
field groups, you fill the extract dataset with records of different length
and structure. Since you can modify field groups dynamically up to their
first usage in an EXTRACT statement, extract datasets provide the advantage
that you need not determine the structure at the beginning of the program.
Collect:
When the line is inserted, the system checks whether there
is already a table entry that matches the key. If there is no corresponding
entry already in the table, the COLLECT statement has the same effect as
inserting the new line. If an entry with the same key already exists, the
COLLECT statement does not append a new line, but adds the contents of
the numeric fields in the work area to the contents of the numeric fields
in the existing entry.
You should only use the COLLECT statement if you want
to create summarized tables. If you use other statements to insert table
entries, you may end up with duplicate entries.
Serkan AKKAVAK
Computer Engineer
ABAP Developer & SAP MM SD Consultant
Contact : serkurumsal@yandex.com
Social Plugin