This is a test message to test the length of the message box.
Login
ABAP Tools Arbeiten mit Eclipse
Erstellt von Software-Heroes

ABAP Tools - Arbeiten mit Eclipse (Breakpoint)

258

Wie helfen dir Breakpoints in den ABAP Development Tools effizienter zu debuggen? Schauen wir uns die verschiedenen Arten an und was du damit erreichen kannst.

Werbung


In diesem Artikel schauen wir uns einmal die verschiedenen Breakpoints an und wie du sie für deine tägliche Arbeit effizient nutzen kannst.

 

Einleitung

Wenn du noch die SE80 als Entwicklungsumgebung kennst, dort gab es zwei verschiedene Arten von Breakpoints. Der normal Breakpoint und ein externer Breakpoint. In den meisten Fällen wirst du mit dem normalen Breakpoint gearbeitet haben, um Reports und anderes Coding zu debuggen. Die erfahrenen Entwickler nutzen auch Watchpoints, wenn sie nicht genau wussten, wo der Fehler eigentlich auftritt. Mit ADT gibt es nun weitere Arten von Breakpoints und Möglichkeiten zur Analyse, die wir uns einmal in diesem Artikel anschauen.

 

Vorbereitung

Zur Vorbereitung verwenden wir dabei eine Klasse zum Debuggen, die wir bereits in unserem YouTube Video verwendet haben. Möchtest du mehr zum Debuggen für Anfänger erfahren, dann findest du das Video unten verlinkt. Grundsätzlich kannst du mit der Klasse starten, wenn du gerade ein eigenes Objekt zur Hand hast. Fehlen dir weitere Objekt, dann findest du sie im Repository auf GitHub.

CLASS zcl_bs_ytb_debug_example DEFINITION
  PUBLIC FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

    TYPES: BEGIN OF sale,
             position    TYPE i,
             description TYPE string,
             value       TYPE p LENGTH 15 DECIMALS 2,
             currency    TYPE waers,
           END OF sale.
    TYPES sales TYPE STANDARD TABLE OF sale WITH EMPTY KEY.

  PRIVATE SECTION.
    METHODS get_table_content
      RETURNING VALUE(result) TYPE sales.

    METHODS raise_a_stacked_exception.

    METHODS raise_and_add_message
      RAISING zcx_bs_ytb_general_failure.

    METHODS raise_an_optional_error
      RAISING zcx_bs_ytb_general_failure.

    METHODS get_json_content
      RETURNING VALUE(result) TYPE string.
ENDCLASS.


CLASS zcl_bs_ytb_debug_example IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    DATA(table_content) = get_table_content( ).

    out->write( table_content ).

    TRY.
        raise_a_stacked_exception( ).
      CATCH cx_root INTO DATA(error).
        out->write( error->get_text( ) ).
    ENDTRY.

    DATA(json_string) = get_json_content( ).

    out->write( json_string ).
  ENDMETHOD.


  METHOD get_table_content.
    RETURN VALUE #( ( position = 1 description = `Ben's computer` value = '100.00' currency = 'USD' )
                    ( position = 2 description = `On little chair` value = '20.99' currency = 'EUR' )
                    ( position = 3 description = `A dishwasher` value = '250.00' currency = 'EUR' )
                    ( position = 4 description = `Used old car` value = '1250.00' currency = 'USD' ) ).
  ENDMETHOD.


  METHOD raise_a_stacked_exception.
    TRY.
        raise_and_add_message( ).
      CATCH zcx_bs_ytb_general_failure INTO DATA(failure).
        RAISE EXCEPTION NEW cx_sy_itab_line_not_found( previous = failure ).
    ENDTRY.
  ENDMETHOD.


  METHOD raise_and_add_message.
    TRY.
        raise_an_optional_error( ).
      CATCH zcx_bs_ytb_general_failure INTO DATA(failure).
        RAISE EXCEPTION NEW zcx_bs_ytb_general_failure( textid   = zcx_bs_ytb_general_failure=>message_specific
                                                        previous = failure ).
    ENDTRY.
  ENDMETHOD.


  METHOD raise_an_optional_error.
    DATA(raise_error) = abap_false.

    IF raise_error = abap_true.
      RAISE EXCEPTION NEW zcx_bs_ytb_general_failure( ).
    ENDIF.
  ENDMETHOD.


  METHOD get_json_content.
    RETURN `{ "Name": "Gerd", "Age": 10, "Child": True }`.
  ENDMETHOD.
ENDCLASS.

 

Breakpoints

