Exception Frage

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

Exception Frage

Beitrag von Basler84 (ForumUser / 60 / 31 / 0 ) »
Hallo zusammen,

ich bekomme des öfteren Dumps beim Aufruf eines EGFs, allerdings nicht immer. Der Dump kommt aus dem Standard. Jetzt die Frage ob ich den irgendwie abfangen kann.

Code: Alles auswählen.

METHOD FLUSH .
* ...
  data: rc like sy-subrc, msgli like sy-msgli.

  CALL FUNCTION 'AC_FLUSH_CALL'
       EXPORTING
            SYSTEM_FLUSH = ' '
       IMPORTING
            MESSAGE_NR   = rc
            MESSAGE_TEXT = msgli.

  sy-subrc = rc.
  sy-msgli = msgli.

  CASE SY-SUBRC.
    WHEN 0.
    WHEN 1.
*     system_error
      MESSAGE ID 'CNDP' TYPE 'X' NUMBER 007 RAISING CNTL_SYSTEM_ERROR.
    WHEN 2.
*     method_call_error
      MESSAGE ID 'CNDP' TYPE 'X' NUMBER 006 RAISING CNTL_ERROR.
    WHEN 3.
*     property_set_error
      MESSAGE ID 'CNDP' TYPE 'X' NUMBER 006 RAISING CNTL_ERROR.
    WHEN 4.
*     property_get_error
      MESSAGE ID 'CNDP' TYPE 'X' NUMBER 006 RAISING CNTL_ERROR.
    WHEN 8.
*     maximal number of modi reached
      MESSAGE ID 'CNDP' TYPE 'X' NUMBER 011 RAISING CNTL_SYSTEM_ERROR.
    WHEN OTHERS.
      RAISE CNTL_ERROR.
  ENDCASE.
ENDMETHOD.
Hier wird ein cntl_error geworfen. In der Klasse sind die Ausnahmen CNTL_SYSTEM_ERROR und CNTL_ERROR definiert.

Der Aufruf der Methode erfolgt auch im Standard und sieht folgendermaßen aus:

Code: Alles auswählen.

method GET_CONTROL_VERSION.

  STATICS: version    TYPE string,
           release(4) TYPE n,
           sp         TYPE string,
           patch      TYPE string.

  IF version IS INITIAL.

    CALL METHOD i_ctrl->call_method
      EXPORTING
        method     = 'GetProperty'
        p_count    = 2
        p1         = 'Control'
        p2         = 'Version'
        queue_only = space
      IMPORTING
        result     = version.
  [b]  CALL METHOD cl_gui_cfw=>flush.[/b]

    SPLIT version AT '.' INTO release sp patch version.

  ENDIF.

  e_release = release.
  e_version = version.

endmethod.
In der Klasse sind keine Ausnahmen definiert.

Jetzt meine Frage:

Habe ich die Möglichkeit den Dump weiter oben im Call Stack abzufangen auch wenn die Ausnahme im Standardaufruf nicht abgefangen wurde?

LG
Basler

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


Re: Exception Frage

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
CNTL_*-Fehler sind nur sehr schwer "abfangbar" und sollten in einem ersten Ansatz grundsätzlich vermieden werden.
Außerdem ist noch gar nicht sichergestellt, dass wirklich der von dir gefundene Befehl schuld daran hat.

Die Verarbeitung zum GUI hin erfolgt aus Performancegründen Blockweise. Sprich es werden soviele Befehle wie möglich in einem Rutsch geschickt. In deinem Fall passiert es, dass irgendeiner dieser Befehle nicht ausgeführt werden kann und dadurch die ganze Verarbeitung als "fehlerhaft" im Dump aufscheint.

Um nun genau die betreffende Stelle die den Fehler auslöst ermitteln zu können, musst du im GUI die "Automatische Queue Syncrone Verarbeitung einschalten".
Im Menü unter System->Hilfsmittel.

Aber Achtung: Dadurch wird der GUI mitunter SEHR träge, also diese Option nur zur Fehleranalyse einschalten (bei Benutzer empfehle ich das nur nur unter Aufsicht)

Wenn es dann wieder zu dem Fehler kommt ist im Kuzdump sofort ersichtlich welches Control bzw. welcher Methodenaufruf des Controls schief gegangen ist.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Basler84

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Exception Frage

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
Was auch immer ein EGF sein mag... Solche Fehler passieren meistens in TreeControls, weil z.B. eine Knoten-ID doppelt vergeben wurde.
Das findet man raus, wenn man den GUI-Trace einschaltet.
SAP Controls im Eigenbau Seite 30 "Fehleranalyse".

Re: Exception Frage

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
ewx hat geschrieben:Solche Fehler passieren meistens in TreeControls, weil z.B. eine Knoten-ID doppelt vergeben wurde.
Was ich schon ein paar mal erwähnt hab: Besser ein Tree-Model verwenden als ein Tree-Control. Da werden die Fehler schon vorab in einer verständlichen Fehlermeldung abgefackelt.
btw. CL_GUI_ALV_TREE ist ein Tree-Control :cry:
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

8
Antw.
4966
Views
Exception ?
von simethandreas » 21.10.2009 14:15 • Verfasst in ABAP® für Anfänger
2
Antw.
2664
Views
BSP Exception
von Moksha » 04.03.2005 12:14 • Verfasst in Web-Dynpro, BSP + BHTML
8
Antw.
726
Views
Exception - MSG
von HH_ABAP » 20.06.2023 08:15 • Verfasst in ABAP® für Anfänger
1
Antw.
2387
Views
com.sap.mw.jco.JCO$Exception: (102) RFC_ERROR_COMMUNICATION
von cschmoel » 18.10.2012 09:12 • Verfasst in Basis
11
Antw.
1397
Views
Langtext zur Exception
von ralf.wenzel » 28.05.2019 09:26 • Verfasst in ABAP® Core

Über diesen Beitrag


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.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2409
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8998