Fehlermeldungen

Dies ist Teil 7 von 7 der Serie Code Inspector erweitern

Wenn nun unsere Prüfung einen Fehler findet, dann soll dieser Fehler natürlich auch in der Ergebnisliste des Code Inspectors ausgegeben werden. Dies machen wir nun.

In der Methode RUN haben wir mit der Methode “INFORM” bereits Meldungen erzeugt. Diese tauchen jedoch nur als “unbekannte Meldungen” auf. Wir müssen also noch nachbessern!

Wir können die Meldungen direkt in der Methode GET_MESSAGE_TEXT definieren oder wir füllen die dafür vorgesehene Meldungstabelle.

Meldungstabelle

In der CONSTRUCTOR-Methode füllen wir die Meldungstabelle:

*** MAKRO TO FILL MESSAGE TABLE
  define FILL_MESSAGE.
    clear SMSG.
    SMSG-TEST = MYNAME.
    SMSG-CODE = &1.  “message code
    SMSG-KIND = &2.  “message priority
    SMSG-TEXT = &3.  “message text
    SMSG-PCOM = &4.  “pseudocomment
    INSERT SMSG INTO TABLE SCIMESSAGES.
  end-of-definition.

*** CODE 0001 ***
  FILL_MESSAGE ‘0001’ ‘W’
               ‘BAPI &1 nicht mehr verwenden! Er ist veraltet!’ 
               ‘”#EC CI_BAPIOLD’.
*** CODE 0002 ***
  FILL_MESSAGE ‘0002’ ‘W’
               ‘Aufruf BAPI ohne &1!!’
               ‘#EC CI_BAPICOM’.

Methode GET_MESSAGE_TEXT

…mit Meldungstabelle

Um die im CONSTRUCTOR definierten Einträge nutzen zu können, reicht es, die Methode einfach nicht zu redefinieren, denn das Lesen geschieht in der beerbten Klasse:

Achtung!
Die hier definierte Meldungstyp (Fehler, Warnung, Info) übersteuert den Meldungstyp aus dem Aufruf der INFORM-Methode!!

…mit definierten Meldungen

Reicht die Funktionalität der Meldungstabelle nicht, so muss die Methode GET_MESSAGE_TEXT redefiniert und mit Leben gefüllt werden:

In folgendem Beispiel werden die beiden Meldungen 0001 und 0002 separat definiert. Alle anderen werden aus der Fehlertabelle gelesen:

  CASE p_code.
    WHEN ‘0001’.
      p_text = ‘BAPI ist veraltet: &1’.
    WHEN ‘0002’.
      p_text = ‘BAPI-Aufruf ohne BAPI_TRANSACTION_COMMIT!’.
    WHEN OTHERS.
      CALL METHOD super->get_message_text
        EXPORTING
          p_test = p_test
          p_code = p_code
        IMPORTING
          p_text = p_text.
  ENDCASE.

Hier können eventuell noch Daten nachgelesen werden.

 

Enno Wulff
Series Navigation<< Dokumentation