hab mich gerade hier im Forum angemeldet. Bin selber gerade in
einer Fortbildung zu ABAP Entwickler und wäre gerade sehr dankbar darüber
wenn mir jemand bei meinem Code eine Hilfestellung geben könnte.
Es handelt sich um ein einfaches Rechnerprogramm.
Vermieden werden soll lediglich das man nicht durch null teilen darf und im
Feld pa_op kein anderes Zeichen als die anderen Operanten angegeben werden.
Setze ich im feld pa int2 die zahl auf null bekomme ich das message Feld angezeigt- bestätigt man das Feld
wird danach ein Dump ausgelöst. weiss irgend jemand warum?
Ich hoffe mein Code ist nicht zu trivial.. bin noch ganz am Anfang.
Über Hilfe wäre ich dankbar.
Hier der Code.
*******************************************************************************
PARAMETERS pa_int1 TYPE i.
PARAMETERS pa_op TYPE c LENGTH 1.
PARAMETERS pa_int2 TYPE i.
DATA gv_result TYPE p LENGTH 16 DECIMALS 2.
IF pa_op = '/' and pa_int2 = 0.
MESSAGE 'nicht durch null teilbar' TYPE 'I'.
ENDIF.
CASE pa_op.
WHEN '+'.
gv_result = pa_int1 + pa_int2.
WHEN '-'.
gv_result = pa_int1 - pa_int2.
WHEN '*'.
gv_result = pa_int1 * pa_int2.
WHEN '/'.
gv_result = pa_int1 / pa_int2.
WHEN OTHERS.
MESSAGE 'Falscher Operant' TYPE 'I'.
ENDCASE.
das ist eigentlich ganz einfach. Debugge doch einfach mal dein Programm - du wirst sehen, dass deine Nachricht ausgegeben wird, danach aber die weitere Verarbeitung ganz normal ausgeführt wird und somit dann auch versucht wird durch 0 zu dividieren.
Schau dir mal die Doku zum Verhalten von Nachrichten an, dort ist erklärt wie sich der Befehl MESSAGE verhält, je nachdem was für ein "TYPE" mit angegeben wird. Da du als Typ 'I', also eine Informationsnachricht ausgewählt hast, wird die Verarbeitung des Programmes weiter ausgeführt. Um das Programm abbrechen zu lassen müsstest du den Typ 'E' (oder 'A') verwenden.