Platzhalter für Metadaten

Es sind folgende Platzhalter für Metadaten definiert. Bei Verwendung müssen die Platzhalter in der Form "$[...]" verwendet werden, wobei die Punkte durch den Platzhalter-Namen ersetzt werden müssen):

Platzhalter für

  • SQL-Strings
  • Default-Werte
  • Validierungsausdrücke
  • Makro-Parameter

Ergänzungen:

  • "Eigenwaehrung" auch für Titel-Attribut bei Trendvergleich-Elementen
  • "Call(...)" nicht für Datenklassen

Name

Inhalt

CheckLicence(lizenzkuerzelausdruck)

(Ab Version 9.0.3)

Prüfen der übergebenen Lizenzeigenschaft

Parameter:

  • Entweder ein einziges Lizenzkürzel für die jeweilige Lizenzeigenschaft oder ein mit "AND", "OR" oder "NOT" verknüpfter Ausdruck von Lizenzkürzeln.

Rückgabe:

  • Für Makros, Validierungsausdrücke und Default-Werte werden die Konstanten "True" bzw. "False" zurückgegeben, für SQL-Strings die Werte -1 bzw. 0.

Beispiele (Makros):

$[CheckLicence(Anbu)]

$[CheckLicence(Not LagerErweitert)]

$[CheckLicence(xRMBasic OR xRMProfessional OR xRMEnterprise)]

Beispiele (SQL):

$[CheckLicence('Projekt')] <> 0

$[CheckLicence('NichtSkontierfähigeArtikel')] <> 0

Country

Land des Mandanten:

  • 1 = Deutschland
  • 2 = Schweiz
  • 4 = Österreich
  • 32 = International
Database(kuerzel)

Tabellen-Präfix der durch „kuerzel“ referenzierten Datenbank „kuerzel“ (z.B. „CRM“ und „HR“)

Hinweise:

  • Identity-Spalten („Autowert“-Spalten) in Tabellen verknüpfter Datenbanken werden nicht unterstützt. Die Nutzung einer TAN (auf Basis der Tabelle "KHKTan") ist möglich. Hierbei müssen gleichnamige Tabellen in der Sage 100 Datenbank und der verknüpften Datenbank vermieden werden. Andernfalls nutzen beide Datenbanken den selben TAN n, so dass in den Ziel-Tabellen der Datenbankbanken TAN scheinbar übersprungen werden.
  • Transaktionen werden bei schreibenden Zugriffen auf verknüpfte Datenbanken vom SQL Server nicht unterstützt. Daher erfolgen schreibende Zugriffe auf Tabellen aus verknüpften Datenbanken ohne Transaktion.

Mandant

Mandantennummer der OL-Datenbank

ApplicationName

Name der Applikation über die das Element aufgerufen wurde, mögliche Werte sind "Rewe" und "Abf"

CurrentDate

Server-Systemdatum

  • Bei Verwendung in SQL-Strings wird folgender Ausdruck geliefert (bei Systemdatum 21.05.2014): CONVERT(DATETIME,'21.05.2014',104)
  • Bei Verwendung in Ausdrücken (z.B. für Makro-Funktion „FestlegenFeldWert“ oder Eigenschaft „DefaultValue“) wird ein Datumstext im ISO-Format geliefert (YYYY-MM-DD), eingefasst in „#“.

DatenreferenceFilter

(Ab Version 9.0.4)

Nur für Datenreferenzen:
  • Definiert die Stelle innerhalb des Attributes "SqlQuery" einer Datenreferenz (z.B. innerhalb einer Unterabfrage), an welcher der Filterwert eingefügt werden soll (Attribut "DataReferenceFilter" eines Datensatzfeldes).

Eigenwaehrung

Eigenwährung des Mandanten (dreistelliges Kürzel)

Geschaeftsjahr

Aktuelles Geschäftsjahr, berechnet auf Basis des aktuellen Server-Systemdatums

  • Für noch nicht angelegte Geschäftsjahre erfolgt die Berechnung analog zur Rewe-Planung auf der Annahme, dass es sich um volle Geschäftsjahre handelt. 

Tipp: In einem Makro-Ausdruck kann das aktuell gewählte Geschäftsjahr, das beim Start der Anwendung definiert wurde, mit der vordefinierten lokalen Makro-Variablen "[_AppYear]" adressiert werden.

GeschaeftsjahrClient (Ab Version 9.0.5)

Aktuell gewähltes Geschäftsjahr, das beim Start der Anwendung definiert wurde (Nur zulässig

in Primärschlüsselfelder von Feldern einer Datenwertliste).

Periode

