2015-06-02 12 views
5

fangen ich die cl_abap_typedescr=>describe_by_name Methode nenne. Es könnte möglicherweise eine TYPE_NOT_FOUND Ausnahme auslösen. Ich komme Form C# und in C# wäre es ziemlich einfach, einen solchen Fehler zu fangen. Aber in ABAP kann ich die Ausnahme nicht abfangen.Kann nicht bestimmte Ausnahmen

Es beginnt mit der Tatsache, dass ich nicht das TYPE_NOT_FOUND Ausnahmeobjekt in meinem Code verwenden kann. Es existiert einfach nicht. Es geht weiter mit der Tatsache, dass das Fangen CX_ROOT auch nicht hilft. Er ignoriert einfach meine try catch-Klausel und Abstürze:

TRY . 
    descr_ref0 ?= cl_abap_typedescr=>describe_by_name('iabc1'). 
CATCH cx_root. 
    BREAK-POINT. 
ENDTRY. 

Antwort

6

Ich gehe davon aus Sie den Typ-Casting benötigen, so haben einen zusätzlichen Schritt für sie zur Verfügung gestellt.

Diese Syntax ist nicht so elegant wie die neue Syntax, aber es ist die einzige Art, wie ich Ihr Beispiel zu kompilieren bekommen konnte:

data descr_ref1 type ref to cl_abap_typedescr. 

    call method cl_abap_typedescr=>describe_by_name(
    exporting p_name   = 'abc1' 
    receiving p_descr_ref = descr_ref1 
    exceptions type_not_found = 1). 

    if sy-subrc <> 0. 
    break-point. 
    else. 
    descr_ref0 ?= descr_ref1. 
    endif. 

edit:

Sie sagen können, welche Art von Ausnahmen indem man die Methode verwendet:

enter image description here

oder alternativ können Sie das „Pattern“ Befehl im Editor verwenden, um die richtige synt zu erhalten Axt.

+0

Nun, bin ich ziemlich neu in ABAP. Ich hatte gehofft, dass ich dieses Problem umgehen, könnte aber gut ... danke :) –

+0

@thefiloe offensichtlich, wenn Sie Ihre eigenen Methoden schreiben, würden Sie immer klassenbasierte Ausnahmen; aber wegen der Abwärtskompatibilität bleiben die alten Sachen im SAP-Standard. – Esti

Verwandte Themen