Prinzip und Technik
  • 15 Oct 2024
  • 3 Minuten zu lesen
  • Dunkel
    Licht
  • pdf

Prinzip und Technik

  • Dunkel
    Licht
  • pdf

Artikel-Zusammenfassung

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!


War dieser Artikel hilfreich?