Einen Breakpoint kannst du am einfachsten setzen, wenn du vor dem Quellcode auf die Zeilennummer einen Rechtsklick machst. mit den ersten beiden Optionen kannst du die verschiedenen Breakpoints umschalten. Unter "Debug Properties..." findest du weitere Einstellungen, die aber auch systemabhängig sind und wir später benötigen.

 

Breakpoint

Der normale Breakpoint wird blau dargestellt und funktioniert wie ein normaler Breakpoint. Sobald das Coding durchlaufen wird, wird der Debugger geöffnet und du kannst mit dem Debuggen beginnen.

 

Diese Art von Breakpoint ist auch gleichzeitig ein externer Breakpoint. Auch bei RFC und HTTP Aufrufen wird damit der Breakpoint durchlaufen. Bei Standardeinstellung wird das Debugging für den aktuellen User durchgeführt. Über die Debug Properties (siehe oben), kannst du auch auf einen anderen User einstellen oder ein bestimmtes Terminal.

 

Soft Breakpoint

Der Soft Breakpoint ist eine ganz spezielle Form von Breakpoint. In der IDE wird er als grüner Punkt dargestellt. Ist der Debugger nicht aktiv, werden alle Soft Breakpoint ignoriert und der Debugger startet nicht. Ist der Debugger aktiv und du springst über diese Art Breakpoint, dann funktioniert er ganz normal.

 

Damit eignet sich der Breakpoint perfekt, wenn du größere Strecken debuggen willst, aber über einen Einstiegspunkt das Debugging bestimmen möchtest.

 

Breakpoint View

Über den "Breakpoints (Debug)" View bekommst du eine Information über alle Breakpoints, die auf allen offenen Systemen gesetzt sind.

 

Spezifisch

Spezifische Breakpoints kannst du über das Menü erstellen. So zum Beispiel, wenn du immer anhalten möchtest, wenn ein bestimmtes Statement ausgelöst wird oder eine bestimmte Meldung erzeugt wird. Ebenso kannst du an spezifische Ausnahmen anhalten, wenn du diese in der Liste suchst.

 

Optionen

Klickst du einen Breakpoint in der Liste an, dann findest du weitere Einstellungen im unteren Bereich des Views. So kannst du zum Beispiel zwischen einem normalen und einem Soft Breakpoint wechseln oder eine Kondition definieren. Wird der Breakpoint erreicht und die Kondition trifft zu, dann wird angehalten. Die Kondition kannst du auch mit einem Watchpoint vergleichen

 

Fazit

Die ABAP Development Tools bieten zusätzliche Optionen zum Debuggen von Quellcode, als es noch die SE80 machte. Da immer mehr Anwendungen auf Stateless und HTTP Kommunikation setzen, ist es auch wichtig, dass diese Anwendungen leicht debugbar bleiben.

 

Weitere Informationen:
YouTube - ABAP Tools - Debugging for Beginners


Enthaltene Themen:
ToolsADTEclipseBreakpoint
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP Tools - IDE Actions (Wertehilfe)

Kategorie - ABAP

Schauen wir uns einmal im Detail an, wie wir eine Wertehilfe für unsere Eingabe für unsere IDE Action in ADT erstellen können. Dabei schauen wir uns mehrere Möglichkeiten und Abhängigkeiten an.

11.11.2025

ABAP Tools - IDE Actions (Eingabe)

Kategorie - ABAP

Wie können wir eigentlich vor der Eingabe noch Informationen holen, bevor die eigentliche IDE Action in ABAP ausgeführt wird? Implementieren wir dazu die erste Version einer einfachen Eingabe.

04.11.2025

ABAP Tools - IDE Actions (Ausgabe)

Kategorie - ABAP

Schauen wir uns an, welche Ausgabemöglichkeiten wir aktuell mit IDE Actions haben und was wir damit erreichen können. Dabei schauen wir uns jeweils unterschiedliche Beispiele für die Implementierung an.

28.10.2025

ABAP Tools - IDE Actions (Anlage)

Kategorie - ABAP

Legen wir gemeinsam unsere erste IDE Action für die ABAP Development Tools an. Dabei führen wir dich Schritt für Schritt durch den Prozess und die Oberflächen.

24.10.2025

ABAP Tools - IDE Actions (Einführung)

Kategorie - ABAP

Schauen wir uns einmal die Grundlagen und eine kurze Einführung in das Thema IDE Actions an. Dabei werden wir uns die Verfügbarkeit und andere wichtige Details anschauen, was du als ABAP Entwickler wissen solltest.

21.10.2025