- 12. August 2016

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.

Wir sind Ihr Dienstleister für die Entwicklung, die Ihr SAP noch besser macht.
Schon in der Ideenphase unterstützen wir Sie bei der Definition der Anforderungen. Die Konzeption und Umsetzung erfolgt durch unsere SAP Experten.

Sie erhalten die Komplettlösung – Ihr Projekt machen wir zu unserem Projekt. Mit professionellem Projektmanagement sicheren wir den Projekterfolg.

Gerne spreche ich mit Ihnen über Ihre Ausgangslage und zeige Lösungsmöglichkeiten auf. Auf Wunsch unterbreite ich Ihnen im Anschluss ein unverbindliches Angebot.

Kontaktieren Sie mich: Telefon 0211.9462 8572-16 oder per E-Mail biermann@erlebe-software.de
Ingo Biermann, Fachbereichsleiter

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.

 


SHARE



Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.