Business Application Log (BAL) in SAP
Bei der Entwicklung von Anwendungen in SAP wird jeder Entwickler früher oder später zu dem Punkt kommen, an dem es Sinn ergibt, den Programmverlauf und dabei entstehende Nachrichten in das Business Application Log (kurz BAL) zu schreiben. Dadurch können etwaige Fehler später besser nachvollzogen und ein besserer Support der Anwendungen geleistet werden. Im Folgenden möchte ich Ihnen einen objektorientierten Ansatz skizzieren, um Programme mit einem BAL auszustatten.
CONSTRUCTOR Methode des BAL
Nach dem Anlegen einer Klasse für unseren BAL statten wir den Konstruktor der Klasse mit einem Import-Parameter aus, welchen wir später benutzen um zu bestimmen, ob der Log mitlaufen soll oder nicht. Es ist aus Performance-Gründen oft sinnvoll, das Log nicht dauerhaft in Betrieb zu haben und nur bei Bedarf einzuschalten. Der entsprechende Parameter wird dazu in ein Klassenattribut übergeben.
In einer Methode, in unserem Fall “INSERT_OBJ_TO_DB”, erzeugen wir uns dann in den Tabellen BALOBJ und BALSUB die BAL-Objekte und Subobjekte, unter denen im Folgenden die Logs in der Transaktion SGL1 gefunden werden können. Diesen Schritt können wir umgehen, wenn wir die entsprechenden Objekte zuvor einmalig händisch in der Transaktion SLG0 erzeugen. Dem Funktionsbaustein BAL_LOG_CREATE übergeben wir dann mit der Struktur “ls_log” alle benötigten Eingaben sowie den Objektnamen, den wir zuvor als Klassenkonstante festgelegt haben und Angaben, die z.B. streuen, wie lange der Log erhalten bleibt (ALDATE_DEL) oder, ob der Log vor Ablauf des Stichtages gelöscht werden darf (DEL_BEFORE). Das Löschen von Logs können wir in der Transaktion SLG2 durchführen. Der Funktionsbaus gibt uns schließlich noch eine Variable zurück, die wir als Klassenattribut speichern können, um später für das Schreiben der Einträge wieder auf dasselbe Log zu referenzieren.
Methode ADD_ENTRY
Als Nächstes kümmern wir uns um das Übermitteln von Fehlermeldungen in unsere Klasse. Die Methode sollte als “public” deklariert sein. Wir übergeben den Nachrichtenparameter an die Struktur “ls_msg” und können dabei z.B. den Parameter der Nachrichtenklasse als optional deklarieren, wenn bekannt ist auf welche Nachrichtenklasse wir uns im Zweifelsfall beziehen.
Anschließend klassifizieren wir den Nachrichtentyp in eine Problemklasse und übergeben den Nachrichtenparameter an den Funktionsbaustein.
Am Schluss können wir noch prüfen, ob die Schwere des Fehlers ein sofortiges Speichern des Logs zur Folge haben sollte. Andernfalls werden wir den Log am Ende des Zielprogramms mit derselben Methode save() in die Datenbank schreiben.
Methode SAVE
Die Methode speichert dann die gesammelten Nachrichten zurück.
Einbinden des BAL in das Hauptprogramm
Zum Einbinden der Methode in das Hauptprogramm muss nun bei der Instanziierung nur übergeben werden, ob das Log stattfinden soll sowie später die einzelnen Fehlermeldungen. Falls kein Abbruch durch eine Fehlermeldung auftritt muss die SAVE-Methode am Ende noch das Speichern in die Datenbank anstoßen.
In welchen Programmen haben Sie ein BAL implementiert? Bei Rückfragen oder Ideen hinterlassen Sie mir gerne ein Kommentar.
Ein Kommentar zu "Business Application Log (BAL) in SAP"
Hallo aus Hamburg,
auf dieser Seite hat sich ein kleiner Fehler eingeschlichen.
Die oben genannte Transaktion SGL1 heisst doch vermutlich SLG1.
Schöne Grüße
Juergen Witt