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

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


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

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


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

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