SAPфорум.RU
https://www.sapboard.ru/forum/

Loop и reference
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=100239
Страница 1 из 1

Автор:  Aleqs [ Пт, ноя 25 2022, 17:25 ]
Заголовок сообщения:  Loop и reference

Обнаружил такую фишку:
Есть внутренняя таблица, пусть будет itab, в её структуре несколько простых полей и внутренняя же таблица, допустим vtab.
Далее такой простой код
Code:
Loop at itab reference into data(lr_itab).
внутри идёт вызов некоего метода некоего класса со ссылкой на внутр.таблицу из lr_tab
  call method zclass->zmethod ( exporting param1 = ref #( lr_tab->vtab ) ).
внутри этого метода над таблицей производятся какие-то действия, в том числе удаление одной записи.
И в результате после выхода из этого метода получаю:
в исходной таблице itab-vtab[] - допустим, 30 записей,
а в таблице, которая по ссылке lr_tab->vtab[] - 29 записей.
Я правильно понимаю, что вообще-то такого не должно быть: lr_tab - это ссылка на запись таблицы itab,
их содержимое должно полностью совпадать? Или как?
EndLoop.

Автор:  Удав [ Вс, ноя 27 2022, 13:52 ]
Заголовок сообщения:  Re: Loop и reference

Как-то сложно вы все делаете. Не пытайтесь везде совать ссылки, используйте родные возможности ABAP и правильную передачу параметров.
100% рабочий вариант:
Code:
field-symbols: <ls_itab> like line of itab.
Loop at itab assigning <ls_itab>.
  call method zclass->zmethod ( changing it_tab = <ls-tab>-vtab[] ).
Endloop.

class zclass definition.
  public:
    methods zmethod changing !it_tab type ...
endclass.

class zclass implementation.
  method zmethod.
    data: ls_tab like line of it_tab.

    loop at it_tab into ls_tab.
      ...
    endloop.
  endmethod.
endclass.

Автор:  Aleqs [ Пн, ноя 28 2022, 07:55 ]
Заголовок сообщения:  Re: Loop и reference

Удав написал(а):
Как-то сложно вы все делаете. Не пытайтесь везде совать ссылки, используйте родные возможности ABAP и правильную передачу параметров.

Я бы так и сделал. Но код не мой, достался по наследству. Переделывать страшновато.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/