Technik
  • 13 May 2024
  • 6 Minutes to read
  • Dark
    Light
  • PDF

Technik

  • Dark
    Light
  • PDF

The content is currently unavailable in English. You are viewing the default German version.
Article summary

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


Was this article helpful?

What's Next