Über Skript-Ausdrücke #
Skript-Ausdrücke bieten eine Möglichkeit, dynamische Parameter zu Xtract Universal hinzuzufügen. Sie werden zur Laufzeit einer Extraktion aufgelöst. Die Ausgabe eines Skript-Ausdrucks ist ein String. Dieser String kann als Eingabe für weitere .NET-String-Operationen verwendet werden.
Skript-Ausdrücke können in den folgenden Szenarien verwendet werden:
- als Auswahlparameter in Table und DeltaQ Extraktionen.
- als Custom SQL-Anweisungen in Datenbank-Destinationen.
- als dynamische Ordnerpfade in den Destinationen Amazon S3 und Azure Storage.
- als dynamische Dateinamen in Push-Destinationen.
Syntax von Skript-Ausdrücken #
Skript-Ausdrücke verwenden eine C#-Syntax. Sie werden mit einem Rautezeichen (#) eingeleitet und beendet. Die Formel beginnt mit und endet mit geschweiften Klammern ({}).
Beispiel:
#{ Extraction.TableName }#
Hinweis: Bei XU-spezifischen benutzerdefinierten Ausdrücken wird zwischen Groß- und Kleinschreibung unterschieden. Es muss die exakte Syntax wie auf dieser Seite dokumentiert verwendet werden.
IF-Anweisungen
Eine IF-Anweisung (ternärer Operator) hat die folgende Syntax: iif([bool condition], [string trueResult], [string falseResult])
Beispiele:
Eingabe | Ausgabe | Beschreibung |
---|---|---|
#{ iif(DateTime.Now.Month==7, "July","Unknown")}# |
Juli | Wenn wir uns im 7. Monat befinden, ist der Ausgang “Juli”, alles andere ist “Unbekannt”. |
#{Extraction.ExtractionName}##{ iif(string.IsNullOrEmpty(Extraction.Context), string.Empty, "/" + Extraction.Context)}# |
Extraction.Context liefert nur bei ODP-Extraktionen ein Ergebnis. Bei allen anderen Extraktionstypen ist das Ergebnis leer. Wenn der Extraktionsname ‘SAP_1’ und der Extraktionstyp ‘Tabelle’ ist, würde der resultierende Dateipfad SAP_1/[filename] lauten. Wenn der Extraktionsname ‘SAP_2’ und der Extraktionstyp ‘ODP’ ist und eine SAP DataSource (Extraktionskontext: SAPI) extrahiert wird, wäre der resultierende Dateipfad SAP_2/SAPI/[filename] . |
Skript-Ausdrücke auf Basis von .NET #
Die Skript-Ausdrücke von Xtract Universal unterstützen die folgenden .NET-Objekte, -Eigenschaften und -Methoden aus dem .NET-Systemnamensraum des aktuellen .NET-Frameworks:
Object, Boolean, Char, String, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Decimal, DateTime, TimeSpan, Guid, Math, Convert.
Hinweis: Das gebräuchlichste Anwendungsszenario ist die Verwendung der Methoden und Eigenschaften der .NET-Klassen DateTime und String. Weitere Informationen zu den unterstützten .NET-Klassen und deren Eigenschaften und Methoden einschließlich DateTime und String finden Sie in der Online-Dokumentation von Microsoft.
Unterstützte Schlüßelworte
Die folgenden Schlüsselworte werden unterstützt: true, false, null.
Liste verfügbarer Skript-Ausdrücke #
Skript-Ausdrücke als dynamische Dateinamen
Skript-Ausdrücke können für die Generierung eines dynamischen Dateinamens verwendet werden. Dadurch kann ein Name generiert werden, der sich aus den Eigenschaften einer Extraktion zusammensetzt, z.B. Extraktionsname, SAP-Quellobjekt. Unterstützt werden Skript-Ausdrücke, die auf .NET basieren, sowie folgende XU-spezifische Skript-Ausdrücke:
Eingabe | Beschreibung |
---|---|
#{Source.Name}# |
Name der SAP Quelle. |
#{Extraction.ExtractionName}# |
Name der Extraktion. |
#{Extraction.Type}# |
Extraktionstyp (Table, ODP, DeltaQ, etc.). |
#{Extraction.SapObjectName}# |
Name des SAP Objekts, von dem die Extraktion Daten extrahiert. |
#{Extraction.Timestamp}# |
Zeitstempel der Extraktion. |
#{Extraction.SapObjectName.TrimStart("/".ToCharArray())}# |
Entfernt einen führenden Schrägstrich, z.B. wird aus /BIO/TMATERIAL dann BIO/TMATERIAL, damit kein leeres Verzeichnis angelegt wird. |
#{Extraction.SapObjectName.Replace('/', '_')}# |
Entfernt alle Schrägstriche eines SAP Objekts, z.B. wird aus /BIO/TMATERIAL dann _BIO_TMATERIAL. Dadurch wird verhindert, dass die Schrägstriche innerhalb des Namens des SAP Objekts, nicht als Verzeichnistrenner interpretiert werden. |
#{Extraction.Context}# |
Nur für ODP Extraktionen: Kontext des ODP Objekts (SAPI, ABAP_CDS, etc.). |
#{Extraction.Fields["[NameSelectionFiels]"].Selections[0].Value}# |
Nur für ODP Extraktionen: Eingabewert einer definierten Selektion / eines Filter. |
#{Odp.UpdateMode}# |
Nur für ODP Extraktionen: Load-Verfahren (Delta, Full, Repeat) der Extraktion. |
#{TableExtraction.WhereClause}# |
Nur für Table Extraktionen: WHERE-Bedingung der Extraktion. |
Skript-Ausdrücke als dynamische Ordnerpfade
Skript-Ausdrücke können für die Generierung eines dynamischen Ordnerpfads verwendet werden. Dadurch kann ein Ordnerpfad generiert werden, der sich aus den Eigenschaften einer Extraktion zusammensetzt, z.B. Extraktionsname, SAP-Quellobjekt. Unterstützt werden Skript-Ausdrücke, die auf .NET basieren, sowie folgende XU-spezifische Skript-Ausdrücke:
Eingabe | Beschreibung |
---|---|
#{Source.Name}# |
Name der SAP Quelle. |
#{Extraction.ExtractionName}# |
Name der Extraktion. |
#{Extraction.Type}# |
Extraktionstyp (Table, ODP, DeltaQ, etc.). |
#{Extraction.SapObjectName}# |
Name des SAP Objekts, von dem die Extraktion Daten extrahiert. |
#{Extraction.Timestamp}# |
Zeitstempel der Extraktion. |
#{Extraction.SapObjectName.TrimStart("/".ToCharArray())}# |
Entfernt einen führenden Schrägstrich, z.B. wird aus /BIO/TMATERIAL dann BIO/TMATERIAL, damit kein leeres Verzeichnis angelegt wird. |
#{Extraction.SapObjectName.Replace('/', '_')}# |
Entfernt alle Schrägstriche eines SAP Objekts, z.B. wird aus /BIO/TMATERIAL dann _BIO_TMATERIAL. Dadurch wird verhindert, dass die Schrägstriche innerhalb des Namens des SAP Objekts, nicht als Verzeichnistrenner interpretiert werden. |
#{Extraction.Context}# |
Nur für ODP Extraktionen: Kontext des ODP Objekts (SAPI, ABAP_CDS, etc.). |
#{Extraction.Fields["[NameSelectionFields]"].Selections[0].Value}# |
Nur für ODP Extraktionen: Eingabewert einer definierten Selektion / eines Filter. |
#{Odp.UpdateMode}# |
Nur für ODP Extraktionen: Load-Verfahren (Delta, Full, Repeat) der Extraktion. |
#{TableExtraction.WhereClause}# |
Nur für Table Extraktionen: WHERE-Bedingung der Extraktion. |
#{Extraction.Fields["[0D_NW_CODE]"].Selections[0].Value}# |
Nur für BWCube Extraktionen (MDX Modus): Eingabewert einer definierten Selektion. |
#{Extraction.Fields["[0D_NW_CHANN]"].RangeSelections[0].LowerValue}# |
Nur für BWCube Extraktionen (MDX Modus): Niedriger Eingabewert eines definierten Selektionsbereichs. |
#{Extraction.Fields["[0D_NW_CHANN]"].RangeSelections[0].UpperValue}# |
Nur für BWCube Extraktionen (MDX Modus): Hoher Eingabewert eines definierten Selektionsbereichs. |
#{Extraction.Fields["0D_NW_CODE"].Selections[0].Value}# |
Nur für BWCube Extraktionen (BICS Modus): Eingabewert einer definierten Selektion. |
#{Extraction.Fields["0D_NW_CHANN"].RangeSelections[0].LowerValue}# |
Nur für BWCube Extraktionen (BICS Modus): Niedriger Eingabewert eines definierten Selektionsbereichs. |
#{Extraction.Fields["0D_NW_CHANN"].RangeSelections[0].UpperValue}# |
Nur für BWCube Extraktionen (BICS Modus): Hoher Eingabewert eines definierten Selektionsbereichs. |
Skript-Ausdrücke als Auswahlparameter in Table und DeltaQ Extraktionen
Skript-Ausdrücke werden verwendet, um ein dynamisches Datum auf der Basis des aktuellen Datums zu bestimmen.
Um Skript-Ausdrücke in WHERE-Bedingungen zu verwenden, müssen sie in einfache Anführungszeichen gesetzt werden.
Syntax:
[Field_name][Space][Operator][Space]'#[Script-Expression]#'
BUDAT >= '#{DateTime.Now.AddYears(-5).ToString("yyyyMMdd")}#'
Beispiele:
Eingabe | Ausgabe | Beschreibung |
---|---|---|
#{ DateTime.Now.ToString("yyyyMMdd") }# |
yyyyMMdd | Aktuelles Datum im SAP-Format |
#{ String.Concat(DateTime.Now.Year.ToString(), "0101") }# |
yyyy0101 | Aktuelles Datum verkettet mit “0101” |
#{ String.Concat(DateTime.Now.ToString("yyyy"), "0101") }# |
yyyy0101 | Aktuelles Datum verkettet mit “0101” |
#{ String.Concat(DateTime.Now.ToString("yyyyMMdd").Substring(0,4), "0101") }# |
yyyy0101 | Aktuelles Datum verkettet mit “0101”” |