cancel
Showing results for 
Search instead for 
Did you mean: 

Umsatzanalysebericht nach Artikel

Former Member
0 Kudos

Hallo liebe Community,

ich habe aktuell eine Frage:

Wählt man bei den Standard Umsatzanalyseberichten nach Artikel die Einstellungen 'Jahresbericht', 'Lieferung', 'Einzelansicht', 'Summe nach Kunden' und wählt einen gültigen Buchungsbereich aus, so werden in der Ergebnisliste zwar alle gelieferten Artikel nach Kunden angezeigt, aber die dort gezeigten Mengen stimmen nicht. Diese sind meistens mit '0' angegeben.

Vereinzelt aber zeigen sich Mengen > 0. Der Unterschied bei denen = 0 und denen > 0 besteht darin, dass die Lieferbelege bei den = 0 alle 'geschlossen' sind und bei denen > 0 noch als 'offen-gedruckt' als Status haben. Geht man jeweils in die Detailansicht, so sind die Liefermengen ebenfalls mit 0 eingetragen. Folgt man allerdings dem Link auf den passenden Lieferbeleg, so ist dort die korrekte Menge eingetragen.

Meiner Ansicht bzw. meine Erwartung wäre, dass auch die 'Geschlossen'en Lieferscheine bei dieser Abfrage berücksichtigt werden.

Hat hierzu jemand eine Erklärung?

Vielen Dank im Voraus.

Eingesetztes System: SAP-BONE 8.82

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Ergänzend noch die Erklärung, die Du ja selbst schon gegeben hast. Es werden halt nur die offenen Mengen angezeigt, Ist m.E. auch bei Aufträgen so.

Das war mal in vorherigen Versionen anders, und ist m.E. auch nicht so optimal, aber SAP macht das nun mal so. Bei Windows musste ich auch Kahrelang auf "START" drücken, und zu BEENDEN. Komische Sache...

Helfen tut da letztendlich eine Query. Mit eigenen Queries muss man nur obacht geben. So zum Beispiel: Was ist mit Lieferungen, die eine Retoure erfahren haben - mitzählen, oder doch nicht?

hdh

Andreas

Former Member
0 Kudos

Stimmt, die Auswertungen von SAP sind stellenweise sehr merkwürdig. Kommt natürlich immer auf den Betrachter an und was der Ersteller für ein Ziel verfolgt hat.

Ich habe bzgl. den Retouren, bei dieser Query, noch das Feld Canceled der ODLN mit hinzugenommen. Dann kann man das auch noch abgrenzen, wenn man möchte.

Schick wäre noch, wenn man in dieser Query noch die Ausgabe für Produktion mit aufnehmen würde.  An diesem Thema hänge ich gerade.

Grüße

Bastian

Former Member
0 Kudos

Hallo Bastian,

vielleicht hilft das weiter:

SELECT T0.[CardCode], T0.[CardName], T0.[DocNum], T0.DocDate, T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.LineStatus,

(Select SUM(TB.Quantity) FROM OIGE TA INNER JOIN IGE1 TB ON TA.DocEntry = TB.DocEntry Where TB.ItemCode = T1.Itemcode and TA.[DocDate] >= '[%2]' and  TA.[DocDate] <= '[%3]')

FROM ODLN T0 

INNER JOIN DLN1 T1 ON T0.[DocEntry] = T1.[DocEntry] 

WHERE T0.[CardCode] LIKE '[%1]%%'  and  T0.[DocDate] >= '[%2]' and  T0.[DocDate] <= '[%3]'

and T1.ItemCode LIKE '[%4]%%'

... in der Klammer ist die Abfrage für die Ausgabe für Produktion... aber wenn in Deiner Tabelle der Artikel doppelt, dreifach, x-fach - da ja das Datum des Lieferscheins selektiert wird -   so steht die Summe der Ausgaben auch in jeder Zeile, wo der Artikel vorkommt.

über den Zusatz ... and T1.ItemCode LIKE '[%4]%%'  ist das noch ersichtlicher, was ich meine...

