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 / 4276 / 213 / 1140 ) »
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 / 4784 / 294 / 628 ) »
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 / 4276 / 213 / 1140 ) »
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.
339
Views
Exception - MSG
von HH_ABAP » 20.06.2023 08:15 • Verfasst in ABAP® für Anfänger
2
Antw.
2500
Views
BSP Exception
von Moksha » 04.03.2005 12:14 • Verfasst in Web-Dynpro, BSP + BHTML
8
Antw.
4692
Views
Exception ?
von simethandreas » 21.10.2009 14:15 • Verfasst in ABAP® für Anfänger
1
Antw.
1839
Views
Exception in BOR Methode
von winter06 » 04.03.2007 19:48 • Verfasst in ABAP Objects®
11
Antw.
1193
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

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 75

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.

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 75

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 132
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 166