[ABAP] Eintrag ins Syslog schreiben

Variante 1 (RSLG_WRITE_SYSLOG_ENTRY)

* https://wiki.scn.sap.com/wiki/display/SI/CCMS+Syslog

* Transaktionen:

* SE92 (Pflege von SysLog-Meldungen)
* SM21 (Systemprotokoll)
* RZ20 (CCMS Monitoring)

* Programme:

* RSLG0014 (Testrahmen für FUNCTION 'RSLG_WRITE_SYSLOG_ENTRY')

* Tabellen:

* TSL1D (SysLog-Meldung (ehemals 100S bzw. TSL01))
* TSL1T (SysLog: Meldungstexte (ehemals 100S, TSL01))
* TSL2D (SysLog: Klassifikationskennzeichen für Meldungen)
* TSL2T (SysLog: Namen der Meldungsklassen)
* TSL3D (SysLog: Typen von SysLog-Einträgen)
* TSL3T (SysLog: Namen der Typen von SysLog-Einträgen)
* SL_MESSAGE_AREA
* SL_MESSAGE_SUBID - Die Meldungskennung. Sie hat das Format 2+1. Meldungen werden ueber Transaktion SE92 gepflegt.
*                    Dort wird auch erklärt, dass man abgezählte Zeichen oder Worte in den Meltungstext einsetzen lassen kann.
* DATA_AREA        - Variable Daten, die abgezählt in die Meldung an Stellen wie '&5' (oder auch '$$$$$') eingesetzt werden. 64 Zeichen.
* DATA_STRUCTURE   - Kennbuchstaben fuer die Struktur von 'DATA_AREA'. Der Buchstabe wird in der C-Datei 'rslg.h' definiert und auch in Tabelle TSL3T erklärt.
*                    Im Zweifel ein Leerzeichen verwenden.
* DATA_WORD        - Variable Worte, die in die Meldung an den Stellen '&A', '&B' usw. eingesetzt werden sollen.
*                    Worte haben keine Struktur; also DATA_STRUCTURE nicht besetzen.
*                    Achtung: dieser Funktionsbaustein entfernt Leerzeichen, falls in den Worten welche enthalten sein sollten.
*                    Dieser Funktionsbaustein erlaubt keine Mischung zwischen Wort-Variablen und Struktur-Variablen.
*                    Also entweder 'DATA_AREA' oder 'DATA_WORD1',...
* PRE_PARAM_j      - Variable Vorabparameter, die in die Meldung an den Stellen '&a', '&b' usw. eingesetzt werden sollen.
* PRE_PARAM_LONG   - Langer variabler Vorabparameter, der in die Meldung an einer Stelle '&a&b&c&d' o.ä. eingesetzt werden soll.
*                    Es ist nicht möglich, einzelne Vorabparameter mit einem langen Vorabparameter zu mischen.
*                    Also entweder 'PRE_PARAM_LONG' oder 'PRE_PARAM_A',... oder gar keine Vorabparameter.
*
* indirekter Aufruf des SYSTEM-CALLs 'C_WRITE_SYSLOG_ENTRY'

* Syslog-Meldungstexte siehe Tabelle TSL1D
* AREA  SUBID   Pattern
* ------------------------------------------
* C4    1       Anwendung &A warnt: &B &C &D &E
* W1    0       &A

CALL FUNCTION 'RSLG_WRITE_SYSLOG_ENTRY'
  EXPORTING
    sl_message_area    = 'C4'
    sl_message_subid   = '1'
    data_word1         = 'Testanwendung'  " &A
    data_word2         = '01'             " &B
    data_word3         = 'E'              " &C
    data_word4         = 'Fehler'         " &D
    data_word5         = '1234'           " &E
  EXCEPTIONS
    data_missing       = 1
    data_words_problem = 2
    other_problem      = 3
    pre_params_problem = 4
    OTHERS             = 5.

IF sy-subrc = 0.

ENDIF.

Variante 2 (SYSTEM-CALL)

* direkter Aufruf des SYSTEM-CALLs
CALL 'C_WRITE_SYSLOG_ENTRY'
  ID 'TYP'  FIELD ' '
  ID 'KEY'  FIELD 'C41' " Ausgabe Text: "Anwendung &A warnt: &B &C &D &E"
  ID 'DATA' FIELD 'Testanwendung &01 &E &Fehler &1234 &'.

IF sy-subrc = 0.

ENDIF.