- 15 Oct 2024
- 3 Minuten zu lesen
- Drucken
- DunkelLicht
- pdf
Prinzip und Technik
- Aktualisiert am 15 Oct 2024
- 3 Minuten zu lesen
- Drucken
- DunkelLicht
- pdf
Mit der Positionsübergreifenden Konfiguration ist es möglich in einer Konfiguration zu prüfen welche Positionen schon im Beleg enthalten sind. Von den Positionen können auch bestimmte Inhalte zur Verfügung gestellt werden damit man auch auf Merkmale in einem Beleg reagieren kann.
Beispiel für eine Positionsübergreifende Konfiguration:
Konfigurationsmodell für Transportkostenberechnung. Wenn dieses Modell erfasst wird dann soll der Konfigurator prüfen welche Modelle bereits im Beleg enthalten sind und wie sich diese auf die Transportkosten auswirken.
ISS.GetPositionData
Mit der ISS-Interface-Methode ISS.GETPOSITIONDATA() können Informationen von anderen Konfigurationen gelesen werden.
ISS.GetPositionData(): Alle Positionen des aktuellen Beleges
ISS.GetPositionData(PosNbr): Angegebene Position des aktuellen Beleges
ISS.GetPositionData(DocTyp,DocNbr): Alle Positionen des angegebenen Beleges
ISS.GetPositionData(DocTyp,DocNbr,PosNbr): Angegebene Position des angegebenen Beleges
Die Interface-Methoden liefern TRUE oder FALSE zurück.
Beim Aufruf einer Interface-Methode innerhalb eines Makros werden Daten aller spezifizierten Positionen in der Variable lPositionList zur Verfügung gestellt und man kann danach im Makro auch bereits darauf zugreifen.
Diese Variable ist eine Liste mit Attributen in welchen Daten der bestehenden Positionen enthalten sind. D.h. je Position gibt es einen Listeneintrag mit den jeweiligen Informationen als Attribut.
Beispiel siehe Screenshot:
Folgende Attribute werden von moveIT ISS+ automatisch zur Verfügung gestellt:
Sichtbare Positionsnummer
Laufende Positionsnummer
Interne Positionsnummer
Parametersystemversion
Eignernummer
Positionstyp
Menge
Einheit
Wert 1
Wert 2
Warenstammmodell
Warenversion
Als Zusätzliches Attribut wird noch „LGlobalVar“ angegeben. Dieses Attribut ist grundsätzlich leer kann jedoch vom Stammdatenentwickler selbst gefüllt werden. D.h. ich kann bei meiner Positionsübergreifenden Konfiguration auch Informationen darüber erhalten welche Farben, Griffe, Gläser, … in meinem Beleg bereits erfasst wurden. Wie diese Daten zur Verfügung gestellt werden siehe nachfolgender Punkt.
Daten der aktuellen Position speichern
Damit die Positionsübergreifende Konfiguration (Bsp.: Transportkostenberechnung) Informationen aus den Konfigurationen bekommt müssen diese Informationen im Makro gespeichert werden.
Dafür wird folgende Variable verwendet:
GLOBALCONFIGVARLIST = ""
Diese Variable ist eine Charaktervariable welche mit dem Trennzeichen „;“ (Semicolon) gefüllt werden muss.
Beispiel:
GLOBALCONFIGVARLIST = FpFarbe + ";" + FpEinbau + ";" + FpGriff
Das Ergebnis wird in die Liste LGlobalVar gespeichert und kann wie folgt aussehen: lGlobalVar = {"RAL9016","G07","Std"}
Diese Einträge werden dann später in der positionsübergreifenden Konfiguration als Listeneinträge zur Verfügung gestellt.
Technisch nicht frei
Eine positionsübergreifende Konfiguration ist von den bestehenden Positionen im Beleg abhängig. Dies hat zur Folge, dass es vorkommen kann, dass diese nicht mehr korrekt ist wenn sich bei den anderen Positionen etwas verändert.
Beispiel: Die Transportkosten errechnen sich aufgrund der bestehenden 10 Positionen. Wird bei einer Position die Größe verändert so kann dies bedeuten, dass die Transportkosten höher werden. Um die technische Korrektheit sicherzustellen wird bei einer Änderung die Position auf „technisch nicht frei“ gestellt
Dies trifft grundsätzlich dann zu:
Es wird eine Position hinzugefügt
Es wird eine Position gelöscht
Erweiterte Überprüfung auf Änderung
Wenn sich innerhalb der Konfiguration etwas ändert dann muss die positionsübergreifende Konfiguration nicht immer auf „technisch nicht frei“ gesetzt werden. Beispiel: bei 2 Positionen werden die Sprossen anders angeordnet. Dies hat jedoch auf die Transportkosten keine Auswirkung.
D.h. grundsätzlich haben Änderungen innerhalb der Konfiguration keine Auswirkung auf den Status der positionsübergreifenden Konfiguration. Der Stammdatenentwickler kann jedoch Ausnahmen dafür angeben. Dies wird in folgender Variable gefüllt:
POSOVERLAPPINGDATAFIELDS = ""
Dies ist eine Charaktervariable welche mit den Attributen der Variable LPOSITIONLIST gefüllt werden muss wo der Stammdatenentwickler möchte, dass sich bei einer Änderung der Status auf „technisch nicht frei“ umstellt.
Folgende Attribute stehen zur Verfügung:
- IntPosNbr: Interne Positionsnummer
- ExtPosNbr: Externe Positionsnummer
- PosType: Positionsart
- HirPnr: Gliederungs-Positionsnummer
- Value1: Wert 1
- Value2: Wert 2
- Quantity: Verkaufsmenge
- QuantityUnit: VK-Mengeneinheit
- OwnId: Stammdateneigner
- WarVrs: Warenversion
- WarModel: Warenmodell
- lGlobalVar: Globale Konfigurationsdaten
Beispiel:
POSOVERLAPPINGDATAFIELDS = "VALUE1, VALUE2, QUANTITY, lGlobalVar"
Bei diesem Beispiel wird die positionsübergreifende Konfiguration auf “technisch nicht frei” gesetzt sobald sich bei Wert 1, Wert 2, Menge oder bei den Konfigurationsdaten der Variable LGlobalVar etwas verändert.
Sonstiges:
Wird der Beleg überrechnet so werden die positionsübergreifenden Konfigurationen zum Schluss überrechnet.
Positionsübergreifende Konfigurationen können nicht abhängig von anderen positionsübergreifenden Konfigurationen sein. Dies wäre eine Endlosschleife und ist deshalb programmtechnisch unterbunden.
Falls PosOverlappingDataFields = "*" so bedeutet dies, dass die Konfiguration abhängig ist von anderen Positionen unabhängig davon welche Positionsdaten bei den anderen Positionen geändert werden.
Positionsarten
Folgende Positionsarten werden bei der positionsübergreifenden Konfiguration nicht berücksichtigt:
- Echte Gliederungspositionen
- Infopositionen
- Alternativpositionen
Die Position, welche gerade konfiguriert wird, wird ebenfalls nicht berücksichtigt!