FORMAT

Mit der FORMAT-Funktion können Werte (Value) verschiedenster Datentypen in einen String mit bestimmter Länge (Length) und Formatierung (FormatStr/FormatNumber) konvertiert werden.

Parameter

Der Parameter Value ist der Wert, der in einen String konvertiert werden soll. Dieser Wert kann ein jeglicher fundamentaler Datentyp sein wie beispielsweise Option, Integer, BigInteger, Decimal, Char, Text, Code, Date, Time, DateTime, Boolean oder GUID. Es entsteht ein Laufzeitfehler, sobald der resultierende String die maximale Länge von String überschreitet.

Der zweite Parameter (Length) ist optional und gibt die Länge von String an

  • Ist Length = 0 dann wird Value als Ganzes zurückgegeben (Standardverhalten)
  • Ist Length > 0 dann wird der resultierenden String genau diese Länge haben. Ist Value kürzer dann werden Leerzeichen, je nach gewählter Formatierung, vor oder hinter dem String eingefügt. Ist Value länger, dann wird der String abgekürzt.
  • Ist Length < 0 dann wird der resultierende String keine Leerzeichen vor oder nach dem Wert besitzen. Ist Value kürzer, dann entspricht die Länge des Strings, dem des Wertes. Überschreitet Value die Länge, dann wird der String abgekürzt.

Der dritte Parameter (FormatStr oder FormatNumber, wobei FormatStr und FormatNumber nicht gleichzeitig genutzt werden können) definiert die Formatierung. Die wesentlichen Format-Formartierungen liefert bei Verwendung von FormatStr einige Beispiele. Bei Verwendung von FormatNumber können vordefinierten Formate (0 bis 4) ausgewählt werden. Folgende Formate stehen dabei zur Auswahl:

  • <Sign><Integer Thousand><Decimals> ist Format 0
  • <Sign><Integer><Decimals> ist Format 1
  • <Sign><Integer><Decimals><Comma,.> ist Format 2
  • <Integer Thousand><Decimals><Sign,1> ist Format 3
  • <Integer><Decimals><Sign,1> ist Format 4

Rückgabewert

Die Funktion liefert den konvertierten String (String) des übergebenen Wertes zurück.

Beispiel 1

Es wird folgender C/AL-Code eingefügt:

MESSAGE(
  'Der konvertierte Wert >%1< \\' + 
  'Der konvertierte Wert >%2< \\' +
  'Der konvertierte Wert >%3<',
  FORMAT(-123456.78, 12, 3),
  FORMAT(-123456.78, 12, '<Standard Format,3>'),
  FORMAT(-123456.78, 12, '<Integer Thousand><Decimals><Sign,1>')
);

Sobald der Code ausgeführt wird, erscheint das folgende Ergebnis:

Der konvertierte Wert > 123.456,78-<

Dabei ist zu beachten, dass alle drei verschiedenen Formatierungen zum selben Ergebnis führen. Dies ist allerdings auch von den Länder- & Regionseinstellungen des PCs abhängig auf denen der Code ausgeführt wird. Außerdem werden Leerzeichen vorangestellt um das Minimum an 12 Zeichen zu erreichen.

Beispiel 2

Es wird folgender C/AL-Code eingefügt:

MESSAGE('Das Heutige Datum: %1.',
  FORMAT(TODAY,0,'<Weekday Text>, <Day>. <Month Text>'));

Sobald der Code ausgeführt wird, erscheint das folgende Ergebnis:

Das Heutige Datum: Mittwoch, 15. November.