Im Transportation Management Bedingungen setzen und Stolperfallen vermeiden
Automatisierung und Flexibilität im Transportmanagement sind essenziell, denn manuelle Prozesse kosten Zeit und Zeit ist bekanntlich Geld. Entscheidungen treffen ist einer der vielen Prozesse im Transportmanagement, welche man durch Automatisierung zum einen standardisieren und zum anderen beschleunigen möchte. Beispielsweise, wenn entschieden werden soll, welche Frachtvereinbarung in Abhängigkeit von Einkaufsorganisation, Spediteur, Transportmittel usw. genutzt werden soll. Ein Weg, um zugleich Automatisierung und Flexibilität zu realisieren, ist die Verwendung von Entscheidungstabellen und Bedingungen über das Fiori-Launchpad.
So legen Sie Bedingungsdefinitionen an
Einer der vielen Vorteile von Bedingungen: Es entfallen zusätzliche Programmierungen und auf neue Situationen kann durch Anpassung oder Erweiterung der Konfiguration schnell reagiert werden, ohne dass Entwicklungsfähigkeiten benötigt werden. Die Einsatzgebiete sind dabei vielfältiger Natur. Überall, wo auf Basis von Wenn-Dann-Formulierungen, durch Festlegung einzelner Selektionswerte oder Ausschluss bestimmter Werte oder ganzer Wertebereiche Prozessentscheidungen getroffen werden sollen und sich diese Bedingungswerte in einem dynamischen Wandel befinden können, kann die Verwendung von Entscheidungstabellen einen enormen Vorteil im Hinblick auf Flexibilität, aber auch Vereinfachung für den Kunden verschaffen.
Um eine Bedingungsdefinition im SAP TM anzulegen, öffnet man über das SAP-Fiori-Launchpad den Bedingungen-Arbeitsvorrat. Von dort aus kann man neue Bedingungen anlegen oder bestehende Bedingungen anpassen.
Datenzugriffsdefinition als Basis
Haben Sie die Datenzugriffsdefinition eingerichtet, beginnt der interessante Teil der Bedingungsdefinition – die Kombination der Werte (Include/Exclude), welche zu bestimmten Ergebnissen führen. Wichtig ist hier zu wissen, dass es neben den Include-Bedingungen auch Exclude-Bedingungen gibt. Es können also sowohl Werte eingeschlossen oder ausgeschlossen werden. Das ist bereits von den Selektionsoptionen in SAP-ABAP-Dynpro-Feldern bekannt. Doch ein Fallstrick ist, dass im Standard zunächst nur Includes angelegt werden können und erst auf dem zweiten Blick die Exludes verfügbar sind:
Die Stolperfallen
Anwendungsfall: Abrechnung Vereinbarungsermittlung
In unserem Beispiel soll anhand mehrerer Werte eine Frachtvereinbarung gefunden werden, die für die Kostenermittlung genutzt wird. Konkret soll für den Spediteur 519862 mit dem Transportmittel Z001 eine Frachtvereinbarung für einen Frachtauftrag gefunden werden, der nur Material der Frachtgruppe MOLKEREI beinhaltet.
Doch durch eine fehlerhafte gestellte Bedingung wurde immer die falsche Vereinbarung ermittelt. Anhand dieser können wir gut verschiedene Stolperfallen, wie das Problem mit der Logik und warum es eine Fehlermeldung gibt, erklären: Es wurden nämlich gar keine Frachtkosten ermittelt.
Die fehlerhafte Bedingung
Bedingungen werden immer sequenziell abgearbeitet!
- Bedingungen werden also von oben nach unten so lang durchlaufen, bis eine Bedingung erfüllt ist. Daher kann die Reihenfolge sehr entscheidend sein. Im Beispiel oben darf die letzte Zeile nicht an erster Stelle, da alle Frachtaufträge diese Bedingung erfüllen, weil es schlicht egal ist, welche Werte dieser Frachtauftrag hat.
Jede Wert-Spalte ist durch ein UND verbunden!
- Hier bewegen wir uns schon in der Aussagenlogik. Es müssen immer alle Werte einer Zeile erfüllt sein, damit die Bedingung erfüllt ist.
Eine Zeile wird also wie folgt gelesen:
- Wenn die Einkaufsorganisation = 0020 ist
- UND der Transportdienstleister 0000519862 ist
- UND das Land = DE ist
- UND irgendein Transportmittel (also egal welches)
- UND irgendeine Materialfrachtgruppe
- UND irgendeine Avisierte Menge
- UND irgendein Auftragsgrund
- UND irgendeine Belegart…
… dann gilt die Vereinbarung 8100000005.
Achtung: auch hier gibt es Stolperfallen
Stolperfallen gibt es im Bereich Bedingungen und Aussagenlogik eine Menge. Die einfachen sind, dass man sich verschrieben hat, dass man falsche Werte eingetragen hat oder dass man zu viele Werte eingetragen hat, die die Erfüllung der Bedingung verhindern. Doch es gibt noch weitere Fallstricke, die man auf den ersten Blick leicht übersieht.
Beginnen wir bei der ersten Stolperfalle: Der Frachtauftrag hat die benötigten Werte eingetragen, die Bedingung wird ausgewertet und es wird die Vereinbarung 8100000005 gefunden. Trotzdem findet keine Berechnung statt – die Frachtkosten können nicht ermittelt werden. Hier liegt der nicht sichtbare Fehler in der gefundenen Vereinbarung bzw. in der dahinterliegenden Tarifpreistabelle.
Diese gilt ausschließlich für die Materialfrachtgruppe HMILCH. Das heißt: die Bedingung wurde dahingehend falsch konfiguriert, dass die Materialfrachtgruppe nicht entsprechend eingegrenzt wurde. Wenn die Vereinbarung sowieso nur für HMILCH gilt, dann muss diese Information ebenfalls eingetragen werden.
Nach der Korrektur dieses Fehlers gelangen wir schon zum nächsten Stolperstein, denn wir bekommen den nächsten falschen Wert ausgespuckt – Vereinbarung 8100000009. Wir wollten doch eine Bedingung, in der das Transportmittel weder Z001 noch Z002 ist.
Logik hinter den Bedingungen
In Abbildung „die fehlerhafte Bedingung“ markiert Punkt 2 den Fehler. Sichtbar für das Logikauge wird er aber erst, wenn man ihn bearbeitet.
Ein logisches ODER ist eine Disjunktion, logisches UND ist eine Konjunktion. Wir müssen nicht darüber diskutieren, dass der Begriff „ODER-Verknüpfung“ einfacher ist, aber Wissenschaft zeichnet sich manchmal dadurch aus, dass man möglichst komplizierte Begriffe verwendet, um mit diesen zu sagen, dass eigentlich alles ganz einfach ist.
Das Bild verdeutlicht aber gut das Problem unserer obigen Bedingung. Es gilt, dass das Transportmittel „nicht gleich Z001 oder nicht gleich Z002“ sein darf. Als Logiktabelle visualisiert, wird auch sichtbar, wo das Problem liegt, wenn ein Transportmittel tatsächlich Z001 ist und warum dann die Bedingung dennoch erfüllt ist.
In der folgenden Darstellung wird noch das NICHT als Spalte dargestellt. Das NICHT bedeutet eine Umkehr des Wahrheitswertes. Also wenn das Transportmittel gleich Z001 ist, dann ist der Ausdruck „NICHT Z001“ falsch. Das Ergebnis eines Ausdrucks steht dann in der Verknüpfungsspalte – hier ODER als graue Spalte. Also aus der weißen Spalte wird der Wert in der gelben Spalte negiert und die Verknüpfung aus beiden gelben Spalten steht in der grauen Spalte:
Zu lesen ist das dann erklärt an der dritten Zeile:
- Wenn Z001 Wahr, dann ist NICHT Z001 Falsch.
- Wenn Z002 Falsch, dann ist NICHT Z002 Wahr.
Wenn also NICHT Z001 Falsch ODER NICHT Z002 wahr, dann ist der Ausdruck auch wahr – denn es muss eins von beiden wahr sein, damit der ganze Ausdruck wahr ist.
Die Lösung
Wie kann man ein solches Problem in den Bedingungen nun verhindern? Auch hier kommt die Logik ins Spiel, und zwar in Form der „De Morganschen Regel“:
- nicht (a und b) ist äquivalent zu ((nicht a) oder (nicht b)), sowie nicht (a oder b) ist äquivalent zu ((nicht a) und (nicht b))
In unserem Beispiel wollen wir genau letztere Regel abedecken: „Nicht Z001“ und „Nicht Z002“. Das ODER-Äquivalent dazu ist also „NICHT (Z001 ODER Z002)“. Das bedeutet, wir müssen statt eines Ausdrucks wie „NICHT Z001“ einzuschließen einfach einen Ausdruck wie „Z001“ ausschließen. Denn dann funktioniert die ODER-Regel wie gewünscht.
Der Ausdruck ist nur dann wahr, wenn weder Z001 noch Z002 gesetzt sind.
Umsetzung der Lösung
Um nun diese Lösung umzusetzen, erinnern wir uns an die Möglichkeit, Excludes und Includes einzufügen. Dies geschieht wie bereits erwähnt über einen Umweg. Wir wählen zunächst die „Direkte Werteingabe“. Im Anschluss wählen wir Ändern und „Exclude-Bedingung“ einfügen. Das ist dahingehend etwas umständlich, da die Include-Bedingung zunächst stehen bleibt, wird jedoch gleich wieder gelöscht. Dann ist das gewünschte Ergebnis sichtbar: das “nicht”, das die Exclude-Bedingung kennzeichnet.
Wir fügen noch eine zweite Exclude-Bedingung hinzu und bestücken sie mit „ist gleich“ Z001 oder „ist gleich“ Z002. Denn wir wollen ja sagen: „nicht“ (gleich Z001 oder gleich Z002) – siehe Abbildung „Umgeformte Logiktabelle“. Man muss also quasi umgekehrt denken, denn das „nicht” steht außerhalb der gedachten Klammer.
Wir sind für Sie da!
Mit richtig gesetzten Bedingungen können Sie in SAP S/4HANA TM viele Schritte im Bereich Transportprozesse, -vergabe oder Frachtkostenberechnung vereinfachen. Es lohnt sich, dabei tiefer in das Thema Aussagenlogik einzusteigen. Konnten wir Ihr Interesse wecken oder haben Sie Fragen? Wenden Sie sich gerne an uns unter blog@leogistics.com.
Silvio Funke
Senior Technical Consultant SAP Logistics