ABAPCOMPUTE_ARITH - COMPUTE ARITH
RFUMSV00 - Advance Return for Tax on Sales/Purchases RFUMSV00 - Advance Return for Tax on Sales/PurchasesDiese Dokumentation steht unter dem Copyright der SAP AG.
arith_exp - Arithmetische Ausdrücke
Syntax
... [+|-] operand1
[{+|-|*|/|DIV|MOD|**} [+|-] operand2
[{+|-|*|/|DIV|MOD|**} [+|-] operand3
... ]] ... .
Wirkung
Ein arithmetischer Ausdruck formuliert eine Berechnung. Das Ergebnis eines arithmetischen Ausdrucks ist ein numerischer Wert, der in demRechentyp vorliegt,der dem arithmetischen Ausdruck zugeordnet ist. In einem arithmetischen Ausdruck arith_exp kann ein Operand operand1 über diearithmetischen Operatoren+, -, *, /, DIV, MOD oder ** mit einem oder mehreren Operanden operand2, operand3 ... verknüpft werden, wobeiKlammerungen möglichsind. Arithmetische Ausdrücke kommen in der Anweisung COMPUTE oder anLesepositionen bestimmter Anweisungen (seit Release 7.1) vor.
Die Operandenpositionen operand sind allgemeine Ausdruckspositionen, d.h. es können numerische Datenobjekte,eingebaute Funktionen,funktionale Methodenoder geklammerte arithmetische Ausdrücke angegeben werden. Die arithmetischen Operatoren +,-, *, /, DIV, MOD und ** verknüpfen zwei benachbarteOperanden. Bei der Auswertung des Ausdrucks wird daraus ein numerischer Wert berechnet, der mit demnächsten benachbarten Operanden verknüpft wird. Die Priorität der Verknüpfung richtet sich nach den verwendetenOperatoren.
Vor jedem Operanden können ein oder mehrere durch Leerzeichen getrennte Vorzeichen + oder - in beliebiger Reihenfolge stehen. Jedes Vorzeichen wirkt so, als sei an seiner Stelle der Ausdruck +1* bzw. -1 * angegeben, wodurch ein Vorzeichen die gleiche Priorität wie eine Multiplikation hat.
Wenn funktionale Methoden, oderzeichenartigeAusdrücke als Operanden angegeben sind, werden diese vor der Auswertung des gesamten übrigenAusdrucks von links nach rechts ausgeführt und die Rückgabewerte für die Verwendung an den entsprechenden Operandenpositionen zwischengespeichert.Zeichenartige Verarbeitungsfunktionen undZeichenkettenausdrücke sind dabei nur als Argumente vonBeschreibungsfunktionen möglich.
Hinweise
- Es ist darauf zu achten, ob in einer angegebenen funktionalen Methode der Wert eines Datenobjekts geändertwird, das ebenfalls als Operand verwendet wird. Selbst wenn ein solcher Operand links von der funktionalen Methode steht, wird sein Wert immer vor seiner Auswertung von der Methode geändert.
- Arithmetische Ausdrücke und Zeichenkettenausdrücke sind nicht mischbar.Beschreibungsfunktionen,die als Operanden arithmetischer Ausdrücke verwendet werden, können aber Zeichenkettenausdrücke als Argumente enthalten.
Beispiel
Dieser Programmabschnitt berechnet den Hyperbelsinus mit der Eulerschen Formel im Rechentyp decfloat16 und mit dereingebauten Funktion sinh im Rechentyp f und gibt den Unterschied aus.
DATA: x TYPE i,
result1 TYPE decfloat16,
result2 TYPE f,
diff TYPE decfloat16.
DO 2001 TIMES.
TRY.
x = sy-index - 1001.
result1 = ( ( exp( x ) - exp( -1 * x ) ) / 2 ).
result2 = sinh( x ).
diff = abs( result1 - result2 ).
IF diff <> 0.
WRITE: / x, diff STYLE cl_abap_math=>scientific.
ENDIF.
CATCH cx_sy_conversion_overflow cx_sy_arithmetic_overflow.
ENDTRY.
ENDDO.
Ausnahmen
Behandelbare Ausnahmen
- Ursache: Unzulässiger Aufruf von acos
Laufzeitfehler: COMPUTE_ACOS_DOMAIN (abfangbar) - Ursache: Unzulässiger Aufruf von asin
Laufzeitfehler: COMPUTE_ASIN_DOMAIN (abfangbar) - Ursache: Unzulässiger Aufruf von cos
Laufzeitfehler: COMPUTE_COS_DOMAIN (abfangbar) - Ursache: Unzulässiger Aufruf von log10
Laufzeitfehler: COMPUTE_LOG10_ERROR (abfangbar) - Ursache: Unzulässiger Aufruf von log
Laufzeitfehler: COMPUTE_LOG_ERROR (abfangbar) - Ursache: Unzulässiges Argument bei Potenzierung
Laufzeitfehler: COMPUTE_POW_DOMAIN (abfangbar) - Ursache: Unzulässiger Aufruf von sin
Laufzeitfehler: COMPUTE_SIN_DOMAIN (abfangbar) - Ursache: Unzulässiger Aufruf von sqrt
Laufzeitfehler: COMPUTE_SQRT_DOMAIN (abfangbar) - Ursache: Unzulässiger Aufruf von tan
Laufzeitfehler: COMPUTE_TAN_DOMAIN (abfangbar)
- Ursache: Überlauf bei arithmetischer Operation (Typ p)
Laufzeitfehler: BCD_OVERFLOW (abfangbar) - Ursache: Überlauf bei arithmetischer Operation (alle Operanden Typ p)
Laufzeitfehler: COMPUTE_BCD_OVERFLOW (abfangbar) - Ursache: Überlauf bei cosh
Laufzeitfehler: COMPUTE_COSH_OVERFLOW (abfangbar) - Ursache: Über- oder Unterlauf bei exp
Laufzeitfehler: COMPUTE_EXP_RANGE (abfangbar) - Ursache: Überlauf bei Addition (Typ decfloat)
Laufzeitfehler: COMPUTE_DECFLOAT_ADD_OVERFLOW - Ursache: Überlauf bei Subtraktion (Typ decfloat)
Laufzeitfehler: COMPUTE_DECFLOAT_SUB_OVERFLOW - Ursache: Überlauf bei Multiplikation (Typ decfloat)
Laufzeitfehler: COMPUTE_DECFLOAT_MUL_OVERFLOW - Ursache: Überlauf bei Division (Typ decfloat)
Laufzeitfehler: COMPUTE_DECFLOAT_DIV_OVERFLOW - Ursache: Überlauf bei Division (Typ decfloat)
Laufzeitfehler: COMPUTE_DECFLOAT_DIV_OVERFLOW - Ursache: Überlauf bei Division (Typ f)
Laufzeitfehler: COMPUTE_FLOAT_DIV_OVERFLOW (abfangbar) - Ursache: Überlauf bei Subtraktion
(Typ f)
Laufzeitfehler: COMPUTE_FLOAT_MINUS_OVERFLOW (abfangbar) - Ursache: Überlauf bei Addition (Typ f)
Laufzeitfehler: COMPUTE_FLOAT_PLUS_OVERFLOW (abfangbar) - Ursache: Überlauf bei Multiplikation
(Typ f)
Laufzeitfehler: COMPUTE_FLOAT_TIMES_OVERFLOW (abfangbar) - Ursache: Überlauf bei |-2147483648|
Laufzeitfehler: COMPUTE_INT_ABS_OVERFLOW (abfangbar) - Ursache: Ganzzahl-Überlauf bei Division
Laufzeitfehler: COMPUTE_INT_DIV_OVERFLOW (abfangbar) - Ursache: Ganzzahl-Überlauf bei Subtraktion
Laufzeitfehler: COMPUTE_INT_MINUS_OVERFLOW (abfangbar) - Ursache: Ganzzahl-Überlauf bei Addition
Laufzeitfehler: COMPUTE_INT_PLUS_OVERFLOW (abfangbar) - Ursache: Ganzzahl-Überlauf bei Multiplikation
Laufzeitfehler: COMPUTE_INT_TIMES_OVERFLOW (abfangbar) - Ursache: Unzulässiger Aufruf von log10
Laufzeitfehler: COMPUTE_LOG10_ERROR (abfangbar) - Ursache: Unzulässiger Aufruf von log
Laufzeitfehler: COMPUTE_LOG_ERROR (abfangbar) - Ursache: Über- oder Unterlauf bei Potenzierung
Laufzeitfehler: COMPUTE_POW_RANGE (abfangbar) - Ursache: Überlauf bei sinh
Laufzeitfehler: COMPUTE_SINH_OVERFLOW (abfangbar) - Ursache: Überlauf bei Funktion round oder rescale
Laufzeitfehler: COMPUTE_ROUND_RESCALE_OVERFLOW
- Ursache: Operand nicht als Zahl interpretierbar
Laufzeitfehler: CONVT_NO_NUMBER (abfangbar)
- Ursache: Überlauf bei arithmetischer Operation (Typ p, mit spezifizierter Länge)
Laufzeitfehler: BCD_FIELD_OVERFLOW (abfangbar) - Ursache: Operand zu groß oder (Zwischen-)Ergebnis zu groß
Laufzeitfehler: CONVT_OVERFLOW (abfangbar)
- Ursache: Ergebnis von cos ungenau
Laufzeitfehler: COMPUTE_COS_LOSS (abfangbar) - Ursache: Ergebnis von sin ungenau
Laufzeitfehler: COMPUTE_SIN_LOSS (abfangbar) - Ursache: Ergebnis von tan ungenau
Laufzeitfehler: COMPUTE_TAN_LOSS (abfangbar)
- Ursache: Unzulässige Funktion für Rechentyp decfloat34
Laufzeitfehler: COMPUTE_UNSUPPORTED_DECF_FUNC
- Ursache: Division durch 0 (Typ p)
Laufzeitfehler: BCD_ZERODIVIDE (abfangbar) - Ursache: Division durch 0 (Typ f)
Laufzeitfehler: COMPUTE_FLOAT_ZERODIVIDE (abfangbar) - Ursache: Division durch 0 (Typ i)
Laufzeitfehler: COMPUTE_INT_ZERODIVIDE (abfangbar) - Ursache: Division durch 0 (Typ decfloat)
Laufzeitfehler: COMPUTE_DECFLOAT_ZERODIVIDE
Unbehandelbare Ausnahmen
- Ursache: p-Feld enthält kein korrektes BCD-Format
Laufzeitfehler: BCD_BADDATA - Ursache: p-Feld enthält kein korrektes Vorzeichen
Laufzeitfehler: BCD_NO_SIGN
CL_GUI_FRONTEND_SERVICES - Frontend Services SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 16601 Date: 20120526 Time: 193013 triton ( 373 ms )






