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

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


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

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


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

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