Текущее время: Вт, июл 29 2025, 10:55

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Проход по динамически созданной таблице
СообщениеДобавлено: Ср, июн 20 2007, 16:22 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, ноя 06 2006, 20:01
Сообщения: 29
Кто подскажет - как наиболее быстрым способом пробежаться по строкам динамически созданной таблицы по _условию_?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проход по динамически созданной таблице
СообщениеДобавлено: Ср, июн 20 2007, 20:49 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
ZauzolkovVN написал(а):
Кто подскажет - как наиболее быстрым способом пробежаться по строкам динамически созданной таблицы по _условию_?


а каким способом создаёте её динамически?

насколько понимаю, минимизировать количество просматриваемых записей можно только для сортированных или хэш таблиц (если не рассматривать создание собственного индекса, например, в виде дополнительной хэш таблицы)

_________________
Счастье есть!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проход по динамически созданной таблице
СообщениеДобавлено: Чт, июн 21 2007, 09:46 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
ZauzolkovVN написал(а):
Кто подскажет - как наиболее быстрым способом пробежаться по строкам динамически созданной таблицы по _условию_?


assign


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проход по динамически созданной таблице
СообщениеДобавлено: Чт, июн 21 2007, 14:21 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, ноя 06 2006, 20:01
Сообщения: 29
Tetty написал:
а каким способом создаёте её динамически?
насколько понимаю, минимизировать количество просматриваемых записей можно только для сортированных или хэш таблиц (если не рассматривать создание собственного индекса, например, в виде дополнительной хэш таблицы)


DATA: MR_TABLE_TYPE Type Ref To CL_ABAP_TABLEDESCR,
MR_TABLE Type Ref To DATA.
...
CREATE DATA mr_table TYPE HANDLE mr_table_type.
...

Далее мне нужен условный цикл по записям.
LOOP динамически задавать выражение WHERE не позволяет :?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проход по динамически созданной таблице
СообщениеДобавлено: Чт, июн 21 2007, 15:51 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
ZauzolkovVN,
вариант с check на ограничения внутри loop не устраивает?

_________________
Счастье есть!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проход по динамически созданной таблице
СообщениеДобавлено: Чт, июн 21 2007, 20:07 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 02 2005, 20:19
Сообщения: 133
Откуда: Moscow
Tetty написал:
ZauzolkovVN,
вариант с check на ограничения внутри loop не устраивает?


Tetty, это обудут чень разные вещи в плане производительности ...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 10:09 
Специалист
Специалист

Зарегистрирован:
Вт, авг 17 2004, 08:47
Сообщения: 222
Пол: Мужской
Я <я не знать русский языка> делать чеки в нутри лупа по динамитчески созданной таблице. В общем все очень долго работает если много записей.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 10:51 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
попробуй связку while и read


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 10:57 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
а если генерировать пул подпрограмм, динамически формируя исходный код, там в подпрограмме выполнить проход с нужным условием по таблице и вернуть результаты работы в вызывающую программу?

типа

Code:
GENERATE SUBROUTINE POOL it_source NAME prog_name.

PERFORM someform IN PROGRAM (prog_name) CHANGING ...


только при этом описание таблицы будет в этом пуле и заполнение тоже.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 11:26 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Думаю, вам надо написать собственный алгоритм сортировки и добавления записи в нужную позицию в динамически созданную таблицу.
Далее, собственным же алгоритмом - быстрый поиск, например методом пузырька. Хотя может и read table с бинарным поиском по ключу пойдет. Нужно ваш код посмотреть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 11:47 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Любые, самые модные оптимальные алгоритмы на ABAP работают очень медленно (пробовал однажды реализовать поиск подстроки методом Кнута-Морриса-Пратта). Лучше пользовать стандартные, пусть не очень оптимальные средства.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 11:52 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
ИМХО, задача сводится в реализации хоть какой-нибудь сортировки, если стандартые средства нельзя использовать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 11:57 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
sibrin написал:
Любые, самые модные оптимальные алгоритмы на ABAP работают очень медленно (пробовал однажды реализовать поиск подстроки методом Кнута-Морриса-Пратта). Лучше пользовать стандартные, пусть не очень оптимальные средства.


Есть один ньюанс, стандартные реализованы как выполнимые модули на C, а Вы пишите интерпретируемый код на ABAP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 12:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
vga написал(а):
Есть один ньюанс, стандартные реализованы как выполнимые модули на C, а Вы пишите интерпретируемый код на ABAP.

Именно это я и имел в виду: поледовательное побайтное сравнение на C быстрее любого алгоритма сравнения на ABAP.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 14:58 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
sibrin написал:
Но я так понял, что обсуждается вопрос "как наиболее быстрым способом пробежаться по строкам динамически созданной таблицы по _условию_?".


Если бы мы решали задачки из учебника математики, то наверно требовался четкий ответ на условие задачи. Но как правило ищется решение реальной проблемы, поэтому ответ может не лежать в рамках начальных условий и автор будет только рад, если узнает что-то новое, что не знал, когда задавал вопрос.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

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


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

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


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

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