Trigger Value changed reagiert nicht
Christoph Seibel
Hallo zusammen,Folgender SQL Trigger soll auf dem dem Feld "Preis nach Rabatt" ausgeführt werden. Der Trigger wird aber nur ausgeführt, wenn das Feld manuell geändert wird. Wird das Feld durch Änderungen in "Preis vor Rabatt" und "Rabatt" automatisch von SAP gefüllt, wird der Trigger nicht gefeuert.
Wird der Trigger bei manueller Änderung ausgeführt, wird der Wert zwar berechnet, aber eine Fehlermeldung
"Fehler im Item Event Handling - Incorrect Syntax near '-'
SELECT [%N;38;17] - [%N;38;37]
Wie in einem anderen Task schon beschrieben, wird auch nur mit Ganzzahlen gerechnet. Dezimaltrenner ist ',' (Komma)
Wo kann hier der Fehler liegen?
Grüße
Christoph Seibel
Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-image-uploads/christoph-seibel/setting.gif]setting.gif[/url]
Sascha Balke
hi chris,mit triggern wäre ich vorsichtig.
wir hatten zu beginn mit der sbo unsere problematik, mit den preislisten, auch mit triggern gearbeitet und im verlauf der arbeit probleme bekommen. unterm strich hatte es auch zur folge, das wir den support verloren hatte. erst als wir eine "saubere" datenbank - ohne trigger - hatten, haben wir wieder supprt erhalten. wir würden auch so einige probleme mit trigger erledigen können, aber lassen die finger davon.
selbst wenn wir, wie in unserem fall, von sap die aussage hatten, das wir bei der preisliste selbst änderungen vornehmen können, ist das uns zu heikel.
sollte sich die problematik mit den triggern anders darstellen, wäre ich für jeden tipp dankbar.
das beste ist, wenn du mit deinem s-user eine meldung bei sap aufmachst und deine trigger freigeben lässt. sonst ist dein support in gefahr.
was mir in diesem moment noch einfällt ist, das sap die trigger und update statements unter bestimmten umständen zu lässt, ohne den support zu verlieren. jedoch so wie ich die fragestellung verstehe hier ist aber ein punkt erreicht, an dem ich mich nicht zuweit aus dem fenster lehnen möchte.
gruß
sascha
Christoph Seibel
Hallo,ich hatte mich wohl etwas unklar ausgedrückt. Es geht nicht um einen DB-Trigger sondern um den Event in der Form die "CoreSuite-Customize" abfangen soll.
Eigentliches Ziel ist, die forhandene FormatedSearch in den Belegzeilen abzulösen. Hierbei gibt es jedoch sowohl beim "Auslöser" (Änderung im Feld "Gesamtbetrag" als auch beim Format (Nachkomma und Dezimaltrenner) Probleme.
Grüße
Christoph
Michael Egloff
Hallo zusammen,richtig Christoph, coresuite customize hat gar nichts zu tun mit DB-Triggern!!
Wichtig: Wenn man coresuite customize benutzt, verliert man sicher NICHT den Support von SAP!!!
Zum Verhalten der Auslöser:
Wenn eine (odere mehrere Zeilen) eingefügt werden, so füllt SAP alle vorhandenen Wert in die Zeilen ab ohne jedoch irgendwelche Events zu werfen.
Das ist der Grund, wieso deine Regel nur funktioniert, wenn du das Feld manuell veränderst (oder verlässt).
Das zweite ist ein SQL Fehler: ich denke mal, dass er da mit der Währung ein Problem hat.
Ich hab bei mir versucht, zwei Beträge voneinander abzuziehen.
Das sieht dann etwa so aus:
SELECT
CAST( SUBSTRING('[%G;38;17;1]',0,LEN('[%G;38;17;1]')-3) AS FLOAT)
-
CAST( SUBSTRING('[%G;38;37;1]',0,LEN('[%G;38;37;1]')-3) AS FLOAT)
Bei mir ist die Währung nach der Zahl angegeben (1.5 CHF), deshalb schneid ich die noch weg (mit SUBSTRING)
Hoffe, das hilft weiter!
Gruss Michael
Christoph Seibel
Hallo Michael,danke für die Info. Was bedeutet das mit den Events aber jetzt für mich. Ich hatte ggf. vor, die Formatierten Suchen auf Zeilenebene durch customize zu ersetzten. Wenn ich aber jetzt die Änderung der Werte gar nicht abfangen kann, wie soll das dann funktionieren. Gibt es hier eine Idee?
Danke und Grüße
Christoph
Michael Egloff
Wenn du in dem Moment des Hinzufügen eines Artikels etwas berechnen willst, dann kannst du dich auf die Spalte "ItemCode" auf den Event "ValueChanged" anmelden und dann deine Berechnungen machen.Christoph Seibel
Der Ablauf soll aber eigentilich folgender sein:1. Zeile hinzufügen.
2. Zwei SBO Systemfelder werden automatisch gefüllt. (preis und Einkaufspreis)
3. aus diesen soll etwas errechnet werden und in UDF geschrieben werden.
4. Wir eines der Systemfelder (preis und Einkaufspreis) noch manuell geändert, soll die gleiche Berechnung erfolgen und das UDF wieder gefüllt werden.
Mit 3 verschiedenen "Auslösern" in Customize funktioniert es jetzt fast ;-)
Nur der Auslöser auf Feld 14 (Preis vor Rabatt) funktioniert nicht, auf eine direkte Änderung wird nicht registriert.
Die Convertierung im SQL funktioniert nicht mit Dezimaltrenner ",". Hier wird wohl von SAP noch etwas im Hintergrund umgebogen. :-?
Grüße
Christoph
Michael Egloff
Selbstverständlich kann man mehrere Auslöser definieren, die dasselbe UDF bearbeiten.In deinem Fall würde ich so etwas vorschlagen:
1. Zeile hinzufügen
-> noch nichts machen
2. Zwei SBO Systemfelder werden automatisch gefüllt. (preis und Einkaufspreis)
-> noch nichts machen
3. aus diesen soll etwas errechnet werden und in UDF geschrieben werden.
-> Regel erstellen für die erste Spalte auf Value Changed
4. Wir eines der Systemfelder (preis und Einkaufspreis) noch manuell geändert, soll die gleiche Berechnung erfolgen und das UDF wieder gefüllt werden.
-> 2 Regeln erstellen, die dasselbe machen, wie die erste Regel, aber der Auslöser sind die Felder Preis und Einkaufspreis.
Wenn dir das alles zuviel ist, dann kann man auch eine Funktion programmieren, welche dies alles beim Hinzufügen des Beleges macht.
Dies müsste dann aber eine C# Funktion sein.
Melde dich, falls du weitere Unterstützung brauchst!
Gruss,
Michael
-> Regel erstellen
Christoph Seibel
Hallo Michael,danke für die Infos.
Ich habe jetzt mehrere Regeln. Bei 2 von 3 funktioniert es auch. Eben nur bei der Regel die die Preisänerung in [u]Feld 14[/u] (Preis vor Rabatt)prüfen soll [u]nicht[/u].
[u]Systemeinstellung [/u]in deutscher DB Dezimaltrenner "komma"
[u]Druckeinstellungen [/u]"Zeilensummen anhand Stückpreis berechnen"
Ebenfalls ist etwas bei der Berechnung mit dem Dezimaltrenner falsch. Das Problem hatte ich auch schon mal in den "Formated Search" Queries.
So bekommen ich leider noch nicht das gewünschte Ergebnis.
Grüße
Christoph
Michael Egloff
Hallo Christoph,ich schlage eine WebEx vor, dann können wir das Problem zusammen anschauen. Melde dich doch per Email bei mir, wann es dir zeitlich passen würde.
Gruss,
Michael
0
Please sign in to leave a comment.
Comments
0 comments