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

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


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

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


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

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