aktuelle Periode (z.B. für Filter „letzte 3 Perioden“) berechnet auf Basis des aktuellen Server-Systemdatums

  • Für noch nicht angelegte Geschäftsjahre erfolgt die Berechnung analog zur Rewe-Planung auf der Annahme, dass es sich um volle Geschäftsjahre handelt und diese die gleiche Periodenlänge wie das letzte Geschäftsjahr haben.

PeriodeStart

erste Periode des Geschäftsjahres berechnet auf Basis des aktuellen Server-Systemdatums

  • Für noch nicht angelegte Geschäftsjahre siehe „Periode“

PeriodeEnde

letzte Periode des Geschäftsjahres berechnet auf Basis des aktuellen Server-Systemdatums

  • Für noch nicht angelegte Geschäftsjahre siehe „Periode“

PeriodeStartOperativ

erste operative Periode des Geschäftsjahres berechnet auf Basis des aktuellen Server-Systemdatums (bei Rumpfgeschäftsjahren ist dies nicht di erste Periode)

  • Für noch nicht angelegte Geschäftsjahre siehe „Periode“

PeriodeEndeOperativ

letzte Periode des Geschäftsjahres berechnet auf Basis des aktuellen Server-Systemdatums

  • Für noch nicht angelegte Geschäftsjahre siehe „Periode“

PeriodeStartVorjahr

erste Periode des vorherigen Geschäftsjahres berechnet auf Basis des aktuellen Server-Systemdatums

  • Für nicht vorhandene Vorjahre wird 0 zurückgegeben

PeriodeEndeVorjahr

letzte Periode des vorherigen Geschäftsjahres berechnet auf Basis des aktuellen Server-Systemdatums

  • Für nicht vorhandene Vorjahre wird 0 zurückgegeben

PeriodeStartOperativVorjahr

erste operative Periode des vorherigen Geschäftsjahres berechnet auf Basis des aktuellen Server-Systemdatums Systemdatums (bei Rumpfgeschäftsjahren ist dies nicht di erste Periode)

  • Für nicht vorhandene Vorjahre wird 0 zurückgegeben

PeriodeEndeOperativVorjahr

letzte operative Periode des vorherigen Geschäftsjahres berechnet auf Basis des aktuellen Server-Systemdatums

  • Für nicht vorhandene Vorjahre wird 0 zurückgegeben

UserName

Anwendername

GetString(index)
bzw.
GetString(name, index)
bzw.
GetString(partnerid, packageid, name, index)

String-Ressource auf Basis der Parameter ermitteln. Als Default für „name“ wird „Common“ verwendet, für Partner- und Lösungs-ID die Lösung, aus der der Aufruf erfolgt. Die Funktion wird für die Übersetzbarkeit fester Strings – wie z.B. „Grundartikel“ in der Warenwirtschaft – verwendet.

Der String wird in Hochkommata eingeschlossen. Hochkommata innerhalb des Strings werden verdoppelt.

GetConstant(name)
bzw.
GetConstant(partnerid, packageid, name)

Numerische Konstante auf Basis der Parameter ermitteln. Als Default für Partner- und Lösungs-ID wird die Lösung, aus der der Aufruf erfolgt, verwendet.

Call(assemblyname, classname, params…)

Aufruf der Funktion „Entry“ der Klasse „classname“ in der Assembly „assembly“ mit maximal 4 Parametern (Rückgabewert ist vom Typ String). Zusätzlich wird ein ParameterBag übergeben, der bei mehrfacher Verwendung von „Call“ Konfigurationswerte zwischenspeichern kann, wobei die Aufrufreihenfolge nicht garantiert wird.

Als Parameter können übergeben werden:

  • Andere Platzhalter wie z.B. „Parameter“
  • konstante Integer-Werte

konstante String-Werte (in einfache Hochkommata ( ‘ ) eingeschlossen und enthaltene einfache Hochkommata durch Doppel-Hochkomma maskiert)

GetMandantProperty(index)
bzw.
GetMandantProperty(index, default)
bzw.
GetMandantProperty(name)
bzw.
GetMandantProperty(name, default)
bzw.
GetMandantProperty(partnerid, packageid, name)
bzw.
GetMandantProperty(partnerid, packageid, name, default)

Mandanten-Eigenschaft ermitteln

Je nach Inhalt des Feldes "Typ" in der Tabelle "KHKMandanten" werden automatisch folgende Maskierungen mit eingefügt:

  • 1 = Date:
    Maskierung gemäß SQL-Datumskonvention
  • 2 = Int, 3 = Lng, 4 = Sng, 5 = Dbl, 6 = Cur:
    keine Maskierung für nummerische Werte
  • 0 = Vnt, 7 = Sperrwort, 8 = Feldformat:
    String-Maskierung mit String-Begrenzungszeichen (enthaltene String-Begrenzungszeichen werden verdoppelt)

