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

Часовой пояс: 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 часа


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

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


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

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