Иногда ABAP сводит меня с ума с действительно простыми задачами, такими как постепенное увеличение целого числа в цикле...
Вот моя попытка:
METHOD test.
DATA lv_id TYPE integer.
lv_id = 1.
LOOP AT x ASSIGNING <y>.
lv_id = lv_id+1.
ENDLOOP.
ENDMETHOD.
Это приводит к сообщению об ошибке Тип поля "I", не разрешает доступ подполя.
Вы имеете в виду:
ADD 1 to lv_id.
Между прочим, когда вы выполняете цикл по внутренней таблице, SY-TABIX имеет счетчик цикла.
Я понял. Это чертовы пробелы ...
lv_id = lv_id + 1
работает ...
Вы уже сами ответили на вопрос, но для большей ясности:
variable + 1
- это арифметическое выражение - добавьте 1 к значению переменной.
variable+1
- это операция смещения символьной переменной. Например, если переменная содержит ABC
, переменная + 1
будет BC
.
Это может сбивать с толку при работе с NUMC. Например, если переменная = '4711'
, переменная + 1
оценивается как 4712
, тогда как переменная + 1
равна «711»
(последовательность символов).
Ошибка, которую вы видели, возникла из-за того, что невозможно выполнить операцию индексирования для не символьной переменной.