Текущее время: Ср, июн 18 2025, 04:34

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Вопрос по вложенности Loop
СообщениеДобавлено: Ср, авг 12 2020, 11:38 
Начинающий
Начинающий

Зарегистрирован:
Вт, авг 11 2020, 16:03
Сообщения: 5
Добрый день. Имеется конструкция типа:

LOOP AT tablename1 INTO wa_name1.
LOOP AT tablename2 INTO wa_name2.

IF wa_name1-polename1 = wa_name2-polename2.
* Определенный набор операторов *
ENDIF.
ENDLOOP.
ENDLOOP.

Не выполняется код, находящийся в теле вложенного LOOP. Проверил в отладчике условие даже не проверятся, просто идет переход к концу первого LOOP. Где я ошибаюсь?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по вложенности Loop
СообщениеДобавлено: Ср, авг 12 2020, 13:38 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
На первый взгляд в коде нет проблем, которые могут привести к тому, что внутрь второго цикла управление не зайдет.
Разве что tablename2 пустая.
Возможно, в реальности у вас не совсем такой код, приведите лучше реальный кусок кода.

Ну и по производительности решение ужасающее (N^2).
Для быстрого доступа ко второй таблице надо ее сделать сортированной по polename и использовать одну из конструкций, попадающих в ключ:
1.read table tablename2 with table key polename =
2.loop at tablename2 where polename =

В общем, смотрите советы по производительности в SE30.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по вложенности Loop
СообщениеДобавлено: Ср, авг 12 2020, 13:50 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Добавлю, что мой вариант с оценкой O( n1 * log(n2) ) в советах по производительности называют "naive join" и предлагают более хитрый вариант с оценкой O( n1 + n2).
Но на практике O( n1 * log(n2) ) - это уже достаточно быстро в подавляющем большинстве случаев, а вот ваш вариант с O( n1 * n2 ) на двух табличках по 1 млн строк в каждой уйдет в бесконечность..

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot], Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB