Текущее время: Вс, авг 03 2025, 03:23

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


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


ВНИМАНИЕ!

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



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

Зарегистрирован:
Вс, ноя 12 2006, 23:53
Сообщения: 40
Откуда: Moscow
SY-UNAME, LARS
Вот что показали полевые испытания : потенциально опасные ситуации появляются только при попытке удаления строк, на которые есть ссылки. В остальных случаях: сортировка, вставка, удаление вновь добавляемых строк, ничего криминального нету.


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Long написал(а):
SY-UNAME, LARS
Вот что показали полевые испытания : потенциально опасные ситуации появляются только при попытке удаления строк, на которые есть ссылки. В остальных случаях: сортировка, вставка, удаление вновь добавляемых строк, ничего криминального нету.


Ну это то как раз проверяется: if <you_ref> is bound. - то все в порядке :)


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

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Что-то мне подсказывает, что то, что пытается сделать Long уже реализовано в ABAP и называется SORTED table.
То есть есть стандартая таблица, имеющая плоскую структуру, то есть все строки лежат последовательно в одном куске памяти. На эту стандартную таблицу навешивается SORTED table, хранящая указатели на строки стандартной таблицы. При сортироке двигаются только указатели.
Господа, велосипед изобретаете. ;-)
Пойду проверять, если мое предположение верно, то объем памяти под SORTED table должне быть больше объема под стандартную таблицу.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 03 2007, 17:01 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Lars написал:
Мне кажется, все не так мрачно :)
...
Хотя, безусловно подводные камни есть и преодалевать их придется.

Да, вполне возможно что я погорячился. Во всяком случае фрагмент
Code:
FORM test_table.
  DATA: l_ref TYPE REF TO data.
  FIELD-SYMBOLS: <lfs> TYPE ANY.
  SORT lt_t1 BY f2.
  LOOP AT lt_t1 ASSIGNING <lfs>.
    IF l_ref IS INITIAL.
      GET REFERENCE OF <lfs> INTO l_ref.
    ENDIF.
  ENDLOOP.

  UNASSIGN <lfs>.
  SORT lt_t1 BY f2 DESCENDING. " сорти
  INSERT INITIAL LINE INTO lt_t1 INDEX 1.
  ASSIGN l_ref->* TO <lfs>.
  IF sy-subrc EQ 0. WRITE: / 'Ok'. ELSE. WRITE: / 'Error Ref'. ENDIF.
ENDFORM.
отработал без проблем ('Ok'). Но из практики вспоминается, что на какие-то проблемы я налетал.

_________________
"После" - не значит "вследствие"


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
:) Тоже накатал.

Code:
data: begin of tabr occurs 0,
          num type i,
        end of tabr.

do 5 times.
tabr-num = sy-index.
append tabr.
enddo.

data: begin of drefs occurs 0,
         dref type ref to data,
        end of drefs.

field-symbols: <fs> like line of tabr.

loop at tabr assigning <fs>.
clear:  drefs.
  GET REFERENCE OF <fs> INTO drefs-dref.
   append drefs.
endloop.

sort tabr by num descending.
delete tabr index 2.

loop at drefs.
if drefs-dref is not bound.
  break-point.
endif.
endloop.


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

Зарегистрирован:
Вс, ноя 12 2006, 23:53
Сообщения: 40
Откуда: Moscow
vga написал(а):
Что-то мне подсказывает, что то, что пытается сделать Long уже реализовано в ABAP и называется SORTED table.
То есть есть стандартая таблица, имеющая плоскую структуру, то есть все строки лежат последовательно в одном куске памяти. На эту стандартную таблицу навешивается SORTED table, хранящая указатели на строки стандартной таблицы. При сортироке двигаются только указатели.
Господа, велосипед изобретаете. ;-)
Пойду проверять, если мое предположение верно, то объем памяти под SORTED table должне быть больше объема под стандартную таблицу.

Очень интересны результаты ваших опытов :). Поделитесь?


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

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Делюсь. ;-) Мои предположения не подтвердились.
Стандартная таблица и SORTED таблица занимают одинаковый объем памяти. HASHED таблица занимает места меньше, примерно на 3%.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 05 2007, 09:34 
Ассистент
Ассистент

Зарегистрирован:
Вс, ноя 12 2006, 23:53
Сообщения: 40
Откуда: Moscow
vga написал(а):
Делюсь. ;-) Мои предположения не подтвердились.
Стандартная таблица и SORTED таблица занимают одинаковый объем памяти. HASHED таблица занимает места меньше, примерно на 3%.

Насколько я понял по HELP , ВТ расширяются по 8к, эта цифра конечно варируюется от стратегии выделения памяти. Поэтому может объемы выделенной под STANDART и SORTED различаются, но увидеть это можно только когда их размер приближается к выделяемому Экстенту?

Я только, что задал вопрос на sdn.sap.com по поводу того, в каком виде ВТ размещаются в памяти. Почему-то мне кажется, что они похожи на стандартные контейнеры STL.


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

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Long написал(а):
Почему-то мне кажется, что они похожи на стандартные контейнеры STL.


Если учитывать только известный факт, что операции вставки и удаления медленные, добавление в конец быстрое и возможен быстрый поиск по индексу, можно предположить, что внутренняя таблица устроена по типу STL VECTOR.


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

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


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

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


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

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