[ABAP] Objektorientiertes (OO) Exceptionhandling mit TRY … CATCH

Variante 1 (implizites Erzeugen von Objekten)

* DEMO_CATCH_EXCEPTION

START-OF-SELECTION.
  TRY.
      RAISE EXCEPTION TYPE cx_sy_zerodivide.
* Exception abfangen
    CATCH cx_sy_zerodivide INTO DATA(e_text).
      MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
  ENDTRY.

Variante 2 (explizites Erzeugen von Objekten)

START-OF-SELECTION.
  TRY.
      DATA(excp) = NEW cx_os_object_not_found( classname = 'MYCLASS' ).
      RAISE EXCEPTION excp.
* Exception abfangen
    CATCH cx_os_object_not_found INTO DATA(e_text).
      MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
  ENDTRY.

Variante 3 (explizites Erzeugen von Objekten – RE-RAISING)

START-OF-SELECTION.
  TRY.
      TRY.
          DATA(excp) = NEW cx_sy_file_open( filename = 'xyz.txt' ).
          RAISE EXCEPTION excp.
* Exception abfangen
        CATCH cx_root INTO DATA(exc).
* RE-RAISING einer neuen Exception
          RAISE EXCEPTION TYPE cx_sy_file_position
            EXPORTING
              previous = exc.
      ENDTRY.
* Exception abfangen
    CATCH cx_root INTO DATA(exc2).
      MESSAGE exc2->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
  ENDTRY.

Variante 4 (Runtime Exceptions)

START-OF-SELECTION.
  TRY.
* implizites Erzeugen von Exception cx_sy_zerodivide
      DATA(erg) = 1 / 0.
* Exception abfangen
    CATCH cx_root INTO DATA(e_text).
      MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
  ENDTRY.

Variante 5 (Beispiel – Definition und Auslösen einer OO-Exception)

CLASS my_class DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: my_method
* Exception propagieren
      RAISING cx_sy_zerodivide.
ENDCLASS.
 
CLASS my_class IMPLEMENTATION.
  METHOD my_method.
    ...
* Auslösen der Systemexception cx_sy_zerodivide
    RAISE EXCEPTION TYPE cx_sy_zerodivide.
    ...
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
* Behandlung einer OO-Exception
  TRY.
* Funktionsaufruf, der Exception cx_sy_zerodivide auslösen kann
      my_class=>my_method( ).
* Exception cx_sy_zerodivide abfangen
    CATCH cx_sy_zerodivide INTO DATA(e_text).
      MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
  ENDTRY.

Weiterführende Information: Link und Link

Nützliche Tutorial-Seiten zum Thema SAP / ABAP

ABAP – Schlüsselwortdokumentation

  • Syntax und Bedeutung der Schlüsselwörter der Sprache ABAP und ABAP Objects (benötigt etwas Zeit beim Laden)

ABAP – Releaseabhängige Änderungen

  • ABAP – Releaseabhängige Änderungen

Tastenkombinationen im SAP

  • Auflistung von gängigen SAP-Tastenkombinationen

OK-Code-Zeile im SAP

  • Infos zu OK-Code-Zeile

SAP ABAP Tables

  • The Best Online document for SAP ABAP Tables

SAP ABAP Objects

  • SAP Objekte und Transaktionen

Tricktresor

  • Tipps und Tricks zu SAP

SAP Brains

  • SAP Online Tutorials zu vielen Themen

ABAP Mentor

  • SAP / ABAP Artikel zu vielen Themen

ABAP/4 How-To Compendium (Matthias König)

  • ABAP How-Tos

ABAPforum

  • ABAP Forum

Zevolving

  • Code Snippets und Tutorials

Patrik Weber

  • Kollaborieren statt Kollabieren

Denis Reis

  • ABAP Snippets und Tutorials

Łukasz Pęgiel

  • ABAP Snippets und Tutorials

Sandip Roy

  • ABAP Snippets und Tutorials

Stacknoise

  • SAP Technical Blog

Martin Maruskin blog

  • SAP Technical Blog

SAP4Tech

  • SAP and ABAP Free Tutorials

Infodepot

  • SAP ABAP samples

Reposrc (Wartungsmodus)

  • SAP ABAP Sourcen

Spider’s web

  • SAP Tipps

ZAP Yard

  • SAP technical tips and solutions

Techsap

  • SAP Tipps

SAPCODES

  • SAP Tipps & Tutorials

ABAP Developer Network

  • SAP Tipps & Tutorials

SAP ABAP Central

  • SAP Tipps & Tutorials

Techhippo

  • Tutorials zu SAPUI5, OData, Web IDE

thinkdoforward.com

  • Für SAP-Berater

stschnell.de

  • Entwicklung und Tools für ABAP, Powershell, Basic

archer4sap.com

  • Developer Blog

In My IT knowledge

  • Developer Blog

HavliCzech

  • Developer Blog

LearnSapAbap

  • Developer Blog

ABAPQuest – SAP ABAP Tips and Tricks

  • Developer Blog

MattWiki

  • Developer Blog

SAP-Tips

  • Developer Blog

samplecodeabap.com

  • Experiments with ABAP

kodyaz.com

  • SAP ABAP Programming and HANA Database Tutorials

saptechnicalguru.com

  • Blog for SAP technical guru’s: SAP basis, SAP authorization, SAP ABAP

Passionate about SAP – A Blog

  • ABAP-Blog

Die Sapotheke

  • Tipps und Tricks im Umgang mit SAP® (ERP)

