Code: Alles auswählen.
CALL FUNCTION 'GUI_DOWNLOAD'
...
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
...
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
CASE SY-SUBRC.
WHEN 1.
MESSAGE A
WHEN 2.
MESSAGE B
...
WHEN 22.
MESSAGE XY
ENDCASE.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Alexander D.
Wird die Exception via MESSAGE RAISING ausgelöst, sind ja die SY-Felder für die Message bereits mit einer "richtigen" Werten gefüllt.Alexander D. hat geschrieben:Im glücklichen Fall eines vorhandenen Kommentares wird dieser ausgegeben, sonst eben nur der Text zu der Exception
das stimmt natürlich auch wieder. So wie es aussieht wird diese Vorgehensweise aber nicht durchgehalten, auch nicht im GUI_DOWNLOAD. Man findet im Baustein beide Varianten:JHM hat geschrieben:Alexander D. hat geschrieben: Wird die Exception via MESSAGE RAISING ausgelöst, sind ja die SY-Felder für die Message bereits mit einer "richtigen" Werten gefüllt.
Beim GUI_DOWNLOAD wird m.W. immer über MESSAGE RAISING die Exception ausgelöst, so dass man sich nicht die Mühe einer eigenen Fehlernachricht machen muss.
Code: Alles auswählen.
message i013(pc) raising no_authority.
raise invalid_type.
wo wir doch gerade beim Thema waren, hier ein Beispiel dass diese Vorgehensweise auch ihre Tücken haben kann. Frisch aus einem Dump eines von uns gekauften Programms:JHM hat geschrieben: Wird die Exception via MESSAGE RAISING ausgelöst, sind ja die SY-Felder für die Message bereits mit einer "richtigen" Werten gefüllt.
Beim GUI_DOWNLOAD wird m.W. immer über MESSAGE RAISING die Exception ausgelöst, so dass man sich nicht die Mühe einer eigenen Fehlernachricht machen muss.
Code: Alles auswählen.
* Batchinput-Objekt: Löschen
call function 'BDC_OBJECT_DELETE'
exporting
queue_id = queue_id
exceptions
not_found = 1
invalid_datatype = 2
others = 3.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno "<---- Abbruchstelle
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.