Erweiterung der MB25 - Reservierungsliste

Getting started ... Alles für einen gelungenen Start.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Erweiterung der MB25 - Reservierungsliste

Beitrag von Arminson (ForumUser / 3 / 0 / 0 ) »
Hallo zusammen,

ich bin noch blutiger Anfänger in ABAP und hoffe ihr könnt mir helfen. Ich habe die Aufgabe bekommen die Transaktion MB25 um eine Spalte zu erweitern.

Und zwar soll hier die Bedarfsmenge (RESB-BDMNG) mit dem gleitenden Durchschnittspreis (MBEW-VERPR) multipliziert werden und in der neuen Spalte "Wert der offnenen Reservierung" ausgegeben werden.

Ich habe mir den bestehenden Report RM07RESL nach ZRM07RESL kopiert, um ihn zu modifizieren. Die Spalte im Report wird mir bereits angezeigt, allerdings erhalte ich keine Werte. Der SQL-Befehl scheint noch nicht richtig zu sein.

Hier meine Syntax:
SELECT SUM( mbew~verpr * resb~bdmng ) AS WertRes
FROM mbew INNER JOIN resb ON mbew~matnr = resb~matnr
INTO CORRESPONDING FIELDS OF TABLE @lt_wertres
WHERE mbew~matnr = resb~matnr.

Ich freue mich auf eure Vorschläge und bedanke mich schonmal für die Hilfe.
Arminson


Re: Erweiterung der MB25 - Reservierungsliste

Beitrag von jocoder (Specialist / 273 / 3 / 78 ) »
WHERE-Bedingung
Die WHERE-Bedingung und die JOIN-Bedingung sind identisch. Das SELECT-Statement

Code: Alles auswählen.

SELECT SUM( mbew~verpr * resb~bdmng ) AS WertRes
  FROM mbew INNER JOIN resb ON mbew~matnr = resb~matnr
  INTO CORRESPONDING FIELDS OF TABLE @lt_wertres
  WHERE resb~matnr = @resb-matnr.
liest den Wert für eine Materialnummer aus dem Tabellenarbeitsbereich resb.
Z. B. der Tabellenarbeitsbereich resb enthält die Materialnummer '000000001220004000'. Das SELECT-Statement wird wie folgt an die Datenbank gesendet:

Code: Alles auswählen.

SELECT SUM( mbew~verpr * resb~bdmng ) AS WertRes
  FROM mbew INNER JOIN resb ON mbew~matnr = resb~matnr
  INTO CORRESPONDING FIELDS OF TABLE @lt_wertres
  WHERE resb~matnr = '000000001220004000'.
Das @-Symbol kennzeichnet im strikten Modus eine Hostvariable, die durch einen Wert ersetzt wird. Die Transaktion ST05 macht den Ersatz der Hostvariablen sichtbar.

Das SELECT-Statement

Code: Alles auswählen.

SELECT SUM( mbew~verpr * resb~bdmng ) AS WertRes
FROM mbew INNER JOIN resb ON mbew~matnr = resb~matnr
INTO CORRESPONDING FIELDS OF TABLE @lt_wertres
WHERE mbew~matnr = resb~matnr.
ist identisch zu

Code: Alles auswählen.

SELECT SUM( mbew~verpr * resb~bdmng ) AS WertRes
FROM mbew INNER JOIN resb ON mbew~matnr = resb~matnr
INTO CORRESPONDING FIELDS OF TABLE @lt_wertres.
resb~matnr ist keine Hostvariable und wird unverändert übernommen.

Ergebnismenge
Die Ergebnismenge enthält nur eine Zeile. Es braucht dazu eigentlich keine interne Tabelle. Als Ergebnismenge kann hier eine Struktur angegeben werden.

Code: Alles auswählen.

