This is a test message to test the length of the message box.
Login
|
ABAP Tipp RFC Fehlerbehandlung
Erstellt von Software-Heroes

ABAP Tipp - RFC Fehlerbehandlung

711

Wie behandelt man eigentlich Fehler, wenn man über eine Destination im Funktionsbaustein kommuniziert? Mehr dazu in unserem Tipp.

Werbung


Der Aufruf von Funktionsbausteinen gehört zum Standard in der Verarbeitung, vor allem wenn du die Standard BAPIs der SAP nutzt. Dazu können die BAPIs meist auch auf anderen Systemen aufgerufen werden, um die Verarbeitung dort durchzuführen.

 

Einleitung

In Reviews sehen wir oft RFC Aufrufe, bei denen die Fehlerbehandlung nicht sauber implementiert wurde. In vielen Fällen findet man die folgende Implementierung des Aufrufs.

CALL FUNCTION 'BAPI_USER_ACTGROUPS_ASSIGN' DESTINATION is_roles-destination
  EXPORTING
    username              = is_roles-userid
  TABLES
    activitygroups        = is_roles-activitygroups
    return                = rt_return
  EXCEPTIONS
    OTHERS                = 1.

 

Da eine Destination verwendet wird, handelt es sich um einen RFC Aufruf, die Fehlermeldungen werden in diesem Fall über den SUBRC zurückgegeben. Außer OTHERS, gibt es keine weitere EXCEPTION beim Aufruf des Funktionsbausteins.

 

Fehler

Neben den klassischen Fehlermeldungen aus dem Funktionsbaustein, kann es im RFC Szenario auch zu allgemeinen Fehlern kommen:

  • Aufrufendes System nicht vorhanden
  • RFC-Verbindung nicht korrekt konfiguriert
  • Keine Berechtigungen für S_RFC oder S_RFCACL

 

Werden diese Fehler nicht sauber abgefangen, kommt es zu einem Dump beim Aufruf des Funktionsbausteins und die Verarbeitung kann nicht sauber beendet werden.

 

Implementierung

Wie sieht nun eigentlich die korrekte Implementierung des Aufrufs aus? Dazu muss man ein wenig in der Dokumentation suchen, um im richtigen Abschnitt fündig zu werden. Neben OTHERS gibt es noch zwei andere EXCEPTIONS, die der Funktionsbaustein setzen kann und dazu noch eine Übergabe der Fehlermeldung an eine Meldungsvariable.

DATA ld_message TYPE c LENGTH 200.

CALL FUNCTION 'BAPI_USER_ACTGROUPS_ASSIGN' DESTINATION is_roles-destination
  EXPORTING
    username              = is_roles-userid
  TABLES
    activitygroups        = is_roles-activitygroups
    return                = lt_return
  EXCEPTIONS
    system_failure        = 1 MESSAGE ld_message
    communication_failure = 2 MESSAGE ld_message
    OTHERS                = 3.

IF sy-subrc <> 0.
  " Log ld_message
ENDIF.

 

Wird nun eine Ausnahme ausgelöst, findest du die Fehlermeldung in LD_MESSAGE wieder und kannst sie ausgeben oder im Log protokollieren.

 

Fazit

Die Behandlung von Fehlern beim Aufruf ist nicht schwer, unterscheidet sich aber zur klassischen Fehlerbehandlung, weshalb sie oft vergessen wird. Im Fehlerfall hilft es aber, das Programm sauber zu beenden und den Fehler zu protokollieren.

 

Quelle:
SAP Dokumentation - CALL Function ... parameter list


Enthaltene Themen:
TippRFC Fehlerbehandlung
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 in der Praxis - Objekt Generator

Kategorie - ABAP

In diesem Beispiel schauen wir uns an, wie wir mit der XCO Bibliothek einen wiederverwendbaren Generator erstellen, um uns für unsere Tutorials etwas Arbeit zu sparen und automatisiert DDIC Objekte zu generieren.

09.01.2026

ABAP Tipp - Logging Performance

Kategorie - ABAP

Wie sieht es eigentlich mit der Performance des BAL Logs in der ABAP Cloud Welt aus? Schauen wir uns dazu drei Lösungen an und messen die Performance in verschiedenen Szenarien.

19.12.2025

ABAP in der Praxis - Fiori Daten fehlerhaft

Kategorie - ABAP

In diesem kleinen Praxisbeispiel schauen wir uns einen Fehlerfall in Fiori an. Hier werden die Daten im UI falsch angezeigt, obwohl alles sonst richtig zu sein scheint. Die Spur führt uns durch den RAP Stack in eine andere Richtung.

10.10.2025

ABAP Tipp - Handling von Funktionsbausteinen

Kategorie - ABAP

Wie gehst du eigentlich mit Funktionsbausteinen und der Fehlerbehandlung innerhalb von ABAP um? In diesem kleinen Tipp schauen wir uns die Behandlung auch im Rahmen von RFC an.

26.08.2025

ABAP Tipp - Generische Datentypen

Kategorie - ABAP

Was unterscheidet eigentlich CLIKE von CSEQUENCE? Generische Typen können manchmal etwas undurchsichtig sein und als ABAP Entwickler wählen wir vielleicht den Typen zu generisch.

12.08.2025