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/ |