Konditionskontrakt: Verlängerungssperre anlegen [Howto]
Über die Transaktion wb2r_extension können Sie Konditionskontrakte in eine neue Periode übernehmen. Das Verlängern von existierenden Kontrakten ist eine nützliche Funktion. Doch wie verhindern Sie, dass bestimmte Kontrakte verlängert werden? Hier erfahren Sie, wie Sie eine Verlängerungssperre anlegen.
Verlängerungssperre für einen Kontrakt umsetzen
Ausgangssituation
Sehen wir uns die Anforderung einmal genauer an. Die Idee ist es, dass Fehler bei der Verlängerung vermieden werden sollen. Beispielsweise kann es vorkommen, dass eine Vereinbarung nicht mehr gültig ist.
Ein Verlängern eines solchen Kontrakts wäre nicht sinnvoll. Daher soll das System diesen Vorgang unterbinden und den Benutzer über den Grund informieren.
Wir gehen in die Transaktion WCOCO und wählen einen Konditionskontrakt aus. Als Zusatzfeld haben wir in unserem Beispiel das Feld “Verhandlungsstatus” angelegt. Es ist in diesem Falle auf 2 gesetzt, was “Keine Verlängerung” bedeutet:
Das Ziel ist also, dass Kontrakte nicht verlängert werden können, wenn sie den Verhandlungsstatus “Keine Verlängerung” besitzen. Doch wie können Sie nun diesen Status vor der Verlängerung automatisch abprüfen und gegebenenfalls die Verlängerungssperre umsetzen?
Lösungsansatz
Hierzu nutzen wir den BAdI “WB2_CC_EXTENSION” aus dem Erweiterungsspot “WB2_REBATES”. Sie können sich diesen im BAdI-Builder (Transaktion SE18) genauer ansehen. Dort finden Sie eine Methode namens “CHANGE_BEFORE_CREATE”:
Sie möchten ein Anlegen des neuen Kontrakts verhindern. Daher legen Sie eine Implementierung dieses BAdIs an.
Implementierung der Verlängerungssperre
In der implementierenden Klasse prüfen Sie, welchen Verhandlungsstatus der Kontrakt besitzt. Wir wollen ein Verlängern verhindern, wenn er den Status “2” (= Keine Verlängerung) besitzt. Dies setzen wir um, indem wir den Verhandlungsstatus prüfen und gegebenenfalls eine Fehlermeldung ausgeben.
An dieser Stelle können Sie auch andere Fälle abfragen. So wäre zum Beispiel eine Vergabe eines Standard-Verhandlungsstatus denkbar. Diesen würde dann jeder verlängerte Konditionskontrakt erhalten.
Ergebnis
Für unseren Anwendungsfall reichen jedoch schon die eben gezeigten Zeilen. Versuchen wir nun erneut, einen Kontrakt mit dem Verhandlungsstatus “Keine Verlängerung” zu verlängern. Das System gibt jetzt die hinterlegte Fehlermeldung zurück. Das Ergebnis der Verlängerungssperre sieht in unserem Beispiel so aus: