Добрый день.
Уважаемые форумчане - я в полном замешательстве!
Передо мно стоит задача связать таблички VBAK и LIPS.
Пишу вот такой вот код:
Code:
tables: vbak, " таблица торговых документов - шапки,
vbap,
lips. " таблица документов сбыта: поставка
types:
begin of t_contract,
vbeln like vbak-vbeln, " № документа
vgbel like vbak-vgbel, " № подчиненного документа
erdat like vbak-erdat, " Дата документа
ernam like vbak-ernam, " Автор документа
end of t_contract,
begin of t_order,
vbeln like vbak-vbeln, " № документа
vgbel like vbak-vgbel, " № подчиненного документа
erdat like vbak-erdat, " Дата документа
ernam like vbak-ernam, " Автор документа
posnr like vbap-posnr, " Автор документа
end of t_order,
begin of t_delivery,
vbeln like lips-vbeln, " № документа
erdat like lips-erdat, " Дата документа
ernam like lips-ernam, " Автор документа
vgbel like lips-vgbel, " Автор документа
end of t_delivery.
data: gt_contract type standard table of t_contract,
gs_contract type t_contract.
data: gt_order type standard table of t_order,
gs_order type t_order.
data: gt_delivery type standard table of t_delivery,
gs_delivery type t_delivery.
select-options s_period for vbak-erdat obligatory.
initialization.
perform init_selection_screen.
start-of-selection.
perform get_data_from_database.
form get_data_from_database .
select
vbak~vbeln
vbak~vgbel
vbak~erdat
vbak~ernam
into table gt_contract
from vbak
where vbak~erdat between s_period-low and s_period-high
and vbak~vbtyp eq 'G'.
select
vbak~vbeln
vbak~vgbel
vbak~erdat
vbak~ernam
vbap~posnr
into table gt_order
from vbak
left outer join vbap on vbap~vgbel = vbak~vgbel
for all entries in gt_contract
where vbak~vgbel = gt_contract-vbeln
and vbak~vbtyp eq 'C'.
select
lips~vbeln
lips~erdat
lips~ernam
lips~vgbel
into table gt_delivery
from lips
for all entries in gt_order
where lips~vgbel = gt_order-vbeln
and lips~posnr = gt_order-posnr.
endform. " GET_DATA_FROM_DATABASE
проблема в том что 3 запрос даже за период 10 дней - не выполняется!
первые два запроса по таблице VBAK выполняются.
Но вот 3-ий запрос висит и вывливается с превышением времени выполнения.
О гуру! Подскажите как оптимизировать эти запросы чтобы они выполнялись!
отчет формируется при условии что период - 1 день. и то формируется около 3-ех минут.
Code:
select
vbak~vbeln
vbak~vgbel
vbak~erdat
vbak~ernam
into table gt_contract
from vbak
where vbak~erdat between s_period-low and s_period-high
and vbak~vbtyp eq 'G'.
после выполнения этого запроса получаю список из 10 контрактов.
Code:
select
vbak~vbeln
vbak~vgbel
vbak~erdat
vbak~ernam
vbap~posnr
into table gt_order
from vbak
left outer join vbap on vbap~vgbel = vbak~vgbel
for all entries in gt_contract
where vbak~vgbel = gt_contract-vbeln
and vbak~vbtyp eq 'C'.
После этого запроса получаю список заказов на основании контрактов -около 30
Code:
select
lips~vbeln
lips~erdat
lips~ernam
lips~vgbel
into table gt_delivery
from lips
for all entries in gt_order
where lips~vgbel = gt_order-vbeln
and lips~posnr = gt_order-posnr.
На основании документов закав(30 документов) - пытаюсь получить подчиненные поставки из LIPS- вот здесь вот все и вист.
Подскажите где, что не правильно делаю