gelöst FUBA EXCEPTIONS Protokolieren


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst FUBA EXCEPTIONS Protokolieren

Beitragvon autohandel7 » 03.12.2018, 10:34

Hallo Experten,
ich Habe ein FUBA in Programm ausgeruffen.
meistens alles ok, aber gibt es auch Extentions. Wie kann man Fehler Protokoliren in ein Ausgabe Datei lassen.
Danke.
So habe ich gemacht, aber bei mir alle Messeg leer sind, deshalb soll ich manuel zuweisen. Und gern möchte ich bei Ausgabe Datei so haben:
zum Beispiel: Fehler :unknown_dp_error = 14
Danke.
Call Fuba '123'
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22
.
IF sy-subrc <> 0.
ls_messege-msgid = sy-msgid.
ls_messege-msgno = sy-subrc.
ls_messege-msgv1 = sy-msgv1.
ls_messege-msgv2 = sy-msgv2.
ls_messege-msgv3 = sy-msgv3.
ls_messege-msgv4 = wa_trdir-name.
ls_messege-msgv1_src = sy-msgv4.
ls_messege-msgv2_src = 'FEHLER'.
ELSE.
autohandel7
Specialist
 
Beiträge: 152
Registriert: 14.07.2014, 09:48
Wohnort: Hannover
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: FUBA EXCEPTIONS Protokolieren

Beitragvon nickname8 » 03.12.2018, 10:42

Mach dir doch eine Log-Tabelle mit folgenden Feldern:

UNAME
DATUM
UZEIT
Zeitstempel (oft reicht die sekundengenaue aufzeichnung von UZEIT nicht)
MSGID
MSGTY
MSGNO
MSGV1
MSGV2
MSGV3
MSGV4
CHAR300

und damit füllst du was in der sy - Struktur steht.
Vergiss nicht, vorher ein GET TIME aufzurufen, damit die sy-zeiten aktualisiert werden.

Ich habe mir eine Methode in der Art gebaut und fülle die Methode jeweils entweder mit variablen vom Typ bapiret, bapiret2, sy und anderen diversen Rückgabetabellen.
nickname8
ForumUser
 
Beiträge: 78
Registriert: 18.07.2015, 08:22
Dank erhalten: 10 mal
Ich bin: Entwickler/in

Re: FUBA EXCEPTIONS Protokolieren

Beitragvon autohandel7 » 03.12.2018, 10:45

nickname8 hat geschrieben:Mach dir doch eine Log-Tabelle mit folgenden Feldern:

UNAME
DATUM
UZEIT
Zeitstempel (oft reicht die sekundengenaue aufzeichnung von UZEIT nicht)
MSGID
MSGTY
MSGNO
MSGV1
MSGV2
MSGV3
MSGV4
CHAR300

und damit füllst du was in der sy - Struktur steht.
Vergiss nicht, vorher ein GET TIME aufzurufen, damit die sy-zeiten aktualisiert werden.

Ich habe mir eine Methode in der Art gebaut und fülle die Methode jeweils entweder mit variablen vom Typ bapiret, bapiret2, sy und anderen diversen Rückgabetabellen.



Danke für Antwort, etwas änliches habe ich schon gemacht, aber es ist kein Standard lösung und bei mir MSGNO
MSGV1
MSGV2
MSGV3
MSGV4 immer leer sind, nur SY-... gefühlt.
autohandel7
Specialist
 
Beiträge: 152
Registriert: 14.07.2014, 09:48
Wohnort: Hannover
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: FUBA EXCEPTIONS Protokolieren

Beitragvon nickname8 » 03.12.2018, 11:07

Debug dir das hier mal:

Code: Alles auswählen
DATA: ls_mess TYPE lmess.

DATA: rfc_db_opt  TYPE TABLE OF rfc_db_opt.
DATA: rfc_db_fld  TYPE TABLE OF rfc_db_fld.
DATA: tab512      TYPE TABLE OF tab512.
DATA: char300     TYPE char300.