SAPManDoo

  • SAP Resource

Learn Tips

  • SAP Resource

ABAP CookBook

  • Large collection of free premium ABAP tutorials

SAP Stack

  • SAP Resource

Doktor ERP

  • SAP Resource

SAPUI5 Tutorials

  • SAPUI5 Resource

SAP Tutorials

  • SAP Resource

Learntips

  • SAP Source for Tutorials, Tips, Tricks

ABAP Weekly

  • ABAP Weekly – The best ABAP Development links, every Friday

SAP Developer Workbench

  • The best resource for SAP and ABAP Knowhow

SAP Community Wiki

  • Code Gallery (Snippets)

Nocin.eu

  • Homelab, Linux, ABAP

sap123.com

  • Resources for SAP Consultants

wiki.scn.sap.com

  • ABAP Development

[ABAP] Variablendeklaration

DATA zahl TYPE i.                         " ganze Zahl (int)
DATA zahl TYPE i VALUE '1'.               " ganze Zahl (int) mit vordefiniertem Wert '1'
DATA chk TYPE c LENGTH 1 VALUE 'X'.       " char Länge 1 Vorbelegung mit Wert 'X'
DATA preis TYPE p DECIMALS 2 VALUE '1.3'. " gepackte Gleitkommazahl, zwei Nachkommastellen, Wert '1.3'
DATA zk(5) TYPE c.                        " char Länge 5 (obsolet)

TYPES zk TYPE c LENGTH 5.                 " Typdef zk vom Typ char Länge 5
DATA text TYPE zk.                        " text vom Typ zk

DATA: dt TYPE sy-datum,                   " verkettete Anweisung mit Komma getrennt
      zt TYPE sy-uzeit.                   " Nutzung von Systemdatentypen

Links

[ABAP] Datentypen

In ABAP wird unterschieden zwischen:

  • eingebauten (elementaren) ABAP-Typen, die wiederum in
    • vollständige Datentypen (parameterlos) -> d, t, i, f, string, xstring
    • unvollständige Datentypen (mit Parametern) -> c, n, p, x

    unterschieden werden

  • programmlokale (per TYPES definierte) Datentypen
  • externe (globale) Datentypen (Abbildung auf ABAP-Datentypen) im ABAP Dictionary
    • Datenelement
    • Strukturtyp
    • interne Tabellen
  • komplexe Datentypen (Strukturen, Tabellen)
  • Referenztypen (Daten, Objekte)

[ABAP] Übersicht nützliche Funktionsbausteine

Sammlung Funktionsbausteine: Link

Name                      Funktion                      Beispiel

READ_TEXT                 Textbaustein lesen            http://www.sapdev.co.uk/fmodules/fms_readtext.htm
SAVE_TEXT                 Textbaustein schreiben        https://help.sap.com/saphelp_nw73ehp1/helpdata/de/4e/1f14d03c181a24e10000000a42189e/content.htm?original_fqdn=help.sap.de
RP_CALC_DATE_IN_INTERVAL  Datumsrechung
ICON_CREATE               Oberflächenelement mit ICON
UPLOAD                    Dateiupload, Ausgabe als iTab
SET_PRINT_PARAMETERS      Druckerparameter festlegen
GET_PRINT_PARAMETERS      Druckerparameter holen
F4_FILENAME               FileOpenDialog anzeigen
RS_TREE_CONSTRUCT         Baumansicht (ALV) bauen       http://www.kodyaz.com/articles/abap-create-hierarchy-tree-list-rs_tree_construct-and-rs_tree_list_display-using-snodetext.aspx 
RS_TREE_LIST_DISPLAY      Baumansicht (ALV) anzeigen    https://wiki.scn.sap.com/wiki/display/ABAP/Call+FM+to+generate+alv+tree+and+deal+with+user+action
SAPGUI_PROGRESS_INDICATOR Fortschrittsanzeige           https://scn.sap.com/thread/355795

[ABAP] Funktionsbaustein: Eigenschaften anzeigen

Es gibt mehrere Möglichkeiten sich die Eigenschaften eines Funktionsbausteines anzuzeigen (Link):

  • im Quellcode Doppelklick auf den Funktionsnamen hinter CALL FUNCTION
  • Blick in die Tabellen TFDIR und TFTIT
  • Aufruf SE37 (Function Builder) mit Funktionsbaustein: $Name
  • Aufruf SE84 (Repository Infosystem) -> Repository Infosystem -> Programmbibliothek -> Funktionsbausteine

[ABAP] Übersicht User-Commands

Code  Funktionstaste    Beschreibung

BACK  F3                Eine Stufe zurückgehen
ONLI  F8                Programmausführung läuft bei START-OF-SELECTION weiter
P--   Strg-Bild hoch    Zur ersten Fensterseite blättern
P-    Bild hoch         Zur vorigen Fensterseite blättern
P+    Bild runter       Zur nächsten Fensterseite blättern
P++   Strg-Bild runter  Zur letzten Fensterseite blättern
PICK  F2                Ereignis AT LINE-SELECTION
PRI   Strg-P            Angezeigte Liste drucken
RW    F12 , ESC         Bearbeitung Abbrechen
%CTX  Shift-F10         Kontextmenü auf Liste
%EX   Shift-F3          Bearbeitung beenden
%PC                     Liste in Datei sichern
%SC   Strg-F            Muster suchen
%SC+  Strg-G            Muster weiter suchen
%SL                     Liste in Office sichern
%ST                     Liste in Berichtsbaum sichern