Текущее время: Пт, апр 19 2024, 05:03

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: FOR ALL ENTRIES vs RANGE
СообщениеДобавлено: Ср, сен 14 2016, 16:40 
Ассистент
Ассистент

Зарегистрирован:
Вт, сен 13 2016, 20:18
Сообщения: 49
Здравствуйте,
есть таблица:
Code:
DATA: BEGIN OF gt_pers_data OCCURS 0,
         pernr TYPE persno,
         fio LIKE p0001-ename,
""  Другие поля, штук 5.
   END OF gt_pers.


Надо по этой таблице сделать выборку селектом из БД.
Первый вариант так:
Code:
CHECK gt_pers[] IS NOT INITIAL.
SELECT * INTO TABLE gt_itab FROM zmy_table FOR AL ENTRIES IN gt_pers_data
                       WHERE pernr = gt_data-pernr .


Второй вариант:
собрать RANGE для поля pernr по таблице gt_data и использовать оператор WHERE pernr IN r_pernrs.

Столкнулся с ограничением, что если в рендже очень много строк, то SELECT не проходит, у FOR ALL ENTRIES есть такое ограничение?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES vs RANGE
СообщениеДобавлено: Ср, сен 14 2016, 16:54 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Нет такого ограничения для FOR ALL ENTRIES, он бьет запрос на много маленьких и потом на уровне сервера приложений склеивает результаты

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES vs RANGE
СообщениеДобавлено: Ср, сен 14 2016, 17:23 
Ассистент
Ассистент

Зарегистрирован:
Вт, сен 13 2016, 20:18
Сообщения: 49
Спасибо, а по производительности, примерно одинакого будет?

Через FOR AL ENTRIES мне больше нравится,
не надо лишний одноразовый RANGE заводить


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES vs RANGE  Тема решена
СообщениеДобавлено: Ср, сен 14 2016, 17:30 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
По производительности в FAE при помощи хинта можно регулировать, сколько значений он объединит в одном запросе через OR.
Если вместо значения на сервере по умолчанию (5) ставить скажем 100, мне кажется никакой разницы не будет.
Только не забываем, что FAE неявно применяет distinct к выбранным значениям.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES vs RANGE
СообщениеДобавлено: Ср, сен 14 2016, 22:21 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
LKU написал:
По производительности в FAE при помощи хинта можно регулировать, сколько значений он объединит в одном запросе через OR.
Если вместо значения на сервере по умолчанию (5) ставить скажем 100, мне кажется никакой разницы не будет.
Только не забываем, что FAE неявно применяет distinct к выбранным значениям.


плюс как-то очень плохо FAE работает при выборке из join.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES vs RANGE
СообщениеДобавлено: Чт, сен 15 2016, 05:48 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 179
Вообще говорят, что FAE стараются сделать устаревшим: http://scn.sap.com/message/16853223#16853223.
Это, конечно, нереально, но двигаются в эту сторону.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES vs RANGE
СообщениеДобавлено: Чт, сен 15 2016, 10:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
UKY написал(а):
Вообще говорят, что FAE стараются сделать устаревшим: http://scn.sap.com/message/16853223#16853223.
Это, конечно, нереально, но двигаются в эту сторону.

Судя по нововведениям, вполне реально, другое дело, что далеко не у всех новые версии SAP_BASIS.
Code:
REPORT demo_select_where_tab_exp.

CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-DATA carriers TYPE HASHED TABLE OF scarr
                  WITH UNIQUE KEY carrid
                  WITH NON-UNIQUE SORTED KEY name COMPONENTS carrname.
    CLASS-METHODS:
      class_constructor,
      main.
ENDCLASS.

CLASS demo IMPLEMENTATION.
  METHOD main.
    DATA name TYPE scarr-carrname VALUE 'United Airlines'.
    cl_demo_input=>request( CHANGING field = name ).

    SELECT carrid, connid, cityfrom, cityto
           FROM spfli
           WHERE carrid =
             @( VALUE spfli-carrid( carriers[ KEY name
                                              carrname = name ]-carrid
                                              OPTIONAL ) )
           INTO TABLE @DATA(result).

    cl_demo_output=>display( result ).
  ENDMETHOD.
  METHOD class_constructor.
    SELECT *
           FROM scarr
           INTO TABLE carriers.
  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.
  demo=>main( ).

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES vs RANGE
СообщениеДобавлено: Чт, сен 15 2016, 10:47 
Ассистент
Ассистент

Зарегистрирован:
Вт, сен 13 2016, 20:18
Сообщения: 49
Ух. я уж на пенсию выйду когда у нас введут такие печеньки, и тем более FAE объявят устаревшим(


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES vs RANGE
СообщениеДобавлено: Чт, сен 15 2016, 23:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
в 740 SP08 для HANA появился неявный протокол Fast Data Access для быстрой передачи внутр. таблиц,
и вряд ли FAE куда-то денется


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: FOR ALL ENTRIES vs RANGE
СообщениеДобавлено: Вт, сен 20 2016, 12:40 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 179
Parazit написал:
Судя по нововведениям, вполне реально, другое дело, что далеко не у всех новые версии SAP_BASIS.
SELECT carrid, connid, cityfrom, cityto
FROM spfli
WHERE carrid =
@( VALUE spfli-carrid
( carriers[ KEY name
carrname = name ]-carrid
OPTIONAL ) )
INTO TABLE @DATA(result).
[/code]

Здесь просто выборка по 1 фильтрующему значению, а не по нескольким значениям одновременно, так что тут не замена FAE :)
А если можно будет подставлять несколько значений с сервера приложений, то это тот же FAE и получится - всё так и будет перегоняться с сервера приложений в СУБД.

P.S.: Сам жду с нетерпением, когда у нас ABAP 7.5 поставят :)


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

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


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

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


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

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