Business Application Log (BAL) in SAP

Tippen auf Tastatur

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.

Bei diesem Webinar zum Thema „SAP Best Practice Tools – Erleichtern Sie Ihren Arbeitsalltag“ dreht sich alles rund um hilfreiche Tools im SAP-Bereich.

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.

Ingo Biermann

Ingo Biermann

Als Management- und Technologieberater unterstütze ich seit mehr als 15 Jahren große und mittelständische Unternehmen in Fragen der IT-Strategie und bin unterwegs in unterschiedlichen SAP-Themen wie SAP S/4HANA, User Experience und SAP Entwicklung.

Sie haben Fragen? Kontaktieren Sie mich!



Das könnte Sie auch interessieren

Die Business Application Security Initiative (BIZEC) nennt als häufigste Schwachstellen in ABAP Coding in Bezug auf Sicherheit die folgenden Punkte: ABAP Command Injection OS Command Injection Native SQL Injection Improper […]

weiterlesen

Ist es möglich, die Einhaltung von Programmier-Richtlinien mit nur einem Klick umzusetzen? In dieser mehrteiligen Blogserie wird gezeigt, wie das Tool 'Pretty_Printer' genutzt und erweitert werden kann, um bei der […]

weiterlesen

In der Praxis kann es notwendig sein, Datenbankinformationen zwischen verschiedenen SAP-Systemen auszutauschen. Im Normalfall können Daten mit Hilfe eines Transportauftrags von einem System in ein anderes übertragen werden. Es gibt […]

weiterlesen

Ein Kommentar zu "Business Application Log (BAL) in SAP"

Juergen Witt - 22. Mai 2018 | 15:22

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

Antworten

Schreiben Sie einen Kommentar

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





Kontaktieren Sie uns!
Alexander Koessner-Maier
Alexander Kössner-Maier Kundenservice