Текущее время: Вт, июл 22 2025, 09:58

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Есть ли какой-нибудь способ убыстрить выборку из bseg
СообщениеДобавлено: Пт, окт 26 2012, 11:07 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, июл 12 2007, 12:18
Сообщения: 430
Есть ли какой-нибудь способ убыстрить выборку из bseg.
По алгоритму по каждой записи довольно большой таблицы идет обращение к bse, если сказать,что медленно,то ничего не сказать


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли какой-нибудь способ убыстрить выборку из bseg
СообщениеДобавлено: Пт, окт 26 2012, 11:12 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, май 12 2008, 09:07
Сообщения: 334
Откуда: Tbilisi, GE
Пол: Мужской
Возможность пересмотреть алгоритм?
Обращаться не к BSEG, а к BSIS, BSIK, BSID[, BSAS, BSAK, BSAD]

Либо, обращаться с максимальным ключом, либо обращаться не часто?!

При такой формулировке проблемы это, пожалуй, все возможные советы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли какой-нибудь способ убыстрить выборку из bseg
СообщениеДобавлено: Пт, окт 26 2012, 11:13 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
gasjuk написал(а):
по каждой записи довольно большой таблицы идет обращение к bse

вот это настораживает
код приведите


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли какой-нибудь способ убыстрить выборку из bseg
СообщениеДобавлено: Пт, окт 26 2012, 11:31 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, июл 12 2007, 12:18
Сообщения: 430
Вот код программы:
loop at strukt_detal where debet ne 'Z9999999' and zzclsacc ne 'Z9999999'. " OR DEBET NE 'Z9999999'.
call function 'ZFI_GET_SRC4CO' здесь иет обращение к bseg
exporting
bukrs = b_edin
belnr = strukt_detal-refbn
gjahr = z_data(4)
orgvg = strukt_detal-orgvg
kstar = strukt_detal-kstar
awtyp = strukt_detal-awtyp
importing
mwskz = bseg-mwskz
xref3 = bseg-xref3.
call function 'TH_REDISPATCH'.
if bseg-mwskz is initial and strukt_detal-intreno(2) = 'IM'.
select single * from bseg where intreno = strukt_detal-intreno and bukrs = b_edin and gjahr = z_data(4).
endif.

if bseg-xref3 is initial and strukt_detal-gkont(1) = 'Z' and strukt_detal-intreno(2) = 'IM'.


select r~partner b~mc_name1
* INTO bseg-xref3

into (bseg-xref3,lfa1-name1)
from
vibdro as a inner join vibdobjass as c
on a~objnr = c~objnrtrg
inner join vicncn as v
on v~objnr = c~objnrsrc

inner join vibpobjrel as r on v~intreno = r~intreno

inner join but000 as b on r~partner eq b~partner

where
a~intreno = strukt_detal-intreno
and v~recnbeg le strukt_detal-budat
and v~recnendabs ge strukt_detal-budat
and r~role in ('TR0600','TR0602').
endselect.


endif.

clear: kod, lv_objtype.
if strukt_detal-objtype = 'IB' or
strukt_detal-objtype = 'IG' or
strukt_detal-objtype = 'IM'.
concatenate strukt_detal-objtype strukt_detal-objnr into lv_objnr.
select single imkey from vicaintreno
into kod
where objnr = lv_objnr.

strukt_detal-objnr = ''.
endif.
write:pole,'|', strukt_detal-objtype, ' |',
* WRITE: strukt_detal-imkey, '|', strukt_detal-objtype, '|',
*================================
bseg-xref3(10), '|', lfa1-name1, '|', strukt_detal-bldat, '|', strukt_detal-budat, '|'.


newsum = newsum + strukt_detal-wkgbtr.
hide: strukt_detal-gsber,strukt_detal-wkgbtr.
clear: bseg, skat, lfa1.
clear pole.
код функции: где идет оращение к ВSEG
DATA: gbelnr TYPE belnr_d
, awkey TYPE awkey
, aworg TYPE aworg
.
CLEAR: aufnr, mwskz, ktext.
IF awtyp EQ 'AMBU' AND orgvg EQ 'RFBU'.
CONCATENATE belnr bukrs gjahr INTO awkey.
SELECT SINGLE belnr INTO gbelnr FROM bkpf WHERE
awtyp EQ awtyp AND awkey EQ awkey.
IF sy-subrc EQ 0.
SELECT SINGLE aufnr mwskz xref3
FROM bseg INTO (aufnr, mwskz, xref3)
WHERE belnr = gbelnr
AND bukrs = bukrs
AND gjahr = gjahr
AND hkont = kstar.
endif.
elseif awtyp EQ 'REACI'.
select SINGLE aworg into aworg from cobk where refbn = belnr and blart = 'SA' and refbk = bukrs and gjahr = gjahr.
concatenate belnr aworg into awkey.
SELECT SINGLE belnr INTO gbelnr FROM bkpf
WHERE awtyp EQ 'REACI' AND awkey EQ awkey.
IF sy-subrc EQ 0.
SELECT SINGLE aufnr mwskz xref3
FROM bseg INTO (aufnr, mwskz, xref3)
WHERE belnr = gbelnr
AND bukrs = bukrs
AND gjahr = gjahr
AND hkont = kstar.
endif.


