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

58

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 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 Tipp - CLEAR right

Kategorie - ABAP

Richtig löschen? In diesem Artikel wollen wir uns einmal anschauen, wann es Sinn macht zu löschen und wie du effektiv vorgehen kannst.

12.05.2023

ABAP Tipp - Performance Kettensätze

Kategorie - ABAP

Schauen wir uns hier einmal die Performance beim Bilden von Kettensätzen mit DATA und FIELD-SYMBOL an. Welche Variante wird bei der Performance vorn liegen?

28.04.2023

ABAP Tipp - Adobe Formulare zu groß

Kategorie - ABAP

In diesem kleinen Tipp wollen wir uns anschauen, wieso im schlechtesten Fall Adobe Formulare größer werden, als sie eigentlich sein sollten.

18.11.2022

ABAP - ALV in 2022 noch relevant?

Kategorie - ABAP

Heute mal die scherzhafte Frage, benötigen wir im Jahr 2022 noch Reports die ALV Ausgaben erzeugen? Der Frage wollen wir in diesem Artikel einmal nachgehen.

01.07.2022

ABAP im Wandel

Kategorie - ABAP

Die Programmiersprache ABAP ist bereits seit Jahren im Wandel und modernisiert sich in verschiedenen Konzepten. In diesem Artikel schauen wir uns das einmal im Detail an.

24.06.2022