Als mathematischer Ausdruck oder als Teil davon können eine Reihe eingebauter ABAP-Funktionen verwendet werden:
[COMPUTE] <n> = <func>( <m> ).
Die Leerzeichen zwischen den Klammern und dem Argument <m> sind dabei zwingend. Das Ergebnis des Aufrufs der Funktion <func> mit dem Argument <m> wird dem Ergebnisfeld <n> zugewiesen.
Funktionen für alle numerischen Datentypen
Die folgenden eingebauten Funktionen funktionieren mit allen drei numerischen Datentypen (F, I, P) als Argument.
Funktionen für alle numerischen Datentypen
Funktion |
Ergebnis |
ABS |
Absolutwert des Arguments |
SIGN |
Vorzeichen des Arguments: 1 X > 0 SIGN( X) = 0 falls X = 0 -1 X < 0 |
CEIL |
Kleinster ganzzahliger Wert, nicht kleiner als das Argument |
FLOOR |
Größter ganzzahliger Wert, nicht größer als das Argument |
TRUNC |
Ganzzahliger Teil des Arguments |
FRAC |
Dezimalteil des Arguments |
Das Argument dieser Funktionen muß nicht notwendigerweise einen numerischen Datentyp haben. Wenn ein anderer Typ gewählt wird, wird er in einen numerischen Typ konvertiert. Aus Performancegründen sollte jedoch möglichst immer der richtige Typ verwendet werden. Die Funktionen selbst haben keinen eigenen Typ und ändern die Rechengenauigkeit einer numerischen Operation also nicht.
DATA n TYPE p DECIMALS 2.
DATA m TYPE p DECIMALS 2 VALUE '-5.55'.
n = abs( m ). WRITE: 'ABS: ', n.
n = sign( m ). WRITE: / 'SIGN: ', n.
n = ceil( m ). WRITE: / 'CEIL: ', n.
n = floor( m ). WRITE: / 'FLOOR:', n.
n = trunc( m ). WRITE: / 'TRUNC:', n.
n = frac( m ). WRITE: / 'FRAC: ', n.
Ausgabe:
ABS: 5.55
SIGN: 1.00-
CEIL: 5.00-
FLOOR: 6.00-
TRUNC: 5.00-
FRAC: 0.55-
DATA: t1(10) TYPE c,
t2(10) TYPE c VALUE '-100'.
t1 = ABS( t2 ).
WRITE t1.
Ergebnis:
100
Zwei Konvertierungen werden durchgeführt. Zunächst wird der Inhalt des Feldes T2 (Typ C) nach Typ P konvertiert. Das System verarbeitet dann die Funktion ABS mit dem Resultat dieser Konversion. Während der Zuweisung zum Feld T1 (Typ C) wird das Ergebnis der Funktion wieder nach Typ C konvertiert.
Funktionen für Gleitpunktzahlen
Die folgenden eingebauten Funktionen arbeiten mit dem Gleitpunktzahlen (Datentyp F) als Argument.
Gleitpunktfunktionen
Funktion |
Bedeutung |
ACOS, ASIN, ATAN; COS, SIN, TAN |
Trigonometrische Funktionen |
COSH, SINH, TANH |
Hyperbolische Funktionen |
EXP |
Exponentialfunktion zur Basis e (e=2.7182818285). |
LOG |
Natürlicher Logarithmus zur Basis e |
LOG10 |
Logarithmus zur Basis 10 |
SQRT |
Quadratwurzel |
Für alle Funktionen gelten die üblichen mathematischen Einschränkungen (z.B. Quadratwurzel nur für positive Zahlen). Andernfalls kommt es zu einem Laufzeitfehler.
Das Argument dieser Funktionen muß nicht notwendigerweise der Gleitpunktdatentyp sein. Wenn Sie einen anderen Typ wählen, wird er wie in beschrieben in den Typ F
konvertiert. Die Funktionen selbst haben den Datentyp F und ändern gegebenenfalls die Rechengenauigkeit einer numerischen Operation.DATA: result TYPE f,
pi(10) TYPE c VALUE '3.14159265'.
result = cos( pi ).
WRITE result.
Das Ergebnis ist -1.00000000000000E+00. Bevor die Berechnung durchgeführt wird, wird das Characterfeld PI automatisch in ein Feld des Typs F konvertiert.