CALL FUNCTION 'RFC_READ_TABLE'
  EXPORTING
    query_table = 'TEST'
*   DELIMITER   = ' '
*   NO_DATA     = ' '
*   ROWSKIPS    = 0
*   ROWCOUNT    = 0
  TABLES
    options     = rfc_db_opt
    fields      = rfc_db_fld
    data        = tab512
  EXCEPTIONS
    OTHERS      = -1.

IF sy-subrc <> 0.

  MOVE-CORRESPONDING sy TO ls_mess.

  MESSAGE ID ls_mess-msgid TYPE ls_mess-msgty NUMBER ls_mess-msgno
    WITH ls_mess-msgv1 ls_mess-msgv2 ls_mess-msgv3 ls_mess-msgv4
    INTO char300.

ENDIF.
 
nickname8
ForumUser
 
Beiträge: 78
Registriert: 18.07.2015, 08:22
Dank erhalten: 10 mal
Ich bin: Entwickler/in

Re: FUBA EXCEPTIONS Protokolieren

Beitragvon autohandel7 » 03.12.2018, 12:00

nickname8 hat geschrieben:Debug dir das hier mal:

Code: Alles auswählen
DATA: ls_mess TYPE lmess.

DATA: rfc_db_opt  TYPE TABLE OF rfc_db_opt.
DATA: rfc_db_fld  TYPE TABLE OF rfc_db_fld.
DATA: tab512      TYPE TABLE OF tab512.
DATA: char300     TYPE char300.

CALL FUNCTION 'RFC_READ_TABLE'
  EXPORTING
    query_table = 'TEST'
*   DELIMITER   = ' '
*   NO_DATA     = ' '
*   ROWSKIPS    = 0
*   ROWCOUNT    = 0
  TABLES
    options     = rfc_db_opt
    fields      = rfc_db_fld
    data        = tab512
  EXCEPTIONS
    OTHERS      = -1.

IF sy-subrc <> 0.

  MOVE-CORRESPONDING sy TO ls_mess.

  MESSAGE ID ls_mess-msgid TYPE ls_mess-msgty NUMBER ls_mess-msgno
    WITH ls_mess-msgv1 ls_mess-msgv2 ls_mess-msgv3 ls_mess-msgv4
    INTO char300.

ENDIF.
 

Danke aber es ist di fast gleiche lösung , wie bei mir. Ich bekomme kein Richtege fehler beschreibung. Ich bekomme nuemmer von Fehler zum beispiel 14, aber erleuturn von Fehler 'unknown_dp_error ' bekomme ich nicht.
autohandel7
Specialist
 
Beiträge: 152
Registriert: 14.07.2014, 09:48
Wohnort: Hannover
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: FUBA EXCEPTIONS Protokolieren

Beitragvon nickname8 » 03.12.2018, 12:06

Dann guck mal im FUBA was passiert, bevor 'unknown_dp_error' "geraised" wird. Da wird sicherlich die sy-Struktur mit msgid etc gefüllt.
In der SE91 kannst du gucken, welche Fehlermeldung sich dahinter verbrigt oder so wie ich mit MESSAGE ... INTO var die Nachricht in eine Variable schreiben.
Bitte nochmal genau die ls_mess und char300-Variablen in meinem Programm im Debugger angucken.
nickname8
ForumUser
 
Beiträge: 78
Registriert: 18.07.2015, 08:22
Dank erhalten: 10 mal
Ich bin: Entwickler/in

Re: FUBA EXCEPTIONS Protokolieren

Beitragvon ewx » 03.12.2018, 12:37

autohandel7 hat geschrieben:aber bei mir alle Messeg leer sind, deshalb soll ich manuel zuweisen.

Dann musst du das manuell machen:
Code: Alles auswählen
CASE sy-subrc.
  WHEN ...
  WHEN 14.
    "Fehlernummer 001: "Fehler bei Funktionsbaustein &amp;: SUBRC=&amp; - &amp;"
     message 001(zz) with '123' sy-subrc 'unknown_dp_error'.
