Increment an integer

Ben picture Ben · Jun 2, 2010 · Viewed 28k times · Source

Sometimes ABAP drives me crazy with really simple tasks such as incrementing an integer within a loop...

Here's my try:

METHOD test.

  DATA lv_id TYPE integer.

  lv_id = 1.

  LOOP AT x ASSIGNING <y>.
    lv_id = lv_id+1.
  ENDLOOP.

ENDMETHOD.

This results in the error message Field type "I" does not permit subfield access.

Answer

vwegert picture vwegert · Jun 2, 2010

You already answered the question yourself, but to make things a bit clearer:

variable + 1 

is an arithmetic expression - add 1 to the value of the variable.

variable+1

is an offset operation on a character variable. For example, if variable contains ABC, variable+1 is BC.

This can be especially confusing when dealing with NUMCs. For example, with variable = '4711', variable + 1 is evaluated to 4712, whereas variable+1 is '711' (a character sequence).

The error you saw occurred because it's not possible to perform the index operation on a non-character-like variable.