Текущее время: Вт, июл 01 2025, 00:50

Часовой пояс: 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
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Нет такого ограничения для 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
Сообщения: 4871
Откуда: Москва
Пол: Мужской
По производительности в 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
Сообщения: 180
Вообще говорят, что 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
Сообщения: 180
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 часа


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

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


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

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