einzelne Werksbestände zu einem Material

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
18 Beiträge • Seite 1 von 2 (current) Nächste
18 Beiträge Seite 1 von 2 (current) Nächste

einzelne Werksbestände zu einem Material

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
Hallo zusammen,

ich habe eine Frage zu folgendem Sachverhalt:

meine Aufgabe besteht darin einzelne Bestände zu einem Material welches in verschiedenen Werken gelagert wird zu ermitteln.

D.h. ein Material XY wird in Werk 1,2,3,4,5 gelagert nun will ich durch eine Query mir die einzelnen Bestände zu diesem Material aus den Werken anzeigen lassen und in die dafür angelegten Tabellen zwerk1, zwerk2 , zwerk3 usw. zu schreiben

Mein vorgehen war bisher wie folgt:

ich habe ein InfoSet erstellt aus einem Join von drei Tabellen ( MARC, MAKT , MARD ) als Query hab ich nun folgende Select Abfrage erstellt.


clear zwerk1.

select sum( labst ) from Mark into zwerk1
where werks = marc-werks and
matnr = marc-matnr.


Er zeigt mir zwar durch die Abfrage den richtigen Gesamtbestand von allen Werken an und summiert den auch in meiner Tabelle zwerk1, ich wollte jedoch nur den Bestand aus Werk1 haben in meiner Tabelle zwerk1 und nicht den Gesamtbestand in dieser Tabelle. Soweit ich weiss Arbeitet ja die Tabelle Marc auf Werksebene.

Könnte mir vielleicht jemand dabei weiterhelfen, die einzelnen Bestände von Werk1 Werk2 Werk3 usw... in die dafür angelegten Tabellen zwerk1, zwerk2 , zwerk3
zu schreiben.. ich glaube der Ansatz in meiner Select Abfrage ist richtig nur das da ein kleiner Fehler irgendwo drinsteckt..

Vielen Dank schonmal für Hilfe

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: einzelne Werksbestände zu einem Material

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Du bekommst, was du selektierst. Wenn du nicht auf WERKS einschränkst...
Du solltest lieber eine Tabelle machen in der du WERKS aufnimmst.
Wie willst du denn programmieren, wenn ihr nächstes Jahr 105 Werke habt...?
Der GROUP BY-Zusatz ( GROUP BY werks) zum SELECT-Befehl könnte dir gut helfen.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Andrzej


Re: einzelne Werksbestände zu einem Material

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
Hallo ewx,

danke für deine Hilfe. Also ich hab jetzt folgenden Ansatz probiert, ich habe es auch wie von dir vorgeschlagen bei select mit werks und Group by werks eingeschränkt und es kam das gleich Ergebnis wie bei labst heraus.

select labst
from mard into zwerk1
where werks = marc-werks and matnr = marc-matnr
GROUP BY labst.


Nun sieht es aber wie folgt aus: ich habe 5 von solcher Tabellen ( zwerk1, zwerk2, zwerk3, zwerk4, zwerk5) die alle ein Werk beschreiben sollen. Gehen wir davon aus das keine neuen Werke dazu kommen.
Der Bestand befindet sich in werk1 also sollte nur die Tabelle zwerk1 den Bestand beinhalten und die anderen auf 0 stehen. SAP zeigt den richtigen Bestand an jedoch in allen meinen Tabellen zwerk1-zwerk5. Er zeigt ihn sogar doppelt an.
die Materialnummern gibt er mir auch einpaar mal aus statt nur einmal.

kannst du mir da weiterhelfen, wie ich den Bestand nur in die dazugehörige Tabelle bekomme und das dass Material auch nur einmal angezeigt wird und die Werke eine 0 zugewiesen bekommen wenn sie leer sind.

Danke für die Hilfe!!

Re: einzelne Werksbestände zu einem Material

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Schau dir mal bitte das Beispiel für GROUP BY an: http://help.sap.com/abapdocu_731/de/aba ... clause.htm
Du solltest ZWERK1 - 5 durch EINE Tabelle ersetzen, die WERKS als Schlüsselfeld hat!

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Andrzej


Re: einzelne Werksbestände zu einem Material

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
Andrzej hat geschrieben:ich habe 5 von solcher Tabellen ( zwerk1, zwerk2, zwerk3, zwerk4, zwerk5) die alle ein Werk beschreiben sollen.
Sind das wirklich interne Tabellen oder nur "einfache" Variablen? Es wird ja auch nur ein Wert (der Bestand eines Materials\Werkes) darin gespeichert.