ENDCASE.


Eine Fehlernummer aus dem Funktionsbaustein bekommst du nur, wenn der RAISE mit MESSAGE ... RAISING erzeugt wurde. Das passiert jedoch leider eher selten.
Man kann die EXCEPTION auch leider nicht dynamisch ermitteln, da du in dem Programm festlegst, dass 14 = unknown_dp_error ist.

Für diese Nachricht hat ewx einen Dank bekommen :
autohandel7
ewx
Top Expert
 
Beiträge: 3835
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 320 mal

Re: FUBA EXCEPTIONS Protokolieren

Beitragvon deejey » 03.12.2018, 12:40

Es werden ja nicht bei allen FuBa sy-msg-Inhalte zurückgeliefert sondern einfach nur sy-subrc, in dem Fall muss man eben sy-subrc im Klartext protokollieren
deejey
Specialist
 
Beiträge: 150
Registriert: 31.07.2016, 11:20
Dank erhalten: 10 mal
Ich bin: Entwickler/in

Re: FUBA EXCEPTIONS Protokolieren

Beitragvon DeathAndPain » 03.12.2018, 18:11

Ich befürchte, ihr habt ihn alle falsch verstanden. Seine Frage ist viel einfacher. Er will keinen MESSAGE und keine Messageparameter haben; sein Baustein erzeugt sowas gar nicht. Er will einfach nur den Namen der Exception anstelle der Nummer haben. Im einfachsten Fall will er den dann per WRITE (oder auf andere Weise) ausgeben.

Da aber das Mapping zwischen Name und Nummer der Exception nirgendwo festgelegt ist, sondern er das ja gerade mit seinem CALL FUNCTION erst (willkürlich) festlegt, gibt es keine andere Lösung, als direkt danach das Mapping aus dem CALL FUNCTION nochmal zu wiederholen und abhängig vom SY-SUBRC eine Stringvariable mit dem Text zu befüllen. Ab 7.40 würde sich hier ein Konstrukt mit SWITCH anbieten, in älteren Releases ein dicker CASE.

Für diese Nachricht hat DeathAndPain einen Dank bekommen :
autohandel7
DeathAndPain
Expert
 
Beiträge: 844
Registriert: 05.05.2006, 10:14
Dank erhalten: 197 mal
Ich bin: Entwickler/in

Re: FUBA EXCEPTIONS Protokolieren

Beitragvon deejey » 03.12.2018, 19:11

Das meine ich ja, den Klarnamen der Exception hart kodietrt protokollieren

Für diese Nachricht hat deejey einen Dank bekommen :
autohandel7
deejey
Specialist
 
Beiträge: 150
Registriert: 31.07.2016, 11:20
Dank erhalten: 10 mal
Ich bin: Entwickler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Applikations-Toolbar dynamisch erzeugen
vor 9 Stunden von ralf.wenzel 0 Antw.
CP_BD_DIRECT_INPUT_PLAN
Gestern von Gottschall 0 Antw.
Logische Datenbank: Selektieren mit Loop
vor 4 Stunden von deejey 12 Antw.
Globale Konstanten - Organisationseinheiten
vor 13 Stunden von ralf.wenzel 5 Antw.
Kein Zugriff auf Dateien im Applikationsserver
Gestern von zzcpak 1 Antw.

  Ähnliche Beiträge beta
gelöst Exceptions und Vererbung
09.11.2018, 08:11 von ralf.wenzel 2 Antw.
exceptions -- über ne sap tabelle definieren???
24.11.2003, 11:53 von Asaph 4 Antw.
FuBa 'TEXT_CONVERT_TXT_TO_SAP'
31.05.2005, 08:55 von der_fuchs 2 Antw.
FUBA für Währungsumrechnung
28.11.2005, 13:21 von DON_ABAP 1 Antw.
Remotefähiger Fuba
08.11.2006, 15:18 von Kaiwalker 2 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder