Текущее время: Пн, июл 28 2025, 23:12

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: BSEG
СообщениеДобавлено: Чт, июл 12 2007, 14:47 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
Господа!
Как можно ускорить выполнение такого запроса?

SELECT * FROM bseg
INTO CORRESPONDING FIELDS OF TABLE i_bseg_aufk
FOR ALL ENTRIES IN i_aufk
WHERE bukrs = p_bukrs
AND gjahr = p_gjahr
AND aufnr = i_aufk-aufnr
AND gvtyp = '08'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BSEG
СообщениеДобавлено: Чт, июл 12 2007, 14:57 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 09 2007, 15:40
Сообщения: 56
Откуда: Поволжье
_gary_ написал(а):
Господа!
Как можно ускорить выполнение такого запроса?

SELECT * FROM bseg
INTO CORRESPONDING FIELDS OF TABLE i_bseg_aufk
FOR ALL ENTRIES IN i_aufk
WHERE bukrs = p_bukrs
AND gjahr = p_gjahr
AND aufnr = i_aufk-aufnr
AND gvtyp = '08'.



А что за задачка стоит? какие именно данные нужно выбрать?

На вервый взгляд сузить выборку диапазоном номеров или же попытаться посмотреть таблицы вторичных индексов

_________________
Важно качество, а не количество. Ибо стремясь за количесвом можно серьезно пожертвовать качеством ... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 12 2007, 15:20 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
вот часть задачи.

"При корреспонденции с «08» техническим перерасчетным счетом через таблицы PRPS, COBRB, AUF… необходимо определить с какого проекта и сетевого графика происходит расчет на данную карточку НКС. Потом по всем затратным счетам «08» счета с этим сетевым графиком или СПП нужно будет также определить корреспонденцию счетов..."


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 12 2007, 15:30 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 09 2007, 15:40
Сообщения: 56
Откуда: Поволжье
_gary_ написал(а):
вот часть задачи.

"При корреспонденции с «08» техническим перерасчетным счетом через таблицы PRPS, COBRB, AUF… необходимо определить с какого проекта и сетевого графика происходит расчет на данную карточку НКС. Потом по всем затратным счетам «08» счета с этим сетевым графиком или СПП нужно будет также определить корреспонденцию счетов..."


Мало конечно что понял, но стоит к консультантам обратиться. Кореспонденцию счетов через bseg искать гиблое дело. Посмотреть что за счета и могут помочь BSIK, BSAK, BSAS, BSIS, BSID, BSAD..
http://sapboard.ru/forum/viewtopic.php?t=27299 - может что-то здесь поможет... :arrow:

_________________
Важно качество, а не количество. Ибо стремясь за количесвом можно серьезно пожертвовать качеством ... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 12 2007, 15:39 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
а как с условием быть AND gvtyp = '08'.
такого поля во вторичных нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 12 2007, 16:01 
Специалист
Специалист

Зарегистрирован:
Пт, апр 13 2007, 17:15
Сообщения: 225
_gary_ написал(а):
а как с условием быть AND gvtyp = '08'.
такого поля во вторичных нет.


Посмотрите значение поля BKPF-AWTYP для таких документов, если оно не 'BKPF', то повезло, оцените сколько таких документов за год бывает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BSEG
СообщениеДобавлено: Пт, июл 13 2007, 08:44 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
_gary_ написал(а):
Господа!
Как можно ускорить выполнение такого запроса?

SELECT * FROM bseg
INTO CORRESPONDING FIELDS OF TABLE i_bseg_aufk
FOR ALL ENTRIES IN i_aufk
WHERE bukrs = p_bukrs
AND gjahr = p_gjahr
AND aufnr = i_aufk-aufnr
AND gvtyp = '08'.


не использовать INTO CORRESPONDING FIELDS OF TABLE, а использовать INTO TABLE. Хотя это вобще общая рекомендация :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BSEG
СообщениеДобавлено: Пт, июл 13 2007, 10:15 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Art386 написал:
_gary_ написал(а):
Господа!
Как можно ускорить выполнение такого запроса?

SELECT * FROM bseg
INTO CORRESPONDING FIELDS OF TABLE i_bseg_aufk
FOR ALL ENTRIES IN i_aufk
WHERE bukrs = p_bukrs
AND gjahr = p_gjahr
AND aufnr = i_aufk-aufnr
AND gvtyp = '08'.


не использовать INTO CORRESPONDING FIELDS OF TABLE, а использовать INTO TABLE. Хотя это вобще общая рекомендация :)


Это не поможет. Такой запрос к bseg неприемлем. Вариантов несколько: 1) заменять на выборку из bsis-bsas и т.д. 2) создавать свой спецрегистр, куда будут валиться все финансовые документы и выбирать из него и 3) (в качестве идеи) а нет ли нужных данных в coep (в данном случае)?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: BSEG
СообщениеДобавлено: Пт, июл 13 2007, 11:01 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
profiteer написал(а):
Это не поможет. Такой запрос к bseg неприемлем. Вариантов несколько: 1) заменять на выборку из bsis-bsas и т.д. 2) создавать свой спецрегистр, куда будут валиться все финансовые документы и выбирать из него и 3) (в качестве идеи) а нет ли нужных данных в coep (в данном случае)?

Вариант 2 - таки да, из bseg куда шустрее выборка происходит, если кроме БЕ ей номер документа подсунуть.
Вариант 3 - тоже может подойти (зависит от задачи). Я некоторое время назад чем-то подобным занимался, данные расчётов тянул из covp.


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

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
SELECT * FROM bseg
INTO CORRESPONDING FIELDS OF TABLE i_bseg_aufk
FOR ALL ENTRIES IN i_aufk
WHERE bukrs = p_bukrs
AND gjahr = p_gjahr
AND aufnr = i_aufk-aufnr
AND gvtyp = '08'.

оказалось что нужно вместо aufnr = i_aufk-aufnr
должно быть nplnr = i_aufk-aufnr
а поля nplnr в bsis/bsas нету.


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

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
_gary_ написал(а):
SELECT * FROM bseg
INTO CORRESPONDING FIELDS OF TABLE i_bseg_aufk
FOR ALL ENTRIES IN i_aufk
WHERE bukrs = p_bukrs
AND gjahr = p_gjahr
AND aufnr = i_aufk-aufnr
AND gvtyp = '08'.

оказалось что нужно вместо aufnr = i_aufk-aufnr
должно быть nplnr = i_aufk-aufnr
а поля nplnr в bsis/bsas нету.


Этот очень плохой запрос, т.к. видно что это будет практически full scan таблицы bseg (за исключением года и БЕ). Через короткое время количетсво данных вырастет и запрос станет нереально тормозить.

Скорее всего те же самые данные (бабло) есть в таблице coep. Кроме, может быть, поля gvtyp - это надо будет обыграть как-то.

Запрос к coep, кстати, будет выглядеть почти так же как и исходный запрос:

SELECT * FROM coep
INTO CORRESPONDING FIELDS OF TABLE i_bseg_aufk
FOR ALL ENTRIES IN i_aufk
WHERE bukrs = p_bukrs
AND gjahr = p_gjahr
AND objnr = i_aufk-aufnr.
"AND gvtyp = '08'. " с gvtyp надо подумать.

Не помню точно, поле bukrs так же называется в coep'e или как-то по другому, но оно там точно есть.


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

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
на gvtyp можно через ska1 выйти если там выбрать все счета с gvtyp = '08'.
а вот с COEP сейчас проверю


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

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
проверил
в COEP записей нет
а в bseg есть


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

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
сделал так:
выбрал записи из aufk которые надо в i_aufk
затем
SELECT * FROM coep INTO TABLE i_coep
FOR ALL ENTRIES IN i_aufk
WHERE kokrs = p_bukrs
AND objnr = i_aufk-objnr
AND gjahr = p_gjahr.

SELECT * FROM cobk
INTO CORRESPONDING FIELDS OF TABLE i_cobk
FOR ALL ENTRIES IN i_coep
WHERE kokrs = p_bukrs
AND belnr = i_coep-belnr
AND gjahr = p_gjahr.

LOOP AT i_cobk ASSIGNING <i_cobk>.
CONCATENATE <i_cobk>-refbn <i_cobk>-aworg
INTO <i_cobk>-bkpf_awkey.
ENDLOOP.

SELECT * FROM bkpf INTO TABLE i_bkpf
FOR ALL ENTRIES IN i_cobk
WHERE bukrs = p_bukrs
AND gjahr = p_gjahr
AND awtyp = i_cobk-awtyp
AND awkey = i_cobk-bkpf_awkey.

получил то что надо :)


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

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Рекомендую выборку из AUFK, COEP и COBK объединить (join) в один select. По возможности не использовать FOR ALL ENTRIES, и вообще внутренние таблицы.


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

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


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

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


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

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