Текущее время: Ср, апр 24 2024, 08:02

Часовой пояс: 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
Сообщения: 4842
Откуда: Москва
Пол: Мужской
На первый взгляд в коде нет проблем, которые могут привести к тому, что внутрь второго цикла управление не зайдет.
Разве что 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
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Добавлю, что мой вариант с оценкой O( n1 * log(n2) ) в советах по производительности называют "naive join" и предлагают более хитрый вариант с оценкой O( n1 + n2).
Но на практике O( n1 * log(n2) ) - это уже достаточно быстро в подавляющем большинстве случаев, а вот ваш вариант с O( n1 * n2 ) на двух табличках по 1 млн строк в каждой уйдет в бесконечность..

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


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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