Castingfähigkeit testen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Castingfähigkeit testen

Beitrag von kl ( / / 0 / 3 ) »
Hallo,

ist es möglich, in ABAP die Castingfähigkeit einer Zuweisung zu testen, so daß man Laufzeitfehlern bei Castings zuvorkommen kann, ohne die entsprechenden Ausnahmen behandeln zu müssen?

Also etwas in der Richtung:

Code: Alles auswählen.

if a = b is castable.
  [...]
else.
  [...]
endif.
Gruß,
Kaspar

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von ewx (Top Expert / 4787 / 295 / 629 ) »
Eigentlich wollte ich ja helfen:

Code: Alles auswählen.

DATA:
  a TYPE n VALUE '1',
  b TYPE c VALUE 'F'.

CATCH SYSTEM-EXCEPTIONS convt_no_number = 2
                        others          = 9.
  IF a = b.
    WRITE: / 'A=B'.
  ELSE.
    WRITE: / 'ungleich'.
  ENDIF.
ENDCATCH.
IF sy-subrc > 0.
  WRITE: / 'Fehler', sy-subrc.
ENDIF.
Ich kriege aber trotzdem einen Laufzeitfehler. Genaut den, den ich eigentlich abfangen wollte: CONVT_NO_NUMBER.

Warum geht das nicht?

Gruß,
_.Enno._
Zuletzt geändert von ewx am 26.05.2005 14:45, insgesamt 1-mal geändert.

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
@Enno:
Hmmm, das gleiche Phänomen habe ich auch... :?
Irgendwie ist das ja nicht im Sinne des Erfinders. Scheint mir ein Kernel-Bug zu sein... :cry:

@Topic:
Es ging IMHO darum, genau das von Enno erwähnte CATCH-ENDCATCH-Konstrukt durch vorherige Abfrage zu vermeiden. Da kenne ich aber keine Möglichkeit.

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von black_adept (Top Expert / 3950 / 105 / 886 ) »
@Enno und Haubi: Das Stichwort ist "Schlüsselwortabhängigkeit" (siehe F1 zu CATCH).

Zu "IF" sind eben keine abfangbaren Laufzeitfehler definiert.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
black_adept hat geschrieben:@Enno und Haubi: Das Stichwort ist "Schlüsselwortabhängigkeit" (siehe F1 zu CATCH).

Zu "IF" sind eben keine abfangbaren Laufzeitfehler definiert.
Bild Bild

Mann-O-Mann, da hab ich mich aber auch auf's Glatteis führen lassen... :oops:

Beitrag von ewx (Top Expert / 4787 / 295 / 629 ) »
Moin Stefan,

das wäre ja blöd...

Ausserdem funktioniert das folgende auch nicht:
Da du ja sagst, dass es für IF nicht funktioniert, habe ich versucht, eine direkte Zuweisung zu machen.
Die ist aber in Ordnung.
eigentlich müsste er bei "n = c" Schwierigkeiten bekommen, denn das ist ja die Zuweisung, die er beim IF nicht machen kann.
Mit MOVE schreibt er aber einfach eine "0" in das Feld. Als wäre nix gewesen.

Warum kann er dann den IF nicht interpretieren???

Code: Alles auswählen.

DATA:  n TYPE n VALUE '1',
       c TYPE c VALUE 'F'.
*** In Ordnung:
n = c.

*** Kurzdump:
*IF n = C.
*  WRITE: / 'N=A'.
*ELSE.
*  WRITE: / 'ungleich'.
*ENDIF.
wundert sich Enno.

Beitrag von black_adept (Top Expert / 3950 / 105 / 886 ) »
Hi Enno,

da hab ich wirklich nochmal nachschauen müssen, aber selbst hierfür gibt es eine Erklärung.

1.) Im Fall a = b gelten die Konvertierungsregeln des "MOVE"-Befehls. Dort findest du, dass bei Operation C->N einfach nur die Ziffern betrachtet werden. Somit ist die Konvertierung möglich.

2.) Der Fall IF a = b.
Hier hab ich mich aber auch ein paar Schritte durch die F1-Hilfe durchhangeln müssen bis zur richtigen Stelle. Aber ich hatte die mal gesehen und wusste ja wonach ich suche...
gelten die Regeln für IF.
Dort ist insbesondere der "logische Ausdruck" a = b zu beachten.
Dies ist in der Doku der 1. Fall: "Operatoren für alle Datentypen".
Und hier findet sich dann auch nach ein wenig Regelstudium die Antwort.
Es tritt der dort beschriebene Fall "4." ein. Und hier werden a und b in den Typ "P" konvertiert und das geht dann schief.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) »
Hallo,

ok, danke für die Antworten. Schade, daß es außer mit "catch" nicht geht. (Denn nicht jeder "MOVE"-Fehler produziert eine abfangbare Exception...)

Gruß,
Kaspar

Seite 1 von 1

Vergleichbare Themen

6
Antw.
2900
Views
Performance testen?
von etalon » 13.05.2004 07:50 • Verfasst in ABAP® Core
2
Antw.
6609
Views
RFC-Verbindung testen
von David11384 » 15.09.2008 09:25 • Verfasst in ABAP® für Anfänger
4
Antw.
3185
Views
WEBSERVICES testen?
von PaddyG » 01.06.2005 10:36 • Verfasst in Web Application Server
3
Antw.
1621
Views
Testen von Berechtigungsobjekten
von Meex » 23.05.2007 07:47 • Verfasst in ABAP® Core
1
Antw.
1518
Views
Testen von ABAP Code
von DavidHenn » 07.07.2011 10:27 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.