Posted: Wed Feb 04, 2009 9:17 pm Post subject: очередной вопрос про select'Ы
Доброго времени суток!
Мучаюсь вторые сутки
Пожалуйста, помогите с правильным выбором select'ов
(под * подписала то, что хотелось бы сделать ... )
Code:
type-pools: slis.
tables: ekko, ekpo.
data:
begin of tab,
ebelp like ekpo-ebelp,
matnr like ekpo-matnr,
werks like ekpo-werks,
netpr like ekpo-netpr,
menge like ekpo-menge,
netwr like ekpo-netwr,
mblnr like mseg-mblnr,
ebeln like mseg-ebeln,
end of tab,
begin of tab_bedat occurs 0,
bedat like ekko-bedat,
end of tab_bedat,
begin of tab_mblnr occurs 0,
mblnr like mseg-mblnr,
mjahr like mseg-mjahr,
ebeln like mseg-ebeln,
smbln like mseg-smbln,
end of tab_mblnr.
data: tab_1 like tab occurs 0 with header line.
data: it_fieldcat type slis_fieldcat_alv occurs 0 with header line,
gs_header type slis_listheader,
gt_header type slis_t_listheader.
selection-screen begin of block bl1 with frame.
parameters: s_ebeln like mseg-ebeln.
select-options: s_bedat for ekko-bedat.
selection-screen end of block bl1.
start-of-selection.
* позиции по ekpo
select ebelp matnr werks netwr menge netpr
into corresponding fields of table tab_1
from ekpo.
* для вывода номера документа мат-ла по номеру заказа
* (очень сомневаюсь, что правильно)
select distinct mblnr
from mseg
into table tab_mblnr
where ebeln eq s_ebeln
and mseg~smbln eq space.
loop at tab_mblnr.
* проверка на сторно
select single smbln into tab_mblnr-mblnr " номер документа мат
from mseg
where sjahr eq tab_mblnr-mjahr " год документа мат
and smbln eq tab_mblnr-mblnr.
* код возврата
if sy-subrc eq 0.
delete tab_mblnr
where mblnr eq tab_mblnr-mblnr
and mjahr eq tab_mblnr-mjahr.
clear tab_mblnr.
continue.
endif.
move-corresponding tab_mblnr to tab_1.
endloop.
* попытка присобачить дату из ekko
loop at tab_bedat.
select single bedat
into tab_bedat
from ekko.
move-corresponding tab_bedat to tab_1.
endloop.
select mblnr
from mseg
into table tab_mblnr
where ebeln eq s_ebeln.
select * into corresponding fields of table tab_1
from mseg
inner join ekpo
on ekpo~matnr eq mseg~matnr
inner join ekko
on ekko~ebeln eq mseg~ebeln
where mseg~smbln = space.
loop at tab_mblnr.
* проверка на сторно
select single smbln into tab_mblnr-mblnr " номер документа мат
from mseg
where sjahr eq tab_mblnr-mjahr " год документа мат
and smbln eq tab_mblnr-mblnr.
* код возврата
if sy-subrc eq 0.
delete tab_mblnr
where mblnr eq tab_mblnr-mblnr
and mjahr eq tab_mblnr-mjahr.
clear tab_mblnr.
continue.
endif.
move-corresponding tab_mblnr to tab_1.
endloop.
Age: 37 Joined: 18 Jan 2008 Posts: 71 Location: Tashkent-Astana-Moscow
Posted: Thu Feb 05, 2009 1:19 pm Post subject:
Quote:
с inner join долго правда,
вы еще удивляетесь ?
Code:
select * into corresponding fields of table tab_1
from mseg
inner join ekpo
on ekpo~matnr eq mseg~matnr
inner join ekko
on ekko~ebeln eq mseg~ebeln
where mseg~smbln = space.
Хм ... конструкция с двумя inner join'ами была найдена именно на этом форуме. В ином случае вывести данные из трех таблиц (не объединяя ни одну позицию) ... не получается.
Буду иметь ввиду, что при рабочих программах данная конструкция не допустима.
Но в данной ситуации для человека, который имеет дело с программой две недели - это прорыв, поскольку до этого с select'ом b loop/endloop ... выводились данные только из двух таблиц.
Собственно, написано сюда было ... с вопросом... как бы это было лучше сделать) ...
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.