Parameter:

  • "index":
    nummerischer Index der Mandanten-Eigenschaft
  • "name":
    direkte Angabe für einen „GetConstant“-Aufruf, wodurch direkt auf die jeweilige benannte Konstante zugegriffen wird und die zugehörige Mandanten-Eigenschaft ermittelt wird
  • "partnerid", "packageid" und "name":
    direkte Angabe für einen „GetConstant“ Aufruf inkl. Lösung
  • "default":
    Dient zur Angabe eines Standardwertes. Dieser darf die Zeichenfolge „)]“ nicht enthalten.
    • Der Standardwert ist wie folgt zu maskieren:
      • Strings müssen in String-Begrenzungszeichen eingeschlossen werden und darin enthaltene String-Begrenzungszeichen sind zu verdoppeln.
      • Maskierung gemäß SQL-Datumskonvention
      • numerische Werte werden nicht maskiert

Beispiel für Makro-Ausdruck:

$[GetMandantProperty(125, "Defaultwert")]

oder für Leerstring als Default-Wert:

$[GetMandantProperty(125, "")]

Beispiel für SQL:

$[GetMandantProperty(125, 'Defaultwert')]

oder für Leerstring als Default-Wert:

$[GetMandantProperty(125, '')]

Platzhalter für SQL-Strings

Ergänzungen:

  • "ParentKeyField(n)" ist nur in Child-Elementen sinnvoll und auch als Parameter für Drilldown-Funktionsaufrufe verfügbar
  • "PartGuid" ist auch bei Parametern für VBA-Funktionsaufrufe, Drilldown-Funktionsaufrufe (nicht für Inplace) und die Eigenschaft „Aktualisierungsbenachrichtigungen“ in List-Elementen verfügbar
  • "Parameter" ist auch bei Parametern für VBA-Funktionsaufrufe, Drilldown-Funktionsaufrufe, für Drag-Funktionsaufrufe, für die Where-Clause von Datenreferenzen, den Titel von Detail-Elementen in Master-Detail-Elementen und der Eigenschaft "Parameter für Anpassungen" bei den Detail-Elementen des Master-Detail-Elements verfügbar

Name

Inhalt

UserDefinedFieldsList(userdefinedfields)

Feldliste der benutzerdefinierten Felder „userdefinedfields“ einer Tabelle (z.B. „Artikel“) zur Verwendung in Datenquellen, die verschachtelte Abfragen enthalten (Angabe „userdefinedfields“ ohne Anführungsstriche)

InnerClause

Platzhalter für die Filter-Kriterien einer inneren SQL-Abfrage. Dieser wird aus den in der Datenquelle mit „UseFilterInInnerClause“ markierten Feldern gebildet, wenn diese gefiltert werden. Er ist entweder leer (kein Filter für innere SQL-Abfrage gesetzt) oder beginnt grundsätzlich mit einem „AND“, auf das die einzelnen Filter (ebenfalls mit „AND“ verknüpft) folgen.

Anmerkungen:

  • Der Platzhalter kann bei mehreren inneren Abfragen ggf. auch mehrfach genutzt werden. Allerdings ist hier die Performance zu prüfen.

Falls die innere Where-Clause nur die Filter enthalten soll, muss sie mit einem Dummy-True beginne, damit die AND-Syntax keinen Fehler verursacht.

IfParameterExists(name, “sqltrue“)
bzw.
IfParameterExists(name, “sqltrue“, "sqlfalse")

Die Funktion dient dem Zusammenbau von Where-Clauses bei optionalen Selektions-Parametern.

  • Parameter 1: Name
    • Der Name des zu prüfenden Selektions-Parameters.
  • Parameter 2: SqlTrue
    • SQL-Ausdruck, welcher den Platzhalter ersetzt, wenn der Selektions-Parameter existiert.
  • Parameter 3: SqlFalse (optional, Default="")
    • SQL Ausdruck, welcher den Platzhalter ersetzt, wenn der Selektions-Parameter nicht existiert.

Die SQL-Ausdrücke müssen in Anführungszeichen ("") eingeschlossen werden, die bei der Ersetzung entfernt werden. Evtl. vorhandene Anführungszeichen im SQL-Ausdruck müssen verdoppelt werden.

AppendAndParameterFromTo(name, sqlfieldname)

