[ABAP] Exceptionhandling (obsolet)

Folgende Sprachelemente sollten nicht mehr angewendet werden, da sie mittlerweile obsolet sind:

Definition und Auslösen einer Exception

* Definition und Auslösen einer Exception
CLASS my_class DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS my_method
       IMPORTING var1 TYPE i
       EXCEPTIONS my_exception.
ENDCLASS.

* Auslösen einer Exception
CLASS my_class IMPLEMENTATION.
  METHOD my_method.
    ...
    RAISE my_exception.
    ...
  ENDMETHOD.
ENDCLASS.

Behandlung einer Exception

my_class=>my_method( EXPORTING var1 = 1
                     EXCEPTIONS my_exception = 1 ).
* Exception über sy-subrc abfragen
IF sy-subrc <> 0.
  MESSAGE 'Fehler.' TYPE 'I'.
ENDIF.

[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

Online SAP Datasheet

  • SAP Objekte und Transaktionen

Tricktresor

  • Tipps und Tricks zu SAP

SAP Brains

  • SAP Online Tutorials zu vielen Themen

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

A4prog

  • SAP ABAP samples

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

thinkdoforward.com

  • Für SAP-Berater

stschnell.de

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

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

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

SAP Community Wiki

  • Code Gallery (Snippets)

Nocin.eu

  • Homelab, Linux, ABAP

sap123.com

  • Resources for SAP Consultants

ABAP-Entwicklungs-Wiki-Bereich

  • ABAP Development

SAP Wiki

  • ABAP Development

janschulz.info

  • ABAP & SAPUI5 Development

DJ Adams

  • ABAP & SAPUI5 Development

Developers4SAP

  • ABAP & Fiori Entwicklung

[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