Code: Alles auswählen.
select lgort umlgo matnr meins menge mblnr mjahr werks umwrk
bwart
into (itab1-vo_ort, itab1-na_ort, itab1-matnr, itab1-meins,
itab1-menge, itab1-mblnr, itab1-mjahr, itab1-out_werk,
itab1-in_werk, tmp_bwart)
from mseg
where mjahr in mjahr_tab
and parent_id = space "übergeordneten Zeile
and kzbew = ' ' "Bewegungskennzeichen
and lgort <> space " von Lagerort
and umlgo <> space "nach Lagerort
and bwart in (200, 300, 302)
and werks in s_vowerk
and umwrk in s_nawerk
and matnr in s_matnr
and mblnr in s_mblnr
and lgort in s_vo_ort
and umlgo in s_na_ort.
* Datum
select single budat into (tmp_budat) from mkpf
where mblnr = itab1-mblnr
and mjahr = itab1-mjahr
and budat in s_datum.
if sy-subrc = 0.
concatenate tmp_budat+4(2) tmp_budat(4)
into itab1-monat separated by '.'.
else.
continue.
endif.
* Materialgruppe
if s_kondm is initial.
select single kondm into (itab1-kondm)
from mvke
where matnr = itab1-matnr
and vkorg = '0003'
and vtweg = '31'.
else.
select single kondm into (itab1-kondm)
from mvke
where matnr = itab1-matnr
and kondm in s_kondm
and vkorg = '0003'
and vtweg = '31'.
if sy-subrc <> 0.
continue.
endif.
endif.
collect itab1.
endselect.
Code: Alles auswählen.
select ... from mseg into table gt_mseg where ...
Code: Alles auswählen.
data: tmp_mseg type table of mseg,
tmp_budat type mkpf-budat,
tmp_monat type char7.
field-symbols <tmp_mseg> like line of tmp_mseg.
select *
into table tmp_mseg
from mseg
where mjahr in mjahr_tab
and parent_id = space "übergeordneten Zeile
and lgort <> space "von Lagerort
and bwart in (301, 303, 305, 311, 313, 315, 101)
and matnr in s_matnr
and mblnr in s_mblnr.
loop at tmp_mseg assigning <tmp_mseg>.
*BEDINGUNGEN
* Datum
select single budat into (tmp_budat) from mkpf
where mblnr = <tmp_mseg>-mblnr
and mjahr = <tmp_mseg>-mjahr
and budat in s_datum.
if sy-subrc <> 0. continue. endif.
* Bewegungsart
* Es wird geschaut um welche Bewegungsart es sich handelt, da
* der sich die von/nach-Lagerorte (Werk auch) abweichen.
* z.B '101' nachlagerort = lgort
* '311' nachlagerort = umwrk
if <tmp_mseg>-bwart = '101'.
check <tmp_mseg>-werks in s_nawerk
and <tmp_mseg>-lgort in s_na_ort.
else.
check <tmp_mseg>-werks in s_vowerk
and <tmp_mseg>-umwrk in s_nawerk
and <tmp_mseg>-lgort in s_vo_ort
and <tmp_mseg>-umlgo in s_na_ort.
endif.
* Materialgruppe
if not s_kondm is initial.
select single kondm into (itab1-kondm)
from mvke
where matnr = <tmp_mseg>-matnr
and kondm in s_kondm
and vkorg = '0003'
and vtweg = '31'.
if sy-subrc <> 0. continue. endif.
else.
*BEFUELLUNG
select single kondm into (itab1-kondm)
from mvke
where matnr = <tmp_mseg>-matnr
and vkorg = '0003'
and vtweg = '31'.
endif.
concatenate tmp_budat+4(2) tmp_budat(4) into tmp_monat
separated by '.'.
itab1-monat = tmp_monat.
itab1-mblnr = <tmp_mseg>-mblnr.
itab1-matnr = <tmp_mseg>-matnr.
itab1-meins = <tmp_mseg>-meins.
itab1-menge = <tmp_mseg>-menge.
* Von/Nach -Werk & -Ort
if mseg-bwart = '101'.
itab1-out_werk = '0'.
itab1-in_werk = <tmp_mseg>-werks.
itab1-vo_ort = '0'.
itab1-na_ort = <tmp_mseg>-lgort.
else.
itab1-out_werk = <tmp_mseg>-werks.
itab1-in_werk = <tmp_mseg>-umwrk.
itab1-vo_ort = <tmp_mseg>-lgort.
itab1-na_ort = <tmp_mseg>-umlgo.
endif.
collect itab1.
endloop.
endform. " get_data
...nein, ist es nicht.Ist das eigendlich egal wie ich z.B. die Where-Bedingungen anordne
...
Code: Alles auswählen.
...
from mseg
where
mblnr in s_mblnr and
mjahr in s_mjahr_tab and
* zeile = '3. primärschlüssel der mseg'
* weglassen, da wir diesen nicht mit einem wert versorgen können
* ab hier wird sequentiell weitergesucht,
* um mittels der weiteren suchkriterien die datensätze zu ermitteln...
...
...sollte so sein. da habe ich aber schon andere erfahrungen mit gemacht, wo es nicht so war.ich glaube mich daran erinnern zu können, dass die Datenbank-Optimizer heutzutage die Reiehnfolge der Primärschlüssel automatisch in die richtige Reihenfolge bringen können.
Code: Alles auswählen.
SELECT
vrsio AS vrsi5 spmon AS spmo5 vkorg AS vkor5 pkunag netwr
FROM s777
INTO CORRESPONDING FIELDS OF TABLE is777
FOR ALL ENTRIES IN iknvv_kunnr
WHERE ssour = ''
AND vrsio = 'A00'
AND spmon in so_spmon
AND sptag = 0
AND spwoc = 0
AND spbup = 0
AND vkorg in so_vkorg
AND pkunag = iknvv_kunnr-kunnr.
Code: Alles auswählen.
LOOP AT iso_tvko INTO xso_tvko.
LOOP AT iso_datap INTO xso_datap.
SELECT
vrsio AS vrsi5 spmon AS spmo5 vkorg AS vkor5 pkunag netwr
FROM s777
APPENDING CORRESPONDING FIELDS OF TABLE is777
FOR ALL ENTRIES IN iknvv_kunnr
WHERE ssour = ''
AND vrsio = 'A00'
AND spmon = xso_datap-datap
AND sptag = 0
AND spwoc = 0
AND spbup = 0
AND vkorg = xso_tvko-vkorg
AND pkunag = iknvv_kunnr-kunnr.
ENDLOOP.
ENDLOOP.