ELSEif awtyp ne 'REACI' and awtyp ne 'AMBU' .
CASE orgvg.
WHEN 'RMRP'.
CONCATENATE belnr gjahr INTO awkey.
SELECT SINGLE belnr INTO gbelnr FROM bkpf WHERE
awtyp EQ 'RMRP' AND awkey EQ awkey.
IF sy-subrc EQ 0.
SELECT SINGLE aufnr mwskz xref3
FROM bseg INTO (aufnr, mwskz, xref3)
WHERE belnr = gbelnr
AND bukrs = bukrs
AND gjahr = gjahr
AND hkont = kstar
.
ENDIF.
WHEN 'SD00'.
SELECT SINGLE belnr INTO gbelnr FROM bkpf WHERE
awtyp EQ 'VBRK' AND awkey EQ belnr.
IF sy-subrc EQ 0.
SELECT SINGLE aufnr mwskz xref3
FROM bseg INTO (aufnr, mwskz, xref3)
WHERE belnr = gbelnr
AND bukrs = bukrs
AND gjahr = gjahr
AND hkont = kstar
.
ENDIF.
WHEN OTHERS.
SELECT SINGLE aufnr mwskz xref3
FROM bseg INTO (aufnr, mwskz, xref3)
WHERE belnr = belnr
AND bukrs = bukrs
AND gjahr = gjahr
AND hkont = kstar
.

ENDCASE.
ENDIF.
IF NOT aufnr IS INITIAL.
SELECT SINGLE ktext FROM aufk INTO ktext WHERE aufnr = aufnr.
ENDIF.

ENDFUNCTION.
modify strukt_detal.
endloop.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли какой-нибудь способ убыстрить выборку из bseg
СообщениеДобавлено: Пт, окт 26 2012, 11:41 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
а что в ФМ ZFI_GET_SRC4CO? SELECT FROM bseg? переделать фм, передавать всю таблицу strukt_detal и использовать SELECT FOR ALL ENTRIES или WHERE IN например
вобщем избавиться от конструкции
LOOP
SELECT
ENDLOOP


Последний раз редактировалось MantiCore1977 Пт, окт 26 2012, 13:06, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли какой-нибудь способ убыстрить выборку из bseg
СообщениеДобавлено: Пт, окт 26 2012, 11:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Переделай выборку из BSEG на выборку из BSIS/BSAS.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли какой-нибудь способ убыстрить выборку из bseg
СообщениеДобавлено: Пт, окт 26 2012, 12:09 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, июл 12 2007, 12:18
Сообщения: 430
Обращеие SELECT FOR ALL ENTRIES проблематично,т.к сначала анализируется даніе BKPF и по разому идет обращение к bseg.Изменит ли что-енибудь если вмеcто loop написать do while и read table?
Насчет Bsis,bsas.Это как сначала сделать выборку из Bsis,а потом из bsas?Думаете это будет быстрее?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли какой-нибудь способ убыстрить выборку из bseg
СообщениеДобавлено: Пт, окт 26 2012, 13:15 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
gasjuk написал(а):
Обращеие SELECT FOR ALL ENTRIES проблематично,т.к сначала анализируется даніе BKPF и по разому идет обращение к bseg.Изменит ли что-енибудь если вмеcто loop написать do while и read table?
Насчет Bsis,bsas.Это как сначала сделать выборку из Bsis,а потом из bsas?Думаете это будет быстрее?

Да. Если HKONT жестко задан и не будет меняться, можно посмотреть настройки этих счетов в транзакции fs03.
Если галочка "Управление ОП" выключена, то достаточно будет выборки из BSIS.
Изображение

_________________
С уважением,
Удав.


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

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


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

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


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

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