SUMMING

Short Reference

Syntax

SUMMING dobj.

Effect

For every WRITE statement that after executing the SUMMING/> statement (which is forbidden in classes) writes the content of data object dobj onto a list of any list level, implicitly the total of all values of dobj output with WRITE since the execution of SUMMING is determined and assigned to a data object SUM_dobj.

The SUMMING statement declares the global data object SUM_dobj with the same type as dobj. For dobj, you can specify numeric data objects. You are allowed to execute the SUMMING statement only once in a program. It may be located within a procedure, but the delared data object SUM_dobj is not local.

If the content of dobj in a WRITE statement after execution of the SUMMING statement cannot be interpreted as a number or the addition results in an overflow, then an untreatable exception occurs.

Example

Implicit determination of minimum, maximum and total of a list of flight distances.

PARAMETERS p_carrid TYPE spfli-carrid.
DATA spfli_wa TYPE spfli.
MINIMUM spfli_wa-distance.
MAXIMUM spfli_wa-distance.
SUMMING spfli_wa-distance.
SELECT carrid connid distance
       FROM spfli
       INTO CORRESPONDING FIELDS OF spfli_wa
       WHERE carrid = p_carrid.
  WRITE: / spfli_wa-carrid, spfli_wa-connid,
           spfli_wa-distance.
ENDSELECT.
ULINE.
WRITE: min_spfli_wa-distance,
       max_spfli_wa-distance,
       sum_spfli_wa-distance.

Without using the implicit statements MINIMUM, MAXIMUM and SUMMING, you can get the same result using explicitly calculated help fields.

PARAMETERS p_carrid TYPE spfli-carrid.
DATA: spfli_wa TYPE spfli,
      min_distance TYPE spfli-distance VALUE +99999,
      max_distance TYPE spfli-distance VALUE -99999,
      sum_distance TYPE spfli-distance.
SELECT carrid connid distance
       FROM spfli
       INTO CORRESPONDING FIELDS OF spfli_wa
       WHERE carrid = p_carrid.
  WRITE: / spfli_wa-carrid, spfli_wa-connid,
           spfli_wa-distance.
  IF spfli_wa-distance < min_distance.
    min_distance = spfli_wa-distance.
  ENDIF.
  IF spfli_wa-distance > max_distance.
    max_distance = spfli_wa-distance.
  ENDIF.
  sum_distance = sum_distance + spfli_wa-distance.
ENDSELECT.
ULINE.
WRITE: min_distance,
       max_distance,
       sum_distance.