[ABAP] Klasse (cl_s_aut_bal_log) zur Verwendung des Business Application Log (BAL)

* cl_s_aut_bal_log implementiert die gundlegenden Funktionen (FuBas) des Application-Log
* Es werden z.B. NICHT implementiert: BAL_DB_SEARCH, BAL_DB_LOAD.
* Es kann nicht mit Verfallsdatum gearbeitet werden.
START-OF-SELECTION.
* Legt eine Protokoll-Instanz an
* Log-Objekte werden in der Transaktion SLG0 definiert --> es werden Transportaufträge generiert
* Anlegen der Objekte erfolgt in den Tabellen
*   BALOBJ (Anwendungs-Log: Objekte)
*   BALSUB (Anwendungs-Log: Unterobjekte)
  DATA(o_applog) = cl_s_aut_bal_log=>create( im_object    = 'Z_TEST_LOG'
                                             im_subobject = 'Z_TEST_LOG_U1' ).

* Protokolleinträge hinzufügen -> Nachrichten werden in der Transaktion SE91 gefplegt
* Beispiel: Verwendung der vordefinierten Nachrichtenklasse 'S_AUT', Nr. '128'
  o_applog->add_entry( im_msgtype = 'I'
                       im_msgid   = 'S_AUT'
                       im_msgno   = '128' ).

* Beispiel: Verwendung der generische Nachrichtenklasse mit & & & & für die Parameter msgv1 - msgv4
  o_applog->add_entry( im_msgtype = 'W'
                       im_msgid   = '01'
                       im_msgno   = '319'
                       im_msgv1   = 'Test1'
                       im_msgv2   = 'Test2'
                       im_msgv3   = 'Test3'
                       im_msgv4   = 'Test4' ).

  TRY.
* Ausnahme auslösen
      DATA(result) = 1 / 0.

    CATCH cx_root INTO DATA(e_txt).
* Fügt eine Ausnahme hinzu, wobei
* im_probclass: 1 - sehr wichtig
*               2 - wichtig
*               3 - mittel
*               4 - Zusatzinformationen
      o_applog->add_exception( im_probclass = '4'
                               im_msgtype = 'E'
                               im_exception = e_txt ).
  ENDTRY.

* Existieren Meldungen?
  IF o_applog->has_statistic( ) = abap_true.
* Protokoll anzeigen
    o_applog->show( im_title = 'Application-Log' ).
  ENDIF.

* Schließt und persistiert (speichert) das Protokoll
* Protokoll kann in der Transaktion SLG1 angeschaut werden
* Speicherung der Log-Daten erfolgt in den Tabellen
*   BALHDR (Anwendungs-Log: Protokollkopf)
*   BALDAT (Anwendungs-Log: Daten eines Protokolls)
  o_applog->close( im_save = CONV #( abap_true ) ).

Weiterführende Infos: Link, Link, Link und Link