Screenshot zur Fehlermeldung erstellen

Fehlermeldungen sind eine wichtige Sache in der Programmierung. Sie geben Auskunft darüber, was schief gelaufen ist und im besten Fall noch, was erwartet wurde.

Ich habe gerade gelesen, dass Fehlermeldungen die beste Art der Dokumentation sind, denn diese würden aufmerksam gelesen. Nun ja… Meine Erfahrungen sind andere.

Häufig sind allein stehende Fehlermeldungen nicht aussagekräftig genug.

Fehlermeldung 2.0

Wie wäre es denn, wenn man die Fehlermeldung mit einem Screenshot der aktuellen Transaktion verbinden würde?

Es ist leider der Fehler XYZ aufgetreten. Zu Dokumentationszwecken wird ein Screenshot erstellt, den du an den Verantwortliche:n weiterleiten kannst.

Beispielhafte Fehlerpräsentation

Leider – oder zum Glück(?) – wird die Aktion “Screenshot erstellen” von einer Sicherheitsabfrage des SAPGUI begleitet. Deswegen ist es sinnvoll den Anwender vor dem Erstellen des Screenshots zu informieren.

Sicherheitsabfrage vor Erstellen des Screenshots

Fehlermeldung 3.0

Die Krönung wäre es natürlich, wenn der Anwender alles zusammen per Mail an den zuständigen Personenkreis schicken könnte…

Generelle Hilfestellung

Eine andere Möglichkeit, das Tool einzubinden, wäre als direkt Funktion in Transaktionen. Der Anwender könnte in einem Dialog vielleicht eine Frage stellen oder einen Fehler melden, automatisch einen aktuellen Screenshot hinzufügen und dies dann an eine zentrale Stelle oder ausgewählte Key-user oder Verantwortliche schicken.

Quelltext

Das folgende Coding ruft die Methode cl_gui_frontend_services=>get_screenshot auf, um einen Screenshot vom aktuellen SAPGUI zu erstellen. Die Daten werden so umgewandelt, dass sie als PNG-Datei gespeichert werden können.

DATA mime_type  TYPE string.
DATA image      TYPE xstring.
DATA tabimg     TYPE STANDARD TABLE OF x.
DATA path       TYPE string.
DATA full_path  TYPE string.
DATA useraction TYPE i.
DATA name       TYPE string.

cl_gui_frontend_services=>get_screenshot(
  IMPORTING
    mime_type_str        = mime_type
    image                = image
  EXCEPTIONS
    access_denied        = 1
    cntl_error           = 2
    error_no_gui         = 3
    not_supported_by_gui = 4
    OTHERS               = 5 ).
IF sy-subrc <> 0.
  RETURN.
ENDIF.

cl_gui_frontend_services=>file_save_dialog(
  EXPORTING
    window_title              = 'save screenshot'
    default_extension         = 'png'
    default_file_name         = 'screenshot'
    prompt_on_overwrite       = 'X'
  CHANGING
    path                      = path
    filename                  = name
    fullpath                  = full_path
    user_action               = useraction
  EXCEPTIONS
    cntl_error                = 1
    error_no_gui              = 2
    not_supported_by_gui      = 3
    invalid_default_file_name = 4
    OTHERS                    = 5 ).

IF sy-subrc <> 0.
  RETURN.
ENDIF.

IF useraction = cl_gui_frontend_services=>action_ok.

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer     = image
    TABLES
      binary_tab = tabimg.

  cl_gui_frontend_services=>gui_download(
    EXPORTING
      filename                  = full_path
      filetype                  = 'BIN'
    CHANGING
      data_tab                  = tabimg
    EXCEPTIONS
      OTHERS                    = 99 ).

ENDIF.
Enno Wulff
Letzte Artikel von Enno Wulff (Alle anzeigen)