Dein Select macht wenig Sinn: MARD-LABST ist der Lagerortbestand. Also der Bestand eines Materials in einem Werk auf einem Lagerort.
Wenn du also den gesamten Bestand eines Material in einem Werk haben willst, musst du die Lagerortbestände je Material/Werk summieren!
Der GROUP BY steuert dabei die Summierungsstufen:

Code: Alles auswählen.

DATA: lv_matnr TYPE mard-matnr,
      lv_werks TYPE mard-werks,
      lv_labst TYPE mard-labst.

SELECT-OPTIONS: s_matnr FOR lv_matnr.
SELECT-OPTIONS: s_werks FOR lv_werks.

START-OF-SELECTION.

SELECT matnr werks SUM(LABST)
  INTO (lv_matnr, lv_werks, lv_labst)
  FROM mard
  WHERE matnr IN s_matnr
    AND werks IN s_werks
  GROUB BY matnr werks.

  WRITE: / lv_matnr, lv_werks, lv_labst.
ENDSELECT.
Wenn du mit dem Beispiel nicht weiter kommst, solltest du mal etwas mehr von deinem Coding posten. Dann versteht man dein Problem besser und kann entsprechend helfen.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
Andrzej

Gruß Hendrik

Re: einzelne Werksbestände zu einem Material

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
ich habe bisher ein InfoSet erfasst mit einem TabellenJoin aus den Tabellen Marc, Mard, Makt. In dem InfoSet habe ich unter Zusatz dann neue Felder mir hinzugefügt mit den Namen Zwerk1 - Zwerkxy und eine Feld mit dem Gesamtbestand.
In jedem Feld hat man die Möglichkeit Zusatz Coding hinzuzufügen und dort habe ich dann bei den einzelnen Werken

select labst
from mard into zwerk1
where werks = marc-werks and matnr = marc-matnr
GROUP BY labst.



select sum( labst ) from mard into GESAMTBESTAND
where werks = marc-werks and
matnr = marc-matnr.


das sind die bisherigen Schritte.
Danke für eure Hilfe!

Re: einzelne Werksbestände zu einem Material

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
Andrzej hat geschrieben:ich habe bisher ein InfoSet erfasst mit einem TabellenJoin aus den Tabellen Marc, Mard, Makt. In dem InfoSet habe ich unter Zusatz dann neue Felder mir hinzugefügt mit den Namen Zwerk1 - Zwerkxy und eine Feld mit dem Gesamtbestand.
Diese Info, dass du in Zusatzfeldern unterwegs bist, ist zur Problemlösung sehr wichtig und hätte im ersten Post viel Sinn gemacht.
Welche Felder sollen denn am Ende in der Liste enthalten sein?
Durch das Joinen der MARD bekommst du zu jedem Material n-Datensätze. Wobei N die Anzahl der angelegten Lageplätze zum Material ist. Ist das gewollt?


Ansonsten muss du das Coding in den Zusatzfeldern anpassen.

Beim GESAMTBESTAND soll ja der Bestand über alle Werke ausgeben werden, deshalb darf in der WHERE-Bedingung nicht mehr auf Werk eingegrenzt werden:

Code: Alles auswählen.

SELECT SUM( labst ) 
  FROM mard 
  INTO GESAMTBESTAND
  WHERE matnr = marc-matnr.
Bei den Werksbeständen, darfst du nicht mit MARC-WERKS arbeiten. Dort steht das Werk drin, welches aktuell im JOIN gelesen wird. Hier muss das Werk explizit angeben werden, zudem der Werksbestand in das Zusatzfeld geschrieben werden soll. Dazu müssen natürlich die gelesenen Lagerortbestände als Werksbestand summiert werden:

Code: Alles auswählen.

SELECT SUM( labst )
  FROM mard 
  INTO zwerk1 
  WHERE werks = '0001' 
    AND matnr = marc-matnr.

SELECT SUM( labst )
  FROM mard 
  INTO zwerk2 
  where werks = '0002' 
    AND matnr = marc-matnr.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
Andrzej

Gruß Hendrik

Re: einzelne Werksbestände zu einem Material

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
moin moin,

nur mal so aus Neugier, geht es um den "Gesamt bewerteter Bestand" ?
dann würde ich doch die Tabelle MBEW empfehlen. wozu der Aufwand alle Lager addieren ?

gruss
ratsnus
<:: XING-Gruppe Tricktresor::>

Re: einzelne Werksbestände zu einem Material

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
danke JHM deine Antwort hilft mir sehr weiter!

ich war mir erstmal auch nicht sicher ob ich die MARD verwenden soll. Jedoch kenne ich keine andere Tabelle um auf den Lagerbestand zuzugreifen.

Ich habe deinen Code ausprobiert. Bei dem Gesamtbestand zeigt er mir nun jedoch mein gewolltes Material n mal an und zählt mit den gleich Werksbestand n mal. D.H. Das gesuchte Material befindet sich in Werk 1 mit 100 Beständen. Die Abfrage summiert mir nun jedoch diese 100 bestände n mal und gibt mir einen Gesamtbestand aus. Könnte dies an den Join mit der MARD hängen und das er die einzelnen Lagerplätze summiert? Welche Tabelle könnte ich sonst verwenden um an die einzelnen Werksbestände zu einem Material zu kommen?

Der Ansatz mit den einzelnen Beständen zu den einzelnen Werken sieht sehr logisch aus jedoch gibt er mir in meiner fertigen Tabelle keine Zahlen aus..könnte dort womöglich noch was fehlen??

danke für deine Hilfe

Re: einzelne Werksbestände zu einem Material

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
ratsnus hat geschrieben:moin moin,

nur mal so aus Neugier, geht es um den "Gesamt bewerteter Bestand" ?
dann würde ich doch die Tabelle MBEW empfehlen. wozu der Aufwand alle Lager addieren ?

gruss
ratsnus
also es wird ein gesamter Bestand eines Materials benötigt welches an mehreren Werken gelagert wird. Benötigt wird eine Übersicht wieviel wird von dem Material an den einzelnen Werken gelagert und einen Gesamtbestand des Materials aus allen Werken. Wäre dies mit der MBEW möglich?

Re: einzelne Werksbestände zu einem Material

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Dass es die Standardtransaktion MMBE für die Bestandsübersicht gibt, ist dir aber bekannt, oder?

Re: einzelne Werksbestände zu einem Material

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
ewx hat geschrieben:Dass es die Standardtransaktion MMBE für die Bestandsübersicht gibt, ist dir aber bekannt, oder?


yes!

Re: einzelne Werksbestände zu einem Material

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
Andrzej hat geschrieben:
ratsnus hat geschrieben:moin moin,

nur mal so aus Neugier, geht es um den "Gesamt bewerteter Bestand" ?
dann würde ich doch die Tabelle MBEW empfehlen. wozu der Aufwand alle Lager addieren ?

gruss
ratsnus
also es wird ein gesamter Bestand eines Materials benötigt welches an mehreren Werken gelagert wird. Benötigt wird eine Übersicht wieviel wird von dem Material an den einzelnen Werken gelagert und einen Gesamtbestand des Materials aus allen Werken. Wäre dies mit der MBEW möglich?
schau dir die MBEW Tabelle doch mal an. mbew-bwkey ist der Bewertungskreis, sollte das Werk sein und mbew-lbkum ist dein bewerteter Gesamt werks Bestand inkl. "Bestand in Qualität" "gesperrt" etc.

Folgende Benutzer bedankten sich beim Autor ratsnus für den Beitrag:
Andrzej

<:: XING-Gruppe Tricktresor::>

Re: einzelne Werksbestände zu einem Material

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »

Code: Alles auswählen.

SELECT SUM( labst ) 
  FROM mard 
  INTO GESAMTBESTAND
  WHERE matnr = marc-matnr.

Code: Alles auswählen.

SELECT SUM( labst )
  FROM mard 
  INTO zwerk1 
  WHERE werks = '0001' 
    AND matnr = marc-matnr.

SELECT SUM( labst )
  FROM mard 
  INTO zwerk2 
  where werks = '0002' 
    AND matnr = marc-matnr.
[/quote]


Hi danke für deine Hilfe..ich habe es ausprobiert..leider läuft es nicht..bzw. ich bekomme keine Ausgabe angezeigt.. woran könnte es liegen? danke ;)

Re: einzelne Werksbestände zu einem Material

Beitrag von Andrzej (ForumUser / 63 / 23 / 0 ) »
@ratsnus

es soll jedoch mit der Tabelle labst aus der Mard gearbeitet werden

Vergleichbare Themen

1
Antw.
1559
Views
fetch material group,material account 3010 and Plant(WERKS)
von dragospirnut1 » 05.07.2017 12:27 • Verfasst in ABAP Objects®
15
Antw.
5975
Views
Einzelne Zeile auslesen
von Schäfer_anfänger » 17.01.2017 14:01 • Verfasst in ABAP® für Anfänger
11
Antw.
9531
Views
ALV: einzelne Spalten zusammenfassen
von Charadin » 05.11.2007 14:56 • Verfasst in ABAP Objects®
4
Antw.
5084
Views
ALV Einzelne Zeile Editierbar
von SaskuAc » 27.09.2018 07:52 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.