Die Funktion dient dem Zusammenbau von Where-Clauses für Von-Bis-Parameter, inkl. der Behandlung von Mehrfachselektion (siehe Metadaten-Attribute "IsFromTo" und "AllowMultiselect" der Datenstruktur).

  • Parameter 1: name
    (Name des Metadaten-Feldes)
  • Parameter 2: sqlfieldname
    (Name des korrespondierenden SQL-Feldes)

Der Platzhalter wird in Abhängigkeit der Inhalte der Parameter

  • name + "Von" für den Von-Wert
  • name  + "Bis" für den Bis-Wert
  • name (ohne Ergänzung) bei Mehrfachselektion

durch einen entsprechenden SQL-Ausdruck ersetzt:

  • Ist weder "Von" noch "Bis" noch eine Mehrfachselektion definiert, ist dies ein leerer String.
  • Ist "Von" oder "Bis" definiert, ist dies eine entsprechende Größer-Gleich-/Kleiner-Gleich-Abfrage mit vorangestelltem „AND“.
  • Sind "Von" und "Bis" definiert, ist dies eine entsprechende "BETWEEN"-Abfrage mit vorangestelltem "AND".
  • Sind weder "Von" noch "Bis", aber eine Mehrfachselektion definiert, ist dies eine entsprechende "IN"-Abfrage mit vorangestelltem "AND".
    (Bei mehreren Schlüssel-Segmenten kann dieser Platzhalter nicht verwendet werden.)
ParameterValueList(name)

Enthält ein Feld eine Werteliste, wie sie in der Oberfläche und in Makros verwendet wird (Semikolon-separierte Liste von Werten; Texte müssen in Anführungszeichen eingefasst werden; innenliegende Anführungszeichen sind verdoppelt), kann sie mit diesem Platzhalter in eine SQL-konforme Werteliste umgewandelt werden, z.B. zur Verwendung im IN-Operator.

Szenarien:

  • An ein Master-Detail-Element von außen übergebener benannter Parameter, der an die Datenquellen der enthaltenen Elemente weitergereicht wird.
  • In einem Ausdruck, wie er z.B. im Metadaten-Attribut "DataReferenceFilter" verwendet werden kann. Siehe hierzu Kapitel "Metadaten Abfragesprache".

Hinweis: Wertelisten, die in einer Selektion mit Mehrfachauswahl entstehen können (Metadaten-Attribute "IsFromTo" und "AllowMultiselect"), müssen mittels Platzhalter "AppendAndParameterFromTo" ausgewertet werden.

Achtung: Wertelisten, die im Frontend entstehen (Client-seitig). dürfen wegen der Gefahr von SQL-Injection nicht ungeprüft in SQL verwendet werden. Es ist immer eine typsichere Zerlegung in Einzelwerte und ein neues, maskiertes Erzeugen der Werteliste notwendig. Das ist mit Verwendung dieses Platzhalters sichergestellt.

ParentKeyField(n)

An ein Child-Part übergebener Inhalt von Key-Feld <n>
(n darf aktuell nur zwischen 1 und 9 liegen)

ParentFieldValue(name)

nur für Datensätze: ruft beim Lesen eines Child-Records den Inhalt des Parent-Feldes „name“ (Angabe ohne Anführungszeichen) ab.

Anwendungsbeispiel: Beim Lesen mit Left Join können Felder den Wert NULL haben, die in Unterabfragen aber verwendet werden. Falls die Felder auch im Hauptsatz existieren, können sie mit diesem Platzhalter ermittelt werden
(siehe Element "recArtikelstammArtikelpreise.Sage.Wawi", Feld "StatusStaffelpreise").

PartGuid

GUID der Part-Instanz (z.B. für Konfigurationsdialoge der „Trend…“-Parts)

Parameter(name)

Ein von außen übergebener benannter Parameter.

Beispielsweise:

  • Beim Makro-Befehl "AuskunftÖffnen" aus Parameter 2.
  • Beim Anwenden eines Datenfilters aus den Parametern der Bedingungen.

Hinweis:

  • Leere Strings werden als NULL im SQL ersetzt. Deshalb kann es angeraten sein, die SQL-Funktion "ISNULL()" zu verwenden, um den Unterschied zwischen Leerstring und NULL zu beseitigen.
    Beispiel: ISNULL(KHKAdressen.LieferPLZ, '') = ISNULL($[Parameter(Plz)], '')


Platzhalter für die WHERE-Bedingung bei Datenklassen-Lokatoren mit Fremdtabelle

NameInhalt
SearchValue

Dieser Platzhalter wird in der WHERE-Bedingung durch den Wert ersetzt, nach dem gesucht wird.

