Message into dummy (Füllen Systemfelder)

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

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

Data: lv_dummy type string.

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

oder mit Inline-Deklaration

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

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