Увеличивать целое число - PullRequest
6 голосов
/ 02 июня 2010

Иногда ABAP сводит меня с ума по таким простым задачам, как увеличение целого числа внутри цикла ...

Вот моя попытка:

METHOD test.

  DATA lv_id TYPE integer.

  lv_id = 1.

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

ENDMETHOD.

Это приводит к сообщению об ошибке Тип поля "I" не разрешает доступ к подполю.

Ответы [ 5 ]

21 голосов
/ 02 июня 2010

Вы уже ответили на вопрос самостоятельно, но, чтобы прояснить ситуацию немного:

variable + 1 

является арифметическим выражением - добавьте 1 к значению переменной.

variable+1

- операция смещения над символьной переменной. Например, если переменная содержит ABC, variable+1 равно BC.

Это может быть особенно запутанным при работе с NUMC. Например, с variable = '4711', variable + 1 оценивается как 4712, тогда как variable+1 равно '711' (последовательность символов).

Ошибка, которую вы увидели, произошла из-за невозможности выполнить операцию индексации над не символьной переменной.

15 голосов
/ 02 июня 2010

Вы имеете в виду, как:

ADD 1 to lv_id.

Кстати, когда вы перебираете внутреннюю таблицу, SY-TABIX имеет счетчик циклов.

6 голосов
/ 02 июня 2010

Э-э, я понял. Это е ****** пробелы ...

lv_id = lv_id + 1

работает ...

1 голос
/ 22 апреля 2016

Simple

ДАННЫЕ: gv_inc тип I.

поместите это утверждение в цикл

gv_inc = gv_inc + 1.

0 голосов
/ 17 июля 2017

Если вы собираетесь увеличивать каждый цикл цикла, вы можете напрямую получить размер таблицы.

describe table x lines data(lv_id). "Out side of the loop.
...