Über Formeln können Bedingungen hinterlegt werden, welche zu einem bestimmten Ergebnis führen. Es wird empfohlen, Operatoren und Variablen mit jeweils einer Leerstelle voneinander zu trennen.
Bei Sachmerkmalen mit einer in der Definition hinterlegten Mengeneinheit ist zu beachten, dass diese Sachmerkmale automatisch numerisch und nur in dieser Mengeneinheit verwendet werden. Werte aus dem Artikelstamm mit abweichender Mengeneinheit werden umgerechnet.
Definitionen
Sonderzeichen, ggf. variabel einstellbar per Vorlauftabelle VRLU18 (Verwendung Formelkennungen):
Sonderzeichen für | Standard | Variabel einstellbar? | Beispiel | Bedeutung |
---|---|---|---|---|
Funktionen | # | Nein. | #INT(...) | Funktionen beginnen standardmäßig mit "#". Beschreibung der unterstützten Funktionen: siehe unten. |
Sachmerkmalsnamen | $ | Nein. | $LAENGE | Sachmerkmalsnamen beginnen mit "$". |
Feldnamen | & | Nein. | &IDNR | Feldnamen (Variablen) beginnen mit "&". Die zulässigen Feldnamen sind in der Tabelle (z. B. FRD623) hinterlegt, welche in der Tabelle FRDFRK (Interpretation als Dateifelder) angegeben ist. |
Konstante | C | VU1814 + VU1815 | ||
Zusatztexte | X | VU1816 + VU1817 | ||
Unterformel | ! | VU1818 | ||
Zahlen in Formel | N | VU1821 + VU1822 | 1,5 | Zahlen werden immer mit dem Komma als Dezimaltrennzeichen angegeben. |
Regelwerk
Werte | Beschreibung | Beispiele |
---|---|---|
=, >, <, >=, <=, <> | Vergleichsoperatoren; Bei Vergleichen werden Leerzeichen am Ende von Zeichenketten ignoriert. | |
DEFINED | Vergleichsoperator, ob ein Sachmerkmalsname definiert ist oder nicht. Kann in Bedingungen (IF, WHEN) genutzt werden. | IF DEFINED $Sachmerkmal |
() | Gruppierung der Anweisungen ist mit Klammerung möglich. | |
:= | Wertzuweisung (alphanumerisch mit einfachen Hochkommas) Hinweis: Wertzuweisungen innerhalb von IF- und WHEN-Bedingungen sind nicht zulässig. | &IDNK := 'EINZELTEIL-001' &PRSM := 10 |
+, -, *, / | Mathematische Operatoren für die Grundrechenarten Addition, Subtraktion, Multiplikation, Division | &PRSM := &PRSM + 1 &PRSM := &RMA1 + &RMA2 |
+ | Zur Verkettung von Zeichenketten | &AGBZ := 'Stücklistenkomponente '+ &IDNK |
- Verwendete Sachmerkmale müssen zuvor einen Wert erhalten haben, es sei denn, sie werden als Ergebnisfeld verwendet.
- String-Konstanten müssen in einfachen Hochkommata stehen.
- Ergebnisse von String-Operationen (auch Konstanten) dürfen höchstens 24 Zeichen lang sein.
- Bei Entscheidungstabellen entfallen THEN und ELSE mit den zugehörigen Ausdrücken; die Position wird ausgewählt, wenn die IF-Bedingung wahr ist.
- Typprüfung: Bei Eingabe von Formeln über den Formelexplorer ‚Formeln und Entscheidungstabellen verwalten‘ wird geprüft, ob alle Operationen mit den Typen der Felder möglich sind.
Boolesche Operatoren
Operator | Beschreibung | Beispiele |
---|---|---|
AND | Boolescher UND-Operator | IF ($BREITE = 1000 AND $FARBE = 'GOLD') |
OR | Boolescher ODER-Operator | IF ($BREITE = 1000 OR $HOEHE = 1000 OR $TIEFE = 1000) |
NOT | Negierender boolescher Operator | IF NOT #IN($PREIS; 100; 200) |
Konstanten
Konstante | Beschreibung |
---|---|
PI | Die Konstante π kann dort verwendet werden, wo literale Dezimalzahlen verwendet werden können. Der Wert der Konstante liegt bei: 3,141592653589793 |
Bedingungen ohne Blockanweisungen
Bitte die Klammerung beachten.
Fallunterscheidung | Zulässige Operatoren | Abbildung als Formel | Beispiel |
---|---|---|---|
Ein Fall | IF, THEN | IF (Bedingung) THEN (Anweisung, wenn Bedingung = true) | IF ($LAENGE > 100) THEN (&FISM := $BREIT) |
Zwei Fälle | IF, THEN, ELSE | IF (Bedingung) THEN (Anweisung, wenn Bedingung = true) ELSE (Anweisung, wenn Bedingung = false) | IF ($LAENGE > 100) THEN (&FISM := $BREIT) ELSE (&FISM := $BREIT/2) |
Bedingungen mit Blockanweisungen
Mit sog. Blockanweisungen ist es möglich, die Ausführung einer folgenden Reihe von Unterpositionen zu bedingen.
Bitte die Klammerung beachten.
Der Operator THEN ist in Blockanweisungen nicht zulässig.
Fallunterscheidung | Zulässige Operatoren | Abbildung als Formel | Beispiel |
---|---|---|---|
Ein Fall | /IF | /IF (Bedingung) Anweisungen, wenn Bedingung = true /ENDIF | /IF ($FARBE = 'CHROM') |
Zwei Fälle | /IF | /IF (Bedingung) Anweisungen, wenn Bedingung = true /ELSE [optional] Anweisungen, wenn Bedingung = false /ENDIF | /IF ($FARBE = 'CHROM') |
Mehr als zwei Fälle | /SELECT /WHEN /OTHER /ENDSL | /SELECT /WHEN (Bedingung 1) Anweisungen, wenn Bedingung 1 = true /WHEN (Bedingung 2) Anweisungen, wenn Bedingung 2 = true ... /OTHER [optional] Anweisungen, wenn keine der vorherigen Bedingungen zutrifft /ENDSL | /SELECT /WHEN ($FARBE = 'CHROM') $PREIS = $PREIS + 100 /WHEN ($FARBE = 'GOLD') $PREIS = $PREIS + 150 ... /OTHER $PREIS = $PREIS + 50 /ENDSL |
Metaanweisungen
Anweisung | Beschreibung |
---|---|
/EXCFRML | Formelidentifikation: Aufruf Unterformel. Die Unterformel muss von der gleichen Formelkennung sein. |
/EXIT | Gesteuerter Abbruch der Formelausführung. In der Fehlermeldung wird der Text der Position ausgegeben. |
Anweisungen für die Eingabesteuerung der Sachmerkmalsausprägung
Die folgenden Anweisungen bieten die Möglichkeit die Eingabesteuerung dynamisch zu ändern (siehe auch Tabelle FRD095 (Eingabesteuerung Sach- und Adressmerkmal)):
Anweisung | Beschreibung |
---|---|
/HIDE | Angabe gefolgt von $Sachmerkmal. Ändert die Eingabesteuerung der Sachmerkmalsausprägung auf "Nicht sichtbar". |
/HIDEINIT | Angabe gefolgt von $Sachmerkmal. Ändert die Eingabesteuerung der Sachmerkmalsausprägung auf "Nicht anzeigen" und setzt die Sachmerkmalsaufprägung auf den Initialwert. |
/MANDATORY | Angabe gefolgt von $Sachmerkmal. Ändert die Eingabesteuerung der Sachmerkmalsausprägung auf "Muss". |
/NONMANDATORY | Angabe gefolgt von $Sachmerkmal. Ändert die Eingabesteuerung der Sachmerkmalsausprägung auf "Kann". |
/PROTECT | Angabe gefolgt von $Sachmerkmal. Ändert die Eingabesteuerung der Sachmerkmalsausprägung auf "Gesperrt". |
Mathematische Winkelfunktionen (trigonometrische Funktionen)
Die Genauigkeit der Winkelfunktionen beträgt ca. 0,01 %.
Funktion | Name | Winkeleinheit |
---|---|---|
#ACOS(x) | Arkuscosinus | Ergebnis in Bogenmaß |
#ASIN(x) | Arkussinus | Ergebnis in Bogenmaß |
#ATG(x) | Arkustangens | Ergebnis in Bogenmaß |
#COS(x) | Cosinus | x in Bogenmaß |
#SIN(x) | Sinus | x in Bogenmaß |
#TAN(x) | Tangens | x in Bogenmaß |
Sonstige Funktionen
[a = alphanumerische Zeichenfolge, n[1] = Zahl]
Funktion | Beschreibung | Ergebnis |
---|---|---|
#BTR(Zahl) | Betrag (Absolut-Wert) einer Zahl | |
#EXP(Zahl) | Exponentialfunktion, Zahl <= 20 | |
#EXTAB(t; n1; n2) | Prüfung, ob für bestimmte Werte in einer Variantengeneratortabelle ein Ergebnis gefunden wird. | Das Ergebnis ist true oder false. |
#IN(Wert; Wert1; Wert2; ...) | Prüfung, ob Wert (der erste Parameter) einen der angegebenen folgenden Werte (Parameter 2 bis maximal 9) hat. Es können maximal 8 Werte angegeben werden. | Das Ergebnis ist true oder false. |
#INT(Zahl) | Ganzzahliger Teil (Nachkommastellen abschneiden) | |
#LN(Zahl) | Natürlicher Logarithmus, Zahl > 0 | |
#MID(a; n1; n2) | Teilstring aus a ab Position n1 der Länge n2. | Teilstring aus a |
#QUD(Zahl) | Quadrieren | |
#RND(Zahl1;Zahl2) | Zahl 2 wird auf die in Zahl 1 angegebene Anzahl Nachkommastellen kaufmännisch gerundet (ab 5 wird aufgerundet). | |
#SQT(Zahl) | Quadratwurzel | |
#STR(n) | Umwandlung einer Zahl in eine Zeichenkette. | Zahl als Zeichenkette |
#TLSM(Artikelnummer; 'Sachmerkmalsname') | Stellt eine Sachmerkmalsausprägung aus einem Artikelstamm zur Verfügung. Der Sachmerkmalsname muss immer als Konstante (in einfachen Hochkommata) vorgegeben werden. Die Feldart des Ergebnisses ist abhängig von der Sachmerkmalsdefinition (numerisch bei angegebener Mengeneinheit oder Kennzeichen numerisch). | |
#VAL(a) | Umwandlung einer Zeichenkette in eine Zahl. Wenn die Zeichenkette mit einem Alpha-Zeichen beginnt, ist das Ergebnis 0. | Zeichenkette als Zahl |
#VGTAB(t; n1; n2; p) | Ergebnis einer zweidimensionalen Variantengeneratortabelle. Siehe US16700. Tabellen-Parameterdefinition siehe US16800 Parameter: t = Variantengeneratortabelle n1 = Eingabeparameter 1 n2 = Eingabeparameter 2 p = Ergebnisparameternummer | Ergebnis einer zweidimensionalen Variantengeneratortabelle. |
Weitere Beispiele
Formel | Beschreibung |
---|---|
/IF ($A <> 0) | Abfangen einer Division durch 0. |
/IF ($A <> ' ') /HIDE $B /ENDIF | Wenn Sachmerkmal A angegeben ist, soll automatisch Sachmerkmal B ausgeblendet werden. |
$A := IF $B > 0 THEN 1 | Sachmerkmal A wird 1 zugewiesen, wenn Sachmerkmal B > 0 ist. |
$A := IF $B > 0 THEN 1 ELSE 2 | Sachmerkmal A wird 1 zugewiesen, wenn Sachmerkmal B > 0 ist, ansonsten wird 2 zugewiesen. |
IF #IN($FARBE; 'CHROM'; 'SILBER'; 'GOLD') THEN ($PREIS := 150) ELSE ($PREIS := 100) | Sachmerkmal PREIS wird 150 zugewiesen, wenn Sachmerkmal FARBE einer der angegebenen Werte enthält, ansonsten wird 100 zugewiesen. |
$PREIS := IF #IN($FARBE; 'CHROM'; 'SILBER'; 'GOLD') THEN 150 ELSE 100 |