- 13 May 2024
- 6 Minutes to read
- Print
- DarkLight
- PDF
Technik
- Updated on 13 May 2024
- 6 Minutes to read
- Print
- DarkLight
- PDF
Die Modell-Splittung erfolgt im Splittingmakro der Startmaske. Das Makro spring nach dem Endmakro an. (Präfix 'Spm')
Ein Splittingmakro kann nur für eine Startmaske im VIPA definiert werden und wird vom Konfigurator nur für die Startmaske der Konfiguration ausgeführt, sofern es sich nicht um eine Splitposition handelt! D.h. der Stammdatenentwickler muss im Splittingmakro nicht mehr mit der Makrovariable ISSPLITPOSITION arbeiten.
Makrovariable ModelSplitting
Damit die Modell-Splittung aktiviert ist, muss die Makrovariable ModelSplitting = 1 gesetzt werden. Beim Wert 0 ist die Modell-Splittung deaktiviert. Für diese Makrovariable können dann diverse Attribute definiert werden.
MODELSPLITTING = 1
Modell-Splittungstyp:
Im Splittungsmakro sollen folgende Konstanten für Splittungstyp verwendet werden:
- SYSCONST.SPLITTINGTYPE.MODELSPLITTING
- SYSCONST.SPLITTINGTYPE.MODELADDITION
ModelSplitting
Beim Modell-Splittungstyp ModelSplitting werden die Splitt-Positionen über das bei der Splittung angegebene Kombimodell als Kombimodellpositionen erzeugt. Das ursprünglich erzeugte Modell wird ersetzt durch das Kombimodell und als Gliederungsposition erzeugt. Die Splitt-Positionen werden zu dieser Gliederungsposition (Kombimodell) zugegliedert. Gewisse Daten des ursprünglich zu erfassenden Artikels werden bei der Gliederungsposition in z.B. OffPos.XPrmLst als benannter Wert unter ModelSplittingData gespeichert.
ModelAddition
Beim Modell-Splittungstyp ModelAddition werden die Splitt-Positionen als Zusatzpositionen ganz normal dazu erfasst. D.h. dies erfolgt nicht über ein Kombimodell.
Die Splitt-Positionen werden zur erfassten Position zugegliedert.
Sollte die Konfiguration der erfassten Position geändert werden, dann werden unter Umständen weitere Zusatzpositionen dazu erfasst ohne, dass zuvor die alten Zusatzpositionen gelöscht werden! Dies ist zu beachten!
Modell-Splittungsmodus
Im Splittungsmakro sollen folgende Konstanten für Splittungmodus verwendet werden:
- SYSCONST.SPLITTINGMODUS.INDEPENDENT
- SYSCONST.SPLITTINGMODUS.DEPENDENT
Independent
Splittpositionen sind unabhängig von der Position zu der die Splittpositionen gegliedert werden (= Defaultwert).
Dependent
Splittpositionen sind abhängig von der Position zu der die Splittpositionen gegliedert werden. D.h. Splittpositionen dürfen nicht gelöscht oder geändert werden. (Ausgenommen: LV-Nr. / Bruttopreis / Positionsrabatt)
Modell-Splittungsoptionen
Damit Modell-Splittungsoptionen aktiviert sind, muss die Makrovariable ModelSplitting.SplittingOptions = 1 gesetzt werden. Beim Wert 0 sind die Optionen deaktiviert.
MODELSPLITTING.SPLITTINGOPTIONS = 1
Beispiele:
MODELSPLITTING.SPLITTINGOPTIONS = 1
MODELSPLITTING.SPLITTINGOPTIONS.SPLITTINGTYPE = SYSCONST.SPLITTINGTYPE.MODELSPLITTING
MODELSPLITTING.SPLITTINGOPTIONS.SPLITTINGMODUS = SYSCONST.SPLITTINGMODUS.INDEPENDENT
MODELSPLITTING.SPLITTINGOPTIONS.COMBIMODEL = "Tuer"
MODELSPLITTING.SPLITTINGOPTIONS = 1
MODELSPLITTING.SPLITTINGOPTIONS.SPLITTINGTYPE = SYSCONST.SPLITTINGTYPE.MODELADDITION
MODELSPLITTING.SPLITTINGOPTIONS.SPLITTINGMODUS = SYSCONST.SPLITTINGMODUS.DEPENDENT
MODELSPLITTING.SPLITTINGOPTIONS.COMBIMODEL = "GP"
Daten für die Splittpositionen
Hierfür wird das Array ModelSplitting.SplittingPosition verwendet. Die Array-Dimension muss nicht angegeben werden! Für jede Splittposition können folgende Daten angegeben werden:
- Allgemeine Daten für eine Splittposition
- Antworten für diverse Parameter der Splittposition
- Transferdaten für die Splittposition
Falls ModelSplitting.SplittingPosition(i) = 1, dann ist die i-te Splittposition aktiviert.
Falls ModelSplitting.SplittingPosition(i) = 0, dann ist die i-te Splittposition deaktiviert.
Falls für das Array ModelSplitting.SplittingPosition ein Eintrag i und i+2, jedoch kein Eintrag für i+1 definiert wird, dann werden nur Splittpositionen bis zum i-ten Eintrag berücksichtigt! Dies dient derzeit als Abbruchkriterium, da man beim Interpreter die Dimension eines Array nicht abfragen kann! Sobald der Interpreter nicht mehr verwendet wird, kann das Programm diesbzgl. angepasst werden.
In folgendem Beispiel sind 3 Splittpositionen definiert und aktiviert:
ModelSplitting.SplittingPosition(1) = 1
ModelSplitting.SplittingPosition(2) = 1
ModelSplitting.SplittingPosition(3) = 1
usw.
Allgemeine Daten für eine Splittposition
Variable | Datentyp | Beschreibung |
ModelSplitting.SplittingPosition(1).Owner | Integer | Eigner der Splittposition; falls kein Stammdateneigner angegeben wird, dann wird als Stammdateneigner der Stammdateneigner der Position verwendet, welche die Modell-Splittung auslöst |
ModelSplitting.SplittingPosition(1).Model | String | Warenmodel der Splittposition; Pflichtfeld! |
ModelSplitting.SplittingPosition(1).Quantity | Decimal | VK-Menge der Splittposition; Optional, ansonsten wird Menge 1 verwendet |
ModelSplitting.SplittingPosition(1).QuantityUnit | String | VK-Mengeneinheit der Splittposition; Optional, ansonsten wird die Einheit Stk verwendet |
ModelSplitting.SplittingPosition(1).Value1 | String | Wert 1 für die Splittposition; Optional |
ModelSplitting.SplittingPosition(1).Value2 | String | Wert 2 für die Splittposition; Optional |
ModelSplitting.SplittingPosition(1).AnswerLevel | String | Konfigurationsebene (Antwortebene) dessen Antworten (der Position, welche die Splittung auslöst) bei der Konfiguration der Splittposition verwendet werden sollen; Optional |
ModelSplitting.SplittingPosition(1).BackgroundCalculation | 0/1 | 1 (Defaultwert)... Splittposition soll im Hintergrund konfiguriert werden; 0... Splittposition soll im Vordergrund konfiguriert werden; Optional |
Antworten für diverse Parameter der Splittposition
Für Frageparameter der Splittposition kann man Antwortwerte definieren. Hierfür wird das Array ModelSplitting.SplittingPosition(i).MaskParameter verwendet (für die i-te Splitposition). Die Array-Dimension muss nicht angegeben werden!
Variable | Datentyp | Beschreibung |
ModelSplitting.SplittingPosition(i).MaskParameter(j) | String | Name des Frageparameters für die i-te Splittposition und den j-ten Frageparameter |
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(1) = "FpParam1"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(2) = "FpParam2"
usw.
Für die Angabe eines Antwortwertes für Frageparameter stehen 2 Varianten zur Verfügung, wobei aber beide Varianten auch miteinander kombiniert werden können.
Variante 1:
Variable | Datentyp | Beschreibung |
ModelSplitting.SplittingPosition(i).MaskParameter(j).AnswerValue | String, Numerisch | Angabe eines numerischen Antwortwertes (Integerwert oder Dezimalwert im amerikanischen Format) oder eines alphanumerischen Antwortwertes für den j-ten Frageparameter der i-ten Splitposition. Der Datentyp hängt vom Datentyp des Frageparameters ab! |
Variante 2:
Definition eines Arrays ModelSplitting.SplittingPosition(i).MaskParameter(j).Answer für Antworten eines Frageparameters (Die Array-Dimension muss nicht angegeben werden!).
Variable | Datentyp | Beschreibung |
ModelSplitting.SplittingPosition(i).MaskParameter(j).Answer(k) | String, Numerisch | Angabe eines numerischen Antwortwertes (Integerwert oder Dezimalwert im amerikanischen Format) oder eines alphanumerischen Antwortwertes für die k-te Antwort des j-ten Frageparameters der i-ten Splitposition. Der Datentyp hängt vom Datentyp des Frageparameters ab! |
ModelSplitting.SplittingPosition(i).MaskParameter(j).Answer(k).Mask | String | Fragemodell der Splitposition für welche die Antwort definiert ist. Optional |
ModelSplitting.SplittingPosition(i).MaskParameter(j).Answer(k).Level | String | Antwortebene (Konfigurationsebene) der Splitposition für welche die Antwort definiert ist. Optional. Anmerkung: Level wird derzeit aber noch nicht berücksichtigt! |
Beispiel:
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(1).ANSWERVALUE = "AnswerValue1"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(1).ANSWER(1) = "AnswerValue2"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(1).ANSWER(1).LEVEL = "001"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(1).ANSWER(1).MASK = "FmMask1"
usw.
Ermittlung des Antwortwertes eines Frageparameters bei der Konfiguration einer Splittposition
Sind bei der Modell-Splittung für eine Splittposition Antworten für einen Frageparameter definiert (mittels Variante 1 und/oder Variante 2), dann wird bei der Konfiguration der Splittposition der Antwort für den Frageparameter nach folgendem Schema ermittelt:
- Prio 1: MaskParameter + Mask + Level (wird derzeit aber noch nicht berücksichtigt!)
- Prio 2: MaskParameter + Level (wird derzeit aber noch nicht berücksichtigt!)
- Prio 3: MaskParameter + Mask
- Prio 4: MaskParameter
Transferdaten für die Konfiguration der Splittposition
Bei der Modellsplittung kann der Stammdatenentwickler pro Splittposition numerische und alphanumerische Daten definieren, welche dann im Vorschlagsmakro der Startmaske der Splittposition zur Verfügung stehen.
Falls ModelSplitting.SplittingPosition(i).SplittingTransferData = 1, dann sind die Transferdaten für die i-te Splittposition aktiviert, beim Wert 0 sind sie deaktiviert. Für ModelSplitting.SplittingPosition(i).SplittingTransferData können dann vom Stammdatenentwickler beliebig viele Attribute mit numerischen und alphanumerischen Werten definieren. Dezimalwerte müssen im amerikanischen Format angegeben werden!
Beispiel:
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA = 1
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA.StringData1 = "LPU42-1"
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA.StringData2 = "LPU42-2"
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA.DecimalData1 = 1.234
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA.IntegerData1 = 145
Bei der Konfiguration einer Splittposition werden dann alle für die Splittposition definierten Transferdaten unmittelbar vor der Ausführung des Vorschlagsmakros (INM-Makro) der Startmaske der Konfiguration in der Variablentabelle als Attribute der Makrovariable SplittingTransferData gespeichert. Im Vorschlagsmakro der Startmaske kann man dann somit auf diese Daten zugreifen.
Beispiel (Auszug aus der Variablentabelle):
SplittingTransferData = 1
StringData1 = "LPU42-1"
StringData2 = "LPU42-2"
DecimalData1 = 1.234
IntegerData1 = 145
Beispiele für Splittingmakros
1. Beispiel
MODELSPLITTING = 1
! Optionen für die Modellsplittung
MODELSPLITTING.SPLITTINGOPTIONS = 1
MODELSPLITTING.SPLITTINGOPTIONS.SPLITTINGTYPE = SYSCONST.SPLITTINGTYPE.MODELSPLITTING
MODELSPLITTING.SPLITTINGOPTIONS.SPLITTINGMODUS = SYSCONST.SPLITTINGMODUS.INDEPENDENT
MODELSPLITTING.SPLITTINGOPTIONS.COMBIMODEL = "Tuer"
! Splittposition 1
MODELSPLITTING.SPLITTINGPOSITION(1) = 1
! Allgemeine Daten der Splitposition
MODELSPLITTING.SPLITTINGPOSITION(1).OWNER = 176
MODELSPLITTING.SPLITTINGPOSITION(1).MODEL = "B501033712"
MODELSPLITTING.SPLITTINGPOSITION(1).QUANTITY = P_MENGE
MODELSPLITTING.SPLITTINGPOSITION(1).QUANTITYUNIT = "Stk"
MODELSPLITTING.SPLITTINGPOSITION(1).ANSWERLEVEL ="001"
!MODELSPLITTING.SplittingPosition(1).BackgroundCalculation = 1
! Antworten für Parameter
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(1) = "FpFolgemaske"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(1).ANSWERVALUE = "DT"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(2) = "FpModell"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(2).ANSWERVALUE = "501"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(3) = "FpDrehtuertyp"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(3).ANSWERVALUE = 1
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(4) = "FpMassangabe"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(4).ANSWERVALUE = "GM"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(5) = "FpHelpSplitt"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(5).ANSWERVALUE = "Geh"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(6) = "FpBreite"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(6).ANSWERVALUE = 584
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(7) = "FpHelpAnlage"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(7).ANSWERVALUE = "Anlage"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(8) = "FpHelpDicke"
MODELSPLITTING.SPLITTINGPOSITION(1).MASKPARAMETER(8).ANSWERVALUE = "8"
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA= 1
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA.StringData1 = "LPU42-1"
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA.StringData2 = "LPU42-2"
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA.DecimalData1 = 1.234
MODELSPLITTING.SPLITTINGPOSITION(1).SPLITTINGTRANSFERDATA.IntegerData1 = 145
! Splittposition 2
MODELSPLITTING.SPLITTINGPOSITION(2) = 1
! Allgemeine Daten der Splittposition
MODELSPLITTING.SPLITTINGPOSITION(2).OWNER = 176
MODELSPLITTING.SPLITTINGPOSITION(2).MODEL = "B501033712"
MODELSPLITTING.SPLITTINGPOSITION(2).QUANTITY = P_MENGE
MODELSPLITTING.SPLITTINGPOSITION(2).QUANTITYUNIT = "Stk"
MODELSPLITTING.SPLITTINGPOSITION(2).ANSWERLEVEL = "001"
MODELSPLITTING.SPLITTINGPOSITION(2).BACKGROUNDCALCULATION = 0
! Antworten für Parameter
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(1) = "FpFolgemaske"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(1).ANSWERVALUE = "DT"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(2) = "FpModell"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(2).ANSWERVALUE = "501"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(3) = "FpDrehtuertyp"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(3).ANSWERVALUE = 1
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(4) = "FpMassangabe"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(4).ANSWERVALUE = "GM"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(5) = "FpHelpSplitt"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(5).ANSWERVALUE = "Stand"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(6) = "FpBreite"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(6).ANSWERVALUE = 350
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(7) = "FpHelpAnlage"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(7).ANSWERVALUE = "Anlage"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(8) = "FpHelpDicke"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(8).ANSWERVALUE = "8"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(9) = "FpDIN"
MODELSPLITTING.SPLITTINGPOSITION(2).MASKPARAMETER(9).ANSWERVALUE = "L"
! Transferdaten für Splittposition
MODELSPLITTING.SPLITTINGPOSITION(2).SPLITTINGTRANSFERDATA = 1
MODELSPLITTING.SPLITTINGPOSITION(2).SPLITTINGTRANSFERDATA.StringData1 = "LPU42-1"
MODELSPLITTING.SPLITTINGPOSITION(2).SPLITTINGTRANSFERDATA.StringData2 = "LPU42-2"
! Splittposition 3
MODELSPLITTING.SPLITTINGPOSITION(3) = 1
! Allgemeine Daten der Splittposition
MODELSPLITTING.SPLITTINGPOSITION(3).OWNER = 0
MODELSPLITTING.SPLITTINGPOSITION(3).MODEL = "KF310-1"
!MODELSPLITTING.SplittingPosition(3).Quantity = 1 !MODELSPLITTING.SplittingPosition(3).QuantityUnit = "Stk"
MODELSPLITTING.SPLITTINGPOSITION(3).VALUE1 = "1000"
MODELSPLITTING.SPLITTINGPOSITION(3).VALUE2 = "1100"
MODELSPLITTING.SPLITTINGPOSITION(3).BACKGROUNDCALCULATION = 0
! Antworten für Parameter
MODELSPLITTING.SPLITTINGPOSITION(3).MASKPARAMETER(1) = "Stocksystem"
MODELSPLITTING.SPLITTINGPOSITION(3).MASKPARAMETER(1).ANSWERVALUE = "NR"
2. Beispiel
MODELSPLITTING = 1
! Optionen für die Modellsplittung
MODELSPLITTING.SPLITTINGOPTIONS = 1
MODELSPLITTING.SPLITTINGOPTIONS.SPLITTINGTYPE = SYSCONST.SPLITTINGTYPE.MODELSPLITTING
MODELSPLITTING.SPLITTINGOPTIONS.SPLITTINGMODUS = SYSCONST.SPLITTINGMODUS.INDEPENDENT
MODELSPLITTING.SPLITTINGOPTIONS.COMBIMODEL = "GP"
! Splitposition 1
MODELSPLITTING.SPLITTINGPOSITION(1) = 1
!MODELSPLITTING.SplittingPosition(1).Owner = 37
MODELSPLITTING.SPLITTINGPOSITION(1).MODEL = "LPU42"
!MODELSPLITTING.SplittingPosition(1).Quantity = 1 !MODELSPLITTING.SplittingPosition(1).QuantityUnit = "Stk"
MODELSPLITTING.SPLITTINGPOSITION(1).VALUE1 = "2000"
MODELSPLITTING.SPLITTINGPOSITION(1).VALUE2 = "2125"
MODELSPLITTING.SPLITTINGPOSITION(1).ANSWERLEVEL = "001"
!MODELSPLITTING.SplittingPosition(1).BackgroundCalculation = 1
! Splittposition 2
MODELSPLITTING.SPLITTINGPOSITION(2) = 1
! Allgemeine Daten der Splitposition !MODELSPLITTING.SplittingPosition(2).Owner = 37
MODELSPLITTING.SPLITTINGPOSITION(2).MODEL = "4510307"
!MODELSPLITTING.SplittingPosition(2).Quantity = 1 !MODELSPLITTING.SplittingPosition(2).QuantityUnit = "Stk" !MODELSPLITTING.SplittingPosition(2).BackgroundCalculation = 1
! Splittposition 3
MODELSPLITTING.SPLITTINGPOSITION(3) = 1
!MODELSPLITTING.SplittingPosition(3).Owner = 37
MODELSPLITTING.SPLITTINGPOSITION(3).MODEL = "435210"
!MODELSPLITTING.SplittingPosition(3).Quantity = 1 !MODELSPLITTING.SplittingPosition(3).QuantityUnit = "Stk" !MODELSPLITTING.SplittingPosition(3).BackgroundCalculation = 1