Message into dummy (Füllen Systemfelder)

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Siehe Fehlerbehandlung.

siehe Funktionsbaustein FORMAT MESSAGE.

Es ist sehr elegant möglich die Systemfelder zu füllen, um sie direkt im Anschluß mit den Systemfeldern auszugeben.

Vorteile

  • Man kann einen Verwendungsnachweis auf die Meldung machen und die Programmstelle erscheint, wo die Meldung gefüllt wurde.
  • an in der Zielvariable LV_DUMMY auch die aufgelöste Nachricht, was z. B. beim Debuggen eines Programms und seiner Nachrichten nützlich sein kann.
  • Die Systemfelder können mit einer aussagekräftigen Meldung gefüllt werden und man kann sicher sein, dass sie im vorhergehenden Programmablauf nicht durch eine irrelevante Meldungen gefüllt/überschrieben wurden.

Coding

Wenn eine Ausnahme im Funktionsbaustein oder in der Methode ausgelöst werden soll, wird "raise <ausnahme>" auf eine separate Zeile geschrieben. Beim Coding in einer Zeile mit "raising <ausnahme>" gibt es keinen Syntaxfehler, aber die Ausnahme würde dann nicht ausgelöst.

Data: lv_dummy type string.

*  Variante & ist nicht vorhanden
   message i809(00) with lv_variant into lv_dummy.
   raise no_variant.

oder mit Inline-Deklaration

message i809(00) with lv_variant into data(lv_dummy).
raise no_variant.

Gibt man nun die Systemfelder bezüglich der Nachrichtenfelder aus, sind sie entsprechend der Meldung gefüllt, die man vorher in die Variable „LV_DUMMY“ geschrieben hat. Die Variable „LV_DUMMY“ muss nach dem Füllen nicht mehr genutzt werden.

MESSAGE ID sy-msgid   "Nachrichtenklasse
      TYPE sy-msgty   "Typ (E = Error, S = Success, I = Info, A = Abbruch)
    NUMBER sy-msgno   "Nachrichtennummer
      WITH sy-msgv1   "Platzhaltervariable1
           sy-msgv2   "Platzhaltervariable2
           sy-msgv3   "Platzhaltervariable3
           sy-msgv4.  "Platzhaltervariable4

Typisierung Dummy-Feld

  • Für das Füllen der Systemfelder ist es ausreichend, wenn die Variable LV_DUMMY z. B. als "char1" typisiert.
  • Aber wenn man das Dummy-Feld als "string" typisiert, wird der vollständig aufgelöste Messagetext in das Dummy-Feld geschrieben. Das kann mindestens zur Analyse beim Debuggen nützlich sein.
  • Noch ein wenig eleganter ist es, wenn man das Dummy-Feld mit Inline-Deklaration anlegt mit "into data(lv_dummy)". Hier wird die Variable auch als String angelegt.
 Data: lv_name   TYPE tdobname,
       lv_id     TYPE tdidgr,
       lv_object TYPE tdobjectgr.

 lv_name   = 'Grafikdatei'.
 lv_id     = 'BMAP'.
 lv_object = 'GRAPHICS'.

 MESSAGE i170(smartforms) WITH lv_name
                               lv_object
                               lv_id INTO data(lv_dummy).

Dummy1.JPG

Funktionsbaustein FORMAT_MESSAGE