Поле "str_mara" неизвестно, но есть поле с похожим названием "it_mara" - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу отобразить содержимое таблицы Mara.

types : begin of str_mara,
matnr type mara-matnr,
ernam type mara-ernam,
end of str_mara.

data it_mara type table of str_mara .
select matnr ernam from mara into TABLE it_mara .

loop at it_mara into str_mara.
write:/ str_mara-matnr , str_mara-ernam.
endloop.

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

Вы также можете использовать встроенное объявление для отображения содержимого таблицы mara с меньшим количеством строк кода ABAP.

SELECT matnr, ernam FROM mara INTO TABLE @DATA(lt_mara) .
LOOP AT lt_mara ASSIGNING FIELD-SYMBOL(<fs_mara>).
   WRITE: /, <fs_mara>-matnr, <fs_mara>-ernam.
ENDLOOP.
0 голосов
/ 19 декабря 2018

Тип - это просто статическое определение, память не выделяется, поэтому не может использоваться самостоятельно.

Вы можете создать переменную с этим типом или использовать встроенное объявление для создания такой переменной.

  • вариант 1: data ls_mara type str_mara.

  • вариант 2: loop at lt_mara into data(ls_mara).

Или перейтис ответом Умара:)

Кстати, обязательно проверьте, где вы находитесь в таблице доступа к маре.

0 голосов
/ 18 декабря 2018

Ну, нет переменной с именем str_mara.Существует просто тип с именем str_mara.

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

LOOP AT it_mara ASSIGNING FIELD-SYMBOL(<str_mara>).
   WRITE: /, <str_mara>-matnr, <str_mara>-ernam.
ENDLOOP.
...