SAP Jobsuche bei DV-Treff
beck
  • beck
  • SAP Forum - Guru Thema Starter
vor 14 Jahre

Hallo zusammen,

ich habe folgendes Problem: Eine ausländische Gesellschaft arbeitet mit einer Hauswährung, die mit einem Wechselkurs von etwa 14.000 = 1 EUR gepflegt ist.

Wenn diese ausländische Gesellschaft nun eine Bestellung in EUR erstellt (Betrag z.B. 150.000 EUR) kommt die Meldung Nr. 06217 = "Nettopreis in Hauswährung größer als der im System festgelegte maximale Preis ("99999999999")". Bestellung kann so nicht weiter verarbeitet werden.

Leider wird eine Maschine bestellt, also ist ein Split in mehrere Unterpositionen eher suboptimal.

Es ist problemlos möglich, im FI einen Beleg mit dem Betrag von 150.000 EUR zu buchen, da wird sauber umgerechnet. An der Maximalen Länge der Betragsfelder in FI-Belegen kann es also eher nicht liegen. Daher vermute ich das Problem eher irgendwo in den Tiefen des MM.

Die spannenden Fragen, die sich für mich nun ergeben:

- Ist die o.g. Meldung überhaupt richtig? Umrechnung wäre ja 150.000 x 14.000 = 2.100.000.000, was ja kleiner wäre als 99.999.999.999 (s.o.). Oder kommen da noch zwei Nachkommastellen runter --> 999.999.999,99???

- Hat jemand eine Idee, ob / wo man irgendwo im MM diesen "im System festgelegten maximalen Preis" erhöhen kann? Oder ist der bereits am Anschlag?

- Sonst eine Idee?

Wäre für jeglichen Tip dankbar.

beck

Förderer

beck
  • beck
  • SAP Forum - Guru Thema Starter
vor 14 Jahre

Hallo nochmal.

zwei kleine Nachträge, die das Problem evtl. eingrenzen:

- Es handelt sich um eine Bestellung mit Kontierungstyp A = Anlage

- Wenn ich die Bestellposition mit 1 St. zu 150.000 EUR / St. pflege, kommt die o.g. Fehlermeldung

- Wenn ich die Bestellposition mit 150 St. zu 1.000 EUR / St. pflege, geht die Bestellung durch. Obwohl da am Ende des Tages doch das gleiche rauskommt. Sollte man zumindest meinen?!?

Danke nochmal für Tips

beck

JHL
  • JHL
  • SAP Forum - Guru
vor 14 Jahre
Schau doch mal ins Coding von Programm MM06EF0E_EKPO-NETPR

das

*- Währung ------------------------------------------------------------*

IF ekko-waers NE t001-waers.

CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'

EXPORTING

date = ekko-bedat

foreign_amount = ekpo-effwr

foreign_currency = ekko-waers

local_currency = t001-waers

rate = ekko-wkurs

IMPORTING

local_amount = f1.

ENDIF.

*- Preis pro Bestellmengeneinheit -------------------------------------

CASE ekko-bstyp.

WHEN bstyp-best.

IF ekpo-menge NE 0.

f1 = f1 * 1000 / ekpo-menge.

ENDIF.

WHEN bstyp-kont.

IF ekpo-ktmng NE 0.

f1 = f1 * 1000 / ekpo-ktmng.

* ansonsten ist F1 schon mit 1 berechnet

ENDIF.

WHEN bstyp-lfpl.

IF ekpo-ktmng NE 0.

f1 = f1 * 1000 / ekpo-ktmng.

* ansonsten ist F1 schon mit 1 berechnet

ENDIF.

WHEN OTHERS.

IF ekpo-ktmng NE 0.

f1 = f1 * 1000 / ekpo-ktmng.

ENDIF.

ENDCASE.

*- Überlauf prüfen ----------------------------------------------------

IF ekpo-matnr EQ space.

IF f1 > maxpreis.

MESSAGE e217 WITH t001-waers.

ELSE.

hnetpr = f1.

ENDIF.

ENDIF.

beck
  • beck
  • SAP Forum - Guru Thema Starter
vor 14 Jahre

Hallo JHL,

vielen Dank für die Info. Bin zwar keine ABAP-Mann, aber so viel glaube ich davon zu verstehen, dass das die richtige Stelle ist:

*- Überlauf prüfen ----------------------------------------------------

IF ekpo-matnr EQ space.

IF f1 > maxpreis.

MESSAGE e217 WITH t001-waers.

ELSE.

hnetpr = f1.

ENDIF.

ENDIF.

 Wenn ich jetzt vom "maxpreis" tiefer grabe, stoße ich auf im Programm "MM06ETOP_GLOBAL_DATA" auf folgende Stelle:

*------- Direktwert zur Pruefung von Nettowertueberlaeufen ------------*

DATA: maxwert LIKE ekpo-netwr VALUE '9999999999999'.

DATA: maxpreis LIKE ekpo-netpr VALUE '99999999999'.

DATA: maxmenge LIKE ekpo-menge VALUE '9999999999999'.

DATA: maxntgew LIKE komp-ntgew VALUE '999999999999999'.

DATA: maxumref LIKE ekpo-umrez VALUE '99999'.

Kann mir nun noch jemand sagen, ob eine Vergrößerung des "maxpreises" an dieser Stelle um eine oder zwei Stellen 1. richtig, 2. möglich und 3. unkritisch ist?

Wie gesagt: Vielen Dank, war schon mal sehr aufschlussreich.

beck

JHL
  • JHL
  • SAP Forum - Guru
vor 14 Jahre
Meiner Meinung nach solltest du daran nicht schrauben.

SAP hat das eingebaut um einen Feldüberlauf, und damit einen Dump, zu unterdrücken. Der Dump würde alle Eingaben des Benutzers vernichten und er könnte von vorne anfangen. Mit dem Fehler kann er seine Eingabe korrigieren und weiterarbeiten.

Für Deinen spezialFall kommst du dann an dem Workaround wohl nicht vorbei.