Mit diesem Formular können Sie fehlende, unklare oder fehlerhafte Inhalte in der Dokumentation melden und Verbesserungsvorschläge machen. Ihr Feedback hilft uns, die Qualität und Vollständigkeit kontinuierlich zu verbessern.
Liefervorschlag
Der Liefervorschlag soll die Frage "Was kann momentan, mit dem aktuellen Lagerbestand, geliefert werden?" beantworten und bei der sinnvollen Erstellung von Warenausgängen helfen. Dazu wird eine angepasste Form der unitop Verfügbarkeitsberechnung verwendet. Das Modul umfasst außerdem eine Funktion zum verdichten von Warenausgängen.
Konzept
Der Liefervorschlag basiert auf der Verfügbarkeitsberechnung. Da beim Liefervorschlag die physisch verfügbaren Bestände relevant sind, werden bei dieser Form der Verfügbarkeitsberechnung die Zugänge nicht berücksichtigt. Im Ergebnis sind also genau die Belegzeilen verfügbar, die für den Liefervorschlag relevant sind. Diese Belegzeilen werden anschließend in Liefervorschlagszeilen umgewandelt und fest in einer Buch.-Blatt-Struktur (im Folgenden einfach "Liefervorschlag") gespeichert. Aus dem Liefervorschlag heraus lassen sich dann, den Liefervorschlagszeilen entsprechend, gesammelt Warenausgänge erstellen.
Da für die unterschiedlichen Belegarten im Liefervorschlag immer gleichartige Funktionen benötigt werden, diese sich jedoch in ihrer Implementierung abhängig von der Belegart unterscheiden können, wurden diese Funktionen durch ein Interface abstrahiert. Dadurch wird erreicht, dass die Kernlogik des Liefervorschlags generisch bleiben kann und die belegspezifischen Besonderheiten jeweils in einer eigenen Implementierung gekapselt werden können.
Hinweis
Der Liefervorschlag ist nur für die Belegarten Verkaufsauftrag und Umlagerungsauftrag implementiert. Zusätzliche Belegarten können durch Erweiterung des Interfaces hinzugefügt werden.
Erstellung Liefervorschlag
Nach der Verfügbarkeitsberechnung müssen zunächst die Verfügbarkeitsposten zu Belegzeilen ausgewählt werden, die für den Liefervorschlag in Frage kommen.
Involvierte Methoden
Die Auswahl der Belegzeilen ist aufgeteilt in Belegköpfe und Belegzeilen: Nur wenn der Belegkopf für den Liefervorschlag in Frage kommt, werden die Zeilen überprüft und gegebenenfalls als Liefervorschlagszeile eingefügt.
Ablauf Erstellung Liefervorschlag
Belegköpfe
Folgende Bedingungen müssen erfüllt sein, damit die Zeilen eines Belegkopfes in den Liefervorschlag aufgenommen werden:
- Komplettlieferung: Beleg muss vollständig verfügbar sein
- Teillieferung: Beleg muss mindestens teilweise verfügbar sein
- Belegspezifische Bedingungen:
- Verkaufsauftrag
- Freigabestatus: Freigegeben
- Debitor nicht gesperrt
- Umlagerungsauftrag
- Freigabestatus: Freigegeben
- Verkaufsauftrag
Belegzeilen
Folgende Bedingungen müssen erfüllt sein, damit eine Belegzeile in den Liefervorschlag aufgenommen wird:
- Bedingungen für den Belegkopf
- keine Direktlieferung
- Artikel nicht gesperrt
- Kein Warenausgang vorhanden
- Keine Lageraktivität vorhanden
- Komplettlieferung: Zeile muss vollständig verfügbar sein
- Teillieferung: Zeile muss mindestens teilweise verfügbar sein
Warenausgangserstellung
Aus den im vorherigen Schritt erstellten Liefervorschlagszeilen lassen sich Warenausgänge erstellen. Die Warenausgangserstellung findet über die Business Central Standardlogik statt, die für die Bedürfnisse des Liefervorschlags über Event Subscriber angepasst wurde. Die Einstiegsfunktion kann mit einer gefilterten Auswahl von Liefervorschlagszeilen aufgerufen werden.
Involvierte Methoden
Ablauf Warenausgangserstellung
Vorbereitung
Zunächst findet eine Prüfung der Liefervorschlagszeilen statt. Die zu liefernde Gesamtmenge der ausgewählten Liefervorschlagszeilen muss größer als Null sein. Außerdem müssen im Falle einer Komplettlieferung alle Zeilen vom Typ "Artikel" des Beleges in der Auswahl vorhanden sein. Abschließend wird noch das Buchungsdatum, jedes in der Auswahl vorhandenen Beleges, auf den aktuellen Arbeitstag gesetzt, wenn dieses Datum in der Vergangenheit liegt.
Ausschluss von Erwarteten Lagerbewegungen
Im nächsten Schritt werden all jene Erwarteten Lagerbewegungen vom Warenausgang ausgeschlossen, die
- mit diesem Warenausgang sonst automatisch als NICHT lieferbar markiert würden
- in der Belegzeile schon abgeschlossen sind
- außerdem werden leere Zeilen herausgefiltert, die sonst dafür sorgen würden, dass nicht genügend Daten für die Warenausgangserstellung vorhanden wären.
Verdichtung der Warenausgänge
Im Anschluss werden bestehende, offene, zum Beleg passende Warenausgänge gesucht. Hier findet, abhängig von der Einrichtung, ein Verdichten von Warenausgängen statt. Nachdem alle bestehenden offenen Warenausgänge überprüft wurden, werden neue Warenausgänge für alle Belege erzeugt, die bisher keinem bestehenden Warenausgang hinzugefügt werden konnten.
Als zusätzliche, optionale Information, werden Standardkommentare für die Belegarten Verkaufsauftrag und Umlagerungsauftrag aus den jeweiligen Stammdaten (Debitor bzw. Lagerort) erstellt.
Automatische Warenausgangserstellung über Batchverarbeitung
Die Warenausgangserstellung kann auch als Batchverarbeitung mit dem Report "Stapelverarbeitung Warenausgänge erstellen" durchgeführt werden.
Involvierte Methoden
Der Report führt zunächst für jeden Verkaufsauftrag in der Filterung Prüfungen aus der Business Central Standardlogik aus, um zu ermitteln, ob überhaupt ein Warenausgang erstellt werden kann. Wenn ein Warenausgang grundsätzlich erzeugt werden kann, wird als Nächstes geprüft, ob die Warenausgänge über die Standardlogik oder über den Liefervorschlag erstellt werden müssen. Dies ist abhängig von der Verfügbarkeitseinrichtung des Lagerortes der zum Beleg gehörenden Erwarteten Lagerbewegung. Im Falle der Standardlogik wird diese ohne weitere Anpassungen ausgeführt und die Verarbeitung ist abgeschlossen. Für die Verarbeitung über den Liefervorschlag werden die Erwarteten Lagerbewegungen an dieser Stelle nur gesammelt.
Verarbeitung über den Liefervorschlag
Die Verarbeitung über den Liefervorschlag ist ein zweiteiliger Prozess.
Für jede zuvor gesammelte Erwartete Lagerbewegung wird, gefiltert auf ihren jeweiligen Lagerort, der Liefervorschlag erstellt. Um unnötige Erstellungen des Liefervorschlags zu vermeiden, wird der Liefervorschlag pro Lagerort nur einmal erstellt. Die Liefervorschlagszeilen werden unter dem Liefervorschlagsvorlagennamen/Liefervorschlagsnamen-Kombination gespeichert, die auf der Request Page eingegeben wurden.
Im zweiten Schritt werden die Warenausgänge erstellt. Die Warenausgangserstellung erfolgt dabei gruppiert nach Lagerort, damit alle erstellten Liefervorschlagszeilen abgearbeitet werden, bevor der Liefervorschlag für den nächsten Lagerort berechnet wird. Es wird dieselbe Logik wie beim manuellen Prozess verwendet und die Warenausgänge werden immer für alle Liefervorschlagszeilen eines gesamten Beleges gleichzeitig erstellt.
Verdichten von Warenausgängen
Bei der Erstellung von Warenausgängen kann eine Verdichtung stattfinden. Das bedeutet, dass mehrere Warenausgänge für denselben Debitoren zu einem einzelnen Warenausgang zusammengefasst werden, damit mehrere Aufträge nicht als Einzellieferungen abgewickelt werden.
Hinweis
Das Verdichten von Warenausgängen ist ausschließlich für Verkaufsaufträge implementiert.
Involvierte Methoden
Damit Warenausgänge verdichtet werden müssen folgende Bedingungen gegeben sein:
- Belegart Verkaufsauftrag
- Debitor hat Kennzeichen "Warenausgänge verdichten gesetzt"
- Passender, offener Warenausgang vorhanden
Um zwei Warenausgänge zusammenzufassen müssen folgende Felder der Herkunftsbelege dieselben Werte aufweisen:
- "Sell-to Customer No."
- "Ship-to Code"
- "Shipping Agent Code"
- "Shipping Agent Service Code"
- "Shipment Method Code"
- "Ship-to Address"
- "Ship-to Address 2"
- "Ship-to City"
- "Ship-to Contact"
- "Ship-to Country/Region Code"
- "Ship-to County"
- "Ship-to Name"
- "Ship-to Name 2"
- "Ship-to Post Code"
Diese Feldwerte werden bei der Erstellung eines Warenausgangskopfes aus einem für die Verdichtung in Frage kommenden Beleg zu einem String (Aggregationsfilterkriterium) verkettet und im Warenausgangskopf gespeichert. Falls mehrere Belege in einem Warenausgang gesammelt werden, so zählt hierfür die Erstellung des Aggregationsfilterkriteriums der Beleg zu dem die Erwartete Lagerbewegung gehört, die bei der initialen Erstellung des Warenausgangskopfes herangezogen wird. Bei einem Versuch, für einen Beleg einen passenden Warenausgang zu finden gilt folgendes Vorgehen:
- Aggregationsfilterkriterium des Beleges generieren
- Warenausgangsköpfe auf Aggregationsfilterkriteriums des Beleges filtern
FindLast()auf Warenausgangsköpfe im Filter
Erweiterbarkeit
Durch die Verwendung eines Interfaces für die belegspezifischen Methoden, lässt sich der Liefervorschlag mit minimalem Aufwand um weitere Belegarten erweitern. Dies gilt nur für Belegarten, die bereits in der Verfügbarkeitsberechnung berücksichtigt werden. Anderenfalls muss zuvor die Verfügbarkeitsberechnung um die betreffende Belegart erweitert werden, da sich die Berechnung des Liefervorschlages auf die Verfügbarkeitsberechnung stützt.
Bei der Erweiterung des Enums ist darauf zu achten, dass für eine Belegart in Verfügbarkeitsberechnung und Liefervorschlag jeweils dasselbe Ordinal verwendet wird.
Abgesehen vom Interface, bei dem fachliche Unterschiede zum Tragen kommen können, können alle anderen Anpassungen komplett analog zur bereits vorhandenen Implementierung umgesetzt werden.
| Objekt | Methode/Event | Anpassung |
|---|---|---|
interface "GOB Ship. Proposal Handler Interface" |
alle Methoden implementieren | |
enum 5021650 "GOB Ship. Prop. Handler Type" |
Erweiterung um Belegart; WICHTIG: value aus enum 5021579 "GOB Availability Data Type" kopieren |
|
codeunit 5320638 "GOB Shipment Proposal Library" |
OnMapDocumentLineToHeaderTableNo_NewDocumentType |
ggfs. Ergänzung Zuordnung Belegkopf - Belegzeile |
codeunit 5320386 "GOB EIP Create Whse. Shipment" |
OnBeforeCreateWhseShipmentPerDocument |
manuelles Binding der Subscriber für folgende Events |
codeunit 5752 "Get Source Doc. Outbound" |
OnAfterFindWarehouseRequestFor<DocumentType> |
analog vorhandene Subscriber in "GOB EIP GetSrcDocOutbnd Ext." |
report 5753 "Get Source Documents" |
OnBefore<DocumentLine>OnAfterGetRecord |
analog vorhandene Subscriber in "GOB EIP GetSrcDocOutbnd Ext." |
codeunit 5750 "Whse.-Create Source Document" |
OnBeforeCreateShptLineFrom<DocumentLine> |
analog vorhandene Subscriber in "GOB EIP GetSrcDocOutbnd Ext." |