SELECT SUM( mbew~verpr * resb~bdmng ) AS WertRes
  FROM mbew INNER JOIN resb ON mbew~matnr = resb~matnr
  INTO CORRESPONDING FIELDS OF @ls_wertres
  WHERE resb~matnr = @resb-matnr.
Soll die Ergebnismenge mehrere Zeilen enthalten, ist eine GROUP-BY-Klausel notwendig.

Auf die Materialbewertung bezogene Probleme
  • Wenn die getrennte Bewertung für Materialnummern aktiviert ist (z.B. Bewertungsebene liegt auf Chargenebene), kann der Wert zu groß werden. Die Tabelle MBEW enthält in diesem Fall mehrere Einträge für eine Materialnummer und diese werden alle im JOIN berücksichtigt.
  • Die Formel mbew~verpr * resb~bdmng liefert zudem nur ein richtiges Resultat, wenn der GLD-Preis aktiviert ist. Für Materialnummern mit Standardpreisen muss die Spalte MBEW-STPRS herangezogen werden. Die Unterscheidung ist anhand des Preissteuerungsfeldes möglich (MBEW-VPRSV)
  • Bewertungskreise: Die Materialbewertung ist auf Materialnummerebene und Bewertungskreisebene organisiert. Der Bewertungskreis sollte in den JOIN mit aufgenommen werden. Reservierungen liegen auf Werksebene. Werke sind in der Tabelle T001W Bewertungenkreisen zugeordnet.
Eine JOIN, der die Bewertungskreisebene mit berücksichtigt:

Code: Alles auswählen.

SELECT SUM( mbew~verpr * resb~bdmng ) AS WertRes
  FROM resb INNER JOIN t001w ON t001w~werks = resb~werks
  INNER JOIN mbew ON mbew~matnr = resb~matnr AND mbew~bwkey = t001w~bwkey
  INTO CORRESPONDING FIELDS OF @ls_wertres
  WHERE resb~matnr = @resb-matnr.

Re: Erweiterung der MB25 - Reservierungsliste

Beitrag von Arminson (ForumUser / 3 / 0 / 0 ) »
Das hat mir schon weiter geholfen, vielen Dank.
Allerdings wird mir als Ergebnis immer 0 ausgegeben.

Der gleitende Durchschnittspreis ist aktiviert und beträgt beim Testfall 60. Bedarfsmenge ist 2. Also sollte hier 120 ausgegeben werden.

Oder habe ich in der Ausgabe etwas falsch?
Diese erfolgt über den Include RM07RESL_FIELDCAT:

Code: Alles auswählen.

  def_add 'wertres' 'wertres' 'gs_wertres' 'X' space.

Re: Erweiterung der MB25 - Reservierungsliste

Beitrag von jocoder (Specialist / 273 / 3 / 78 ) »
Wird der Wert aus der Struktur gs_wertres in die Tabelle t_list übertragen? Diese Tabelle wird im ALV angezeigt.

Re: Erweiterung der MB25 - Reservierungsliste

Beitrag von Arminson (ForumUser / 3 / 0 / 0 ) »
Der Wert sollte eigentlich in die Tabelle t_list übertragen werden.
Ich habe folgenden Code dafür:

Code: Alles auswählen.

<t_list>-wertres = gs_wertres-wertres.

Seite 1 von 1

Über diesen Beitrag



ABAP & SAP eBook Flatrate von Espresso Tutorials Sponsorlink
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Materialnotiz Button programmieren
vor 16 Stunden von black_adept 14 / 378
Query finden
vor 18 Stunden von jocoder 2 / 32

Vergleichbare Themen

Erweiterung MD04
von Gottschall » 10.06.2015 15:20
Erweiterung PBAS0001
von Kelly » 06.09.2007 16:52
Erweiterung des Datenfelds
von LeonBarthez » 23.01.2008 17:11
IS-U: IQ03 Erweiterung
von ABAP_User » 21.02.2012 16:24
Erweiterung Dokumentationsanzeige
von ralf.wenzel » 04.12.2013 11:52