Der Wert, der eingesetzt wird, wird automatisch so formatiert, dass er in einer WHERE-Bedingung funktioniert.

  • Handelt es sich um ein String-Feld, wird dem Wert ein "%" angefügt, und der Wert wird in Apostrophe eingefasst und maskiert. Der Platzhalter muss zusammen mit "LIKE" verwendet werden, wodurch sich eine "Beginnt mit"-Abfrage ergibt.
  • Handelt es sich um ein numerisches Feld oder ein Datumsfeld, wird der Wert entsprechend formatiert. Der Platzhalter muss zusammen mit "=", "<>", "<", "<=", ">" oder ">=" verwendet werden.

Platzhalter bei Parametern für VBA-Funktionsaufrufe, Drilldown-Funktionsaufrufe (nur Inplace) sowie Drag&Drop-Funktionsaufrufe verfügbar

Name

Inhalt

KeyField(n)

Inhalt von Key-Feld <n>
(n darf aktuell nur zwischen 1 und 9 liegen);

im Normalfall ergibt dies direkt den Wert, bei Multiselect wird als Inhalt eine Semikolon-separierte Liste verwendet

Strings werden in Anführungszeichen eingeschlossen und darin enthaltene Anführungszeichen durch zwei Anführungszeichen maskiert

FieldValue(Name)

nur für Data-Edit- und Multi-Data-Edit-Elemente: Inhalt des Feldes „name“ (Angabe des Parameters ohne Anführungszeichen), im Normalfall ergibt dies direkt den Wert, bei Multiselect wird als Inhalt eine Semikolon-separierte Liste verwendet

Strings werden in Anführungszeichen eingeschlossen und darin enthaltene Anführungszeichen durch zwei Anführungszeichen maskiert

KeyFieldMaskedForList(n)

Inhalt von Key-Feld <n>
(n darf aktuell nur zwischen 1 und 9 liegen)

Der Platzhalter dient zum Zusammenstellen von Parameter-Listen, die als Funktionsparameter an Access-Funktionen übergeben werden (wie z.B. "Artikelnummer:=" & $[ KeyFieldMaskedForList (1)] & ";AuspraegungID:=" & $[ KeyFieldMaskedForList (2)] & ";Dispoauskunft:=-1"). String-Werte werden in Anführungszeichen gesetzt, darin enthaltene Anführungszeichen durch zwei Anführungszeichen maskiert. Alle anderen Werte sind identisch mit den Werten aus Platzhalter "KeyField".

FieldValueMaskedForList(n)

nur für Data-Edit- und Multi-Data-Edit-Elemente: Inhalt des Feldes „name“ (Angabe des Parameters ohne Anführungszeichen)

Der Platzhalter dient zum Zusammenstellen von Parameter-Listen, die als Funktionsparameter an Access-Funktionen übergeben werden (wie z.B. "Artikelnummer:=" & $[ FieldValueMaskedForList (Artikelnummer)] & ";AuspraegungID:=" & $[ FieldValueMaskedForList (AuspraegungID)] & ";Dispoauskunft:=-1"). String-Werte werden in Anführungszeichen gesetzt, darin enthaltene Anführungszeichen durch zwei Anführungszeichen maskiert. Alle anderen Werte sind identisch mit den Werten aus Platzhalter "FieldValue".

SenderField(n)

nur bei Drop-Funktionen: Über „SenderField(n)“ stehen die Funktions-Parameter der aufrufenden Drag-Funktion zur Verfügung

(n darf zwischen 1 und 6 liegen)

Platzhalter für Diagramm-Element-Kontextmenüs

Name

Inhalt

ChartSeriesNumber

Übergabe der Kurvennummer einer aufgerufenen Funktion des Kontextmenüs

Platzhalter für die Eigenschaft "SQL-Bedingung berechneter Filter" (Datenquellenfeld)

Name

Inhalt

KeyValue

Filter-Wert

Platzhalter für die Eigenschaft „SQL-Ampelermittlung“ (Datenquellenfeld)

Name

Inhalt

TrafficLightParameter1

Ampel-Parameter 1

TrafficLightParameter2

Ampel-Parameter 2

Platzhalter für Titel-Attribute

Ergänzungen:

  • "ParameterValue" steht nur für Listen-Elemente zur Verfügung

Name

Inhalt

RecordCount

Anzahl der Datensätze in einem Listen-Element:

  • soweit alle Datensätze geladen sind: echte Anzahl
  • soweit die Seitengröße überschritten wird: „>n“

soweit die Daten noch nicht geladen sind: „…“

ParameterValue(n)

Referenziert im Titel eines Link-Element-Links auf das Link-Datenfeld mit "Type"=n