ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Internal Tables → Processing Statements for Internal Tables → LOOP AT itab → LOOP AT itab - Basic Form → AT - Group Level Processing
SUM
Other versions: 7.31 | 7.40 | 7.54
Syntax
SUM.
Effect
The statement SUM can only be specified within a loop starting with
LOOP, and is only respected within a
AT-ENDAT control structure. Prerequisites for using the statement
SUM include using the addition INTO in the LOOP statement, and that the specified work area wa is
compatible with the row
type of the internal table. In addition, SUM cannot be used when the row type of the internal table itab contains components that are tables.
-
In a group level
AT NEW compiandAT END OF compi,SUMcalculates the sums of the numeric components to the right of the current group key for all rows of the current group level and assigns these to the corresponding components of the work areawa. In an elementary row type, there are no components to the right of the current group key and the work areawaremains unchanged. -
In the group levels
FIRST,LAST, and outside anAT-ENDATcontrol structure, for a structured row type the sum of all numeric components of all rows of the internal table is calculated and assigned to the corresponding components of the work areawa. For an elementary numeric row type,SUMsums the row values and assigns the sum towa. For non-numeric elementary row types,SUMhas no effect and the work areawakeeps its current value.
Note
When the AT control structure is exited, the content of the current table row is reassigned to the work area wa.
Example
Calculates a sum with SUM at AT END OF. The rows of the respective current group level are evaluated.
DATA:
BEGIN OF wa,
col1 TYPE i,
col2 TYPE i,
END OF wa,
itab LIKE TABLE OF wa WITH EMPTY KEY.
itab = VALUE #( FOR i = 1 UNTIL i > 5
FOR j = 1 UNTIL j > i
( col1 = i col2 = j ) ).
LOOP AT itab INTO wa.
AT END OF col1.
SUM.
cl_demo_output=>write( wa ).
ENDAT.
ENDLOOP.
cl_demo_output=>display( wa ).
Example
Calculates a sum with SUM at AT LAST. All rows of the internal table are evaluated.
DATA:
BEGIN OF wa,
col TYPE i,
END OF wa,
itab LIKE TABLE OF wa WITH EMPTY KEY.
itab = VALUE #( FOR i = 1 UNTIL i > 10 ( col = i ) ).
LOOP AT itab INTO wa.
AT LAST.
SUM.
cl_demo_output=>display( wa ).
ENDAT.
ENDLOOP.
Executable Example
Group Level Processing with Totals
Exceptions
Handleable Exceptions
CX_SY_ARITHMETIC_OVERFLOW
-
Cause: Overflow when calculating totals
Runtime error:ADDF_INT_OVERFLOW -
Cause: Value too large when calculating totals in internal table, field too small
Runtime error:SUM_OVERFLOW
Non-Handleable Exceptions
-
Cause: The statement
SUMwas used outside aLOOPprocessing of an internal table.
Runtime error:SUM_NO_INTERNAL_TABLE -
Cause: The statement
SUMwas used within aLOOPprocessing belonging to another ABAP program.
Runtime error:SUM_ON_FOREIGN_INTERNAL_TABLE -
Cause: The statement
SUMwas used within a loop starting withLOOP ... ASSIGNING.
Runtime error:SUM_NO_ASSIGNING