Hallo,
ich möchte einen Bestandbewertungsreport für die Vorperiode mit einer SAP Query erstellen.
Davon betroffen sind die Tabellen MBEW und die Tabelle MBEWH für die Historiendaten.
Gesucht wird die Bestandsbewertung für Materialien, wobei die Materialien bei gleicher Materialnummer unterschiedliche Bewertungsarten haben können, d.h. mehrere Datensätze pro Materialnummer.
Zum Ablauf der Query:
Bspw. soll der Bestand für die Periode 04/2007 eines Materials für alle Bewertungsarten angezeigt werden.
Nun soll die MBEW gelesen werden und geschaut werden ob dort ein Wert für diese Periode vorhanden ist. Dort steht nun entweder die Periode 05/2007, dann soll in die MBEWH gesprungen werden, da ich die Historiendaten benötige. Oder es steht eine andere Periode drin bspw. 03/2007, dieser Wert gilt aber auch 04/2007, da es keine Bestandsveränderung gab, schreibt SAP die Periode erst fort wenn sich der Bestand ändert.
In der MBEWH stehen nun mehrere Datensätze für die Kombination Material/ Bewertungsarten, da die Bestandsveränderungen historisiert werden (d.h. dort steht der Bestand für 04/2007, 01/2006 nicht fortlaufend sondern nur die Periode wenn sich was geändert hat).
So nun lange Rede kurzer Sinn?.
Ich schaffe es, die richtige Periode mit dem richtigen Material auszugeben. Was er mir aber nicht macht ist, das er die Bewertungsarten berücksichtigt. Ich bekomme nur einen Datensatz (Material/ Bewertungsart) zurück , obwohl es mehrere gibt.
Iregndwas in meine SQL Statement stimmt nicht?..
Anbei den Code den ich innerhalb des Infosets verwende:
Parameters:
zzgjahr like MBEW-LFGJA obligatory, ? Selektionsfelder auf dem Dynpro
zzperi like mbew-lfmon obligatory.
clear zz_bestand. ? Bestand
clear zz_gjahr_a. ? Jahr das in der MBEW steht
clear zz_peri_a. ? Periode das in der MBEW steht
clear zz_bwtart. ? Bewertungsart in der MBEW
select lbkum bwtar lfgja lfmon into (zz_bestand, zz_bwtart,
zz_gjahr_a, zz_peri_a) from mbew
where
matnr = mara-matnr and
bwkey = marc-werks and
lfgja <= zzgjahr and
lfmon <= zzperi.
endselect.
if zz_peri_a = 00. " wenn 00, dann wurde in der MBEW keine passende Periode gefunden.
select lbkum bwtar into (zz_bestand, zz_bwtart) from mbewh
where
matnr = mara-matnr and
bwkey = marc-werks and
bwtar = zz_bwtart and
lfgja = zzgjahr and
lfmon <= zzperi.
endselect. "NEW
endif.
Ich hoffe das war verständlich, ansonsten fragt mich noch mal. Ich werd bekloppt, das Ding nagt echt an mir....
Danke und Gruß
Peter