Die Datum-Wahl (%2/%3) sollte sich eigentlich auf den gleichen Zeitraum beziehen. (ungeprüft)

Wie Andreas schon hingewiesen hat, ist die für Abfrage nach Umsatz, oder gelieferten Mengen immer eine Betrachtung der Gegenbelege (Lieferschein <> Verkaufsretoure / A-Rechnung <> A-Gutschrift) notwendig, um alles zu haben. Ich verwende bei den Gegenbelegen immer *-1 (mal minus eins) um die Menge und Werte unterscheiden zu können...

Beste Grüsse

Markus

Former Member
0 Kudos

Hallo Markus,

erst einmal vielen, vielen dank für die Hilfe. Ich weiß es zu schätzen.

Wenn ich die Query in den Abfragegenerator eingeben, erhalte ich folgende Fehlermeldung:

Microsoft SQL Sever native Client: Must specify table to select from......Statement (SWEI) could not be prepared.

Ich habe mal nachgesehen. Jede "select" Anweisung hat eine "from" Anweisung. Auch habe ich mal die Tabelle gecheckt, ob diese existieren. Tippfehler etc. Auch diese sind alle vorhanden. Dann habe ich noch geprüft, ob zu viele Leerzeichen in der Query sind. Mann weiß ja nie, ob beim kopieren etwas schief lief. Kann ich auch ausschließen.

Nachdem die Query, bis auf den Klammerausdruck, identisch mit der vorherigen ist, die funktioniert, denke ich dass es an dem Klammerausdruck liegt. Allerdings verstehe  ich (noch) nicht den Ausdruck "select sum(tb.quantity)" Daher tue mir schwer, den Klammerausdruck zu prüfen.

Gruß

Bastian

Former Member
0 Kudos

Moin Bastian,

hab grad mal geprüft...

OK OK, da scheint was an der letzten Zeile zu sein...

Dieser Query funktioniert bei mir:

----

SELECT T0.[CardCode], T0.[CardName], T0.[DocNum], T0.DocDate, T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.LineStatus,

(Select SUM(TB.Quantity) FROM OIGE TA INNER JOIN IGE1 TB ON TA.DocEntry = TB.DocEntry Where TB.ItemCode = T1.Itemcode and TA.[DocDate] >= '[%2]' and  TA.[DocDate] <= '[%3]')

FROM ODLN T0

INNER JOIN DLN1 T1 ON T0.[DocEntry] = T1.[DocEntry]

WHERE T0.[CardCode] LIKE '[%1]%%'  and  T0.[DocDate] >= '[%2]' and  T0.[DocDate] <= '[%3]'

----

Der Ausdruck SUM(TB.Quantity) ist die Summe der Mengen, die im gewählten Zeitraum ausgegeben wurden.. TA = Kopftabelle OIGE (Datum), TB = Positabelle (ItemCode, Qunantity)

Du kannst den Klammerbereich wie folgt prüfen:

----

Select SUM(TB.Quantity) FROM OIGE TA INNER JOIN IGE1 TB ON TA.DocEntry = TB.DocEntry Where TA.[DocDate] >= '[%2]' and  TA.[DocDate] <= '[%3]' and TB.ItemCode = '[%4]'

----

Als Ergebnis kommt nur die Menge in Summe, wieviel von dem ausgewählten Artikel im Zeitraum X bis Y ausgegeben wurde.

Ich hoffe das hilft bei Deiner Arbeit.

Gute Grüsse

Former Member
0 Kudos

Hallo Markus,

super. Hat mir sehr weitergeholfen, auch wenn es nicht ganz da war, was ich gebraucht habe.

Ich konnte mir auf jeden Fall mit Deiner Hilfestellung die passende Query "zusammenbasteln"

Allerdings meine ich, dass in der IGE1 nicht die Abbuchungen aus den Produktionsaufträgen auftauchen.

Wenn ich ein unsere Produktionsauftrag fertig melde, dann werden die Komponentenartikel automatisch abgebucht (retrograte Entnahme).

Diese Artikel tauchen in der IGE1 nicht auf. Hast Du eine Idee, in welcher Tabelle diese stehen könnten? Dann kann ich mir eine Abfrage dafür erstellen.

Vielen Dank

Gruß

Bastian

Former Member
0 Kudos

Hallo, hmmmm ich kenne nur


Eingang aus Prod. = OIGN und IGN1

Ausgabe für Prod. = OIGE und IGE1


schau doch mal in der OINM... das ist das Lagerjournal.

Select * from OINM Where itemCode = '[%1]' and docdate = '[%2]'


In Deiem Fall sind diese Transactionscodes zu prüfen:

59 = oInventoryGenEntry (Eingang)

60 = oInventoryGenExit (Ausgang)


... und wenn Du die Bestandsbuchungliste des entnommenen Artikels aufrufst, welche Belege kommen dann ?

Viele Grüße

Markus

Former Member
0 Kudos

Hallo Markus,

hat leider etwas länger gedauert.

Also.... wenn ich mir zu dem gesuchten Komponentenrtikel die Bestandsbuchungsliste ansehe, kommen neben den Warenein- und Ausgangsbelegen, "SI" Eingang aus Produktion. Wenn ich mir dann den Belegansehe taucht der Stücklistenartikel auf.

In der OINM erscheinen die gesuchten Komponentenartikel unter der Nr. 59 allerdings in dem Feld TransType.

Dann werde ich mit der Abfrage über die OINM arbeiten.

Gibt es eine Liste mit den Transactionscodes? Dann kann ich mir das zu den "good to know" Unterlagen legen.

Danke (wieder mal)

Gruß

Bastian

Former Member
0 Kudos
Former Member
0 Kudos

Hallo Torben, willkommen im Forum...

ja die Auswertungen im Standard sind nicht immer zielführend, bzw. logisch.

Vielmehr an Transparenz und Information erhältst Du durch die Nutzung von Queries (Abfragen auf der Datenbank)

Alle Belege in SAP sind in je 2 Tabellen zu finden:

Lieferschein:

ODLN = Lieferschein-Kopf (Kunde, Frankatur, Sprache, Beträge,...)

DLN1 = Lieferschein-Position (Artikel, Menge, Lieferdatum, Texte,...)

HIer mal ein Beispiel die Lieferungen als Datenbank-Abfrage zu sehen:


SELECT T0.[CardCode], T0.[CardName], T0.[DocNum], T0.DocDate, T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.LineStatus

FROM ODLN T0

INNER JOIN DLN1 T1 ON T0.[DocEntry] = T1.[DocEntry]

WHERE T0.[CardCode] LIKE '[%1]%%'  and  T0.[DocDate] >= '[%2]' and  T0.[DocDate] <= '[%3]'

diesen Query mal in dein SAP kopieren

(Extras --> Abfragen --> Abfragengenerator --> "Ausführen" Fehlermeldung ignorieren

oberes Stiftsymbol drücken (Bereich wird gelb)

Query von oben kopieren und einfügen... (Vorher "SELECT * entfernen)

So sollte es dann aussehen:

--> Ausführen

somit kannst Du nur einen Kunden anschauen, oder wenn Du das Feld oben leer läßt, - alle
aber dann Datum von bis eintragen...

Als Ergbnis sollte erscheinen:

Kundennummer, Kundenkurzname, BelegNr, Buchungsdatum, Artikelnummer, Artikelname, Menge, Status (C = geschlossen, O = Offen)

Das ist nicht das was Du hören willst... aber glaube mir, mittels Abfragen kannst Du vielvielviel mehr erreichen, sehen, prüfen als mit jeder Auswertung im SAP Standard. Da geht ne ganze Menge (Queries, Aufbereitung per PIVOT in Excel als VIEW, usw..)

Und hier und auch im englischen Forum wird Dir gerne geholfen, wenn es um Abfragen geht

Viel Erfolg.

Former Member
0 Kudos

@ Markus: ah Mist. Ich hatte kürzlich eine Ähnliche Problemstellung und habe mir eine eigene Query gebastelt. Nur Deine ist viel schöner ...heul....

Ich habe jetzt Deine übernommen 🙂

Danke!