Protokollanzeige
Funktionsbaustein |
Verwendung |
|---|---|
BAL_DSP_LOG_DISPLAY |
Im Hauptspeicher befindliche Meldungen anzeigen |
Typen |
Verwendung |
|---|---|
BAL_S_PROF |
Anzeigeprofil |
BAL_S_LFIL |
Filterkriterien für Protokollkopfdaten |
BAL_S_MFIL |
Filterkriterien für Meldungsdaten |
BAL_T_CFIL |
Filterkriterien für Kontextdaten |
BAL_T_LOGH |
Tabelle mit Protokollhandles |
BAL_T_MSGH |
Tabelle mit Meldungshandles |
Die Menge der Meldungen im Hauptspeicher kann man sich als extrem breite Tabelle mit einer Vielzahl von Feldern vorstellen (im Speicher werden die Daten natürlich anders gehalten). Die möglichen Felder dieser Tabelle sind:
Meldungszeile (MSGTY, MSGID, MSGNO, MSGV1, EXCLS, etc.)
Meldungsattribute (PROBCLASS, DETLEVEL, etc.)
Felder aller aufgetretenen Meldungskontexte
Meldungstexte
aufbereitete Meldungszeile
Langtexte zu den Feldern ("Sehr Wichtig" für Problemklasse 1, etc.)
Daten des Protokollkopfes, zu dem diese Meldung gehört
Protokollkopfdaten (EXTNUMBER, USER, DATUM, etc.)
Felder aller aufgetretenen Protokollkopf-Kontexte
Protokollkopftexte (also Langtexte zu den Feldern)
Vom Anwender über eine Callback-Routine hinzugefügte, externe Daten, z.B. der Kurztext zum Material
Die darstellbaren Felder sind in der Struktur BAL_S_SHOW aufgelistet. Diese Struktur enthält natürlich nicht die Felder aus den Kontexten sowie die externen Daten, da diese dem Application Log a priori nicht bekannt sein können.
Diese (riesige) Datenmenge muß jetzt dem Benutzer in geeigneter Weise präsentiert werden. Durch die Vorgabe eines Profils kann die Aufbereitung der Daten gesteuert werden. Dieses Profil ist keine vom Endanwender definierbare Anzeigevariante sondern ein vom Aufrufer zu definierender komplexer Datentyp (Struktur BAL_S_PROF), der dem Ausgabebaustein BAL_DSP_LOG_DISPLAY übergeben wird.
Die Darstellung basiert auf einigen Grundannahmen:
Die Meldungen werden in einer listenartigen Form dargestellt. Diese Liste enthält eine Teilmenge der dargestellten Felder. Diese Teilmenge kann durch einen Feldkatalog, der Teil des Anzeigeprofils BAL_S_PROF ist, vorgegeben werden (analog zum ABAP List Viewer).
Zu jeder Meldung können Detailinformationen abgerufen werden:
Langtext zur Meldung
Erweiterter Langtext bzw. Callback-Routine
Technische Informationen zu einer Meldung (Meldungstyp, Arbeitsgebiet, Meldungsnummer etc.)
Die Menge der Meldungen kann mit Mitteln des ABAP List Viewers ausgewertet (Suchen) bzw. eingeschränkt werden (Filtern). Zusätzlich befindet sich im Listenkopf noch die Möglichkeit, die Datenmenge sehr schnell bezüglich des Meldungstyps (A, E; W; I/S) einzuschränken. Ein Klick auf ein entsprechendes Icon blendet dann z.B. die I und S-Meldungen ein oder aus.
Da die Liste der Meldungen extrem lang und unübersichtlich sein kann, können Sie zur Navigation noch einen Hierarchiebaum hinzufügen. Dieser Baum dient quasi als Inhaltsverzeichnis für die Menge von Meldungen. Durch Anklicken eines Knotens oder eines Blattes bzw. eines zugehörigen Pushbuttons kann man die zu diesem Kapitel gehörenden Meldungen in der Liste zur Anzeige bringen. Die Struktur dieses Baumes ist ebenfalls über das Anzeigeprofil vorgebbar.
Die Standard-Anzeige von auf der Datenbank befindlichen Protokollen des Application Logs erfolgt über die Transaktion SLG1. Diese stellt die Protokolle in einer fest vorgegebenen Art und Weise dar.
Abhängig von der Anwendung muß eine Protokollausgabe aber oftmals anders aussehen und es ist auch notwendig, nicht abgespeicherte Protokolle darzustellen.
Als Voraussetzung nehmen wir an, daß sich im Hauptspeicher eine Menge von Protokollen mit zugehörigen Meldungen befinden, die entweder durch das aktuelle Sammeln von Meldungen oder durch Laden von Protokollen von der Datenbank (Funktionsbaustein BAL_DB_LOAD) vorhanden sind.
Die Daten können jetzt durch Aufruf des Funktionsbausteins BAL_DSP_LOG_DISPLAY zur Anzeige gebracht werden. Er ist eine Art Anzeigemotor, dem man mitteilt:
I_S_LOG_FILTER bis I_T_MSG_HANDLE Was dargestellt werden soll (über Filterkriterien BAL_TP_FILTERS)
I_S_DISPLAY_PROFILE Wie die Daten dargestellt werden sollen (über ein Anzeigeprofil BAL_S_PROF)
I_AMODAL Ob die Anzeige in einem neuen Modus gestartet werden soll.
Hinweis
Bei einer Anzeige in einem neuen Modus geht die Programmkontrolle verloren. Es ist nicht mehr möglich, die Protokollanzeige aufzufrischen.
Beispiel
Programm SBAL_DEMO_04 zeigt verschiedene Möglichkeiten, wie eine Protokollanzeige realisiert sein kann.
Die darzustellende Datenmenge läßt sich durch Vorgabe der Importing-Parameter festlegen:
Protokollbezogene Filterkriterien
I_S_LOG_FILTER: Ranges für Protokollkopf-Felder
I_S_LOG_CONTEXT_FILTER: Ranges für Kontext-Felder des Protokollkopfes
I_T_LOG_HANDLE: Tabelle mit Protokollhandle
Meldungsbezogene Filterkriterien
I_S_MSG_FILTER: Ranges für Meldungsfelder
I_S_MSG_CONTEXT_FILTER: Ranger für Kontext-Felder der Meldung
I_T_MSG_HANDLE: Tabelle mit Meldungshandles
Die Filter sind jene Datentypen, die auch beim Suchen von Meldungen und Protokollen verwendet werden. Reicht die Angabe von Filtern nicht aus, kann die Menge von darzustellenden Daten auch alternativ durch eine Menge von Protokoll- und Meldungshandles spezifiziert werden, die Sie selbst nach Kriterien zusammengestellt haben.
Werden mehrere Parameter angegeben, so werden sie einer logischen UND-Verknüpfung unterzogen. Es werden also nur solche Meldungen angezeigt, die allen Bedingungen gleichzeitig genügen. Werden keine dieser Parameter angegeben, dann werden allen im Hauptspeicher befindlichen Meldungen angezeigt.
Das Anzeigeprofil (Struktur BAL_S_PROF) gibt vor, wie die Protokollanzeige aussehen soll. Es besteht vornehmlich aus Feldkatalogen, die beschreiben, welche Felder in der Liste und in den verschiedenen Kapitelebenen des Navigationsbaumes auftauchen sollen.
Das Application Log bietet vordefinierte Anzeigeprofile an, die über Funktionsbausteine (beginnend mit BAL_DSP_PROFILE_...) geholt werden können. Es ist aber auch möglich, sich ein Anzeigeprofil nach eigenen Vorstellungen zusammenzubauen. Wird kein Anzeigeprofil vorgegeben, so wird das Standard-Anzeigeprofil der Transaktion SLG1 gewählt.
Im folgenden die wichtigsten Felder des Anzeigeprofils (bis auf MESS_FCAT sind alle Felder optional):
Feld |
Verwendung |
|---|---|
TITEL |
Titel des Dynpros |
MESS_FCAT |
Feldkatalog für die Meldungsliste. Dieser Feldkatalog enthält neben Tabellenname und Feldname (REF_TABLE, REF_FIELD) z.B. die Angabe, in welcher Spalte das Feld erscheinen soll (COL_POS) und mit welcher Länge (OUTPUTLEN). |
MESS_SORT |
Tabelle mit Sortierreihenfolge der Meldungen. Enthält Tabellen- und Feldname, Reihenfolgenummer und Kennzeichen für Sortierung aufwärts oder abwärts. Hier erwähnte Felder müssen natürlich zuvor in MESS_FCAT erwähnt worden sein. |
Feld |
Verwendung |
|---|---|
LEV1_FCAT, ..., LEV9_FCAT |
Neben (oder oberhalb) der Meldungsliste können Sie einen Navigationsbaum erzeugen. Dieser Baum schlüsselt die Meldungsmenge nach bestimmten Kriterien auf (z.B. Beleg-und Positionsnummer). Zu diesem Zweck müssen Sie die Aufschlüsselungskriterien in Feldkatalogen für die Ebenen 1 bis maximal 9 des Navigationsbaums angeben (z.B. Belegnummer für Ebene 1 und Positionsnummer für Ebene 2). Auf einer Ebene können auch mehrere Felder zu einem Aufschlüsselungskriterium zusammengefaßt werden (z.B. Versandstelle/Ladestelle auf Ebene 1), daher ist für jede Ebene ein Feldkatalog und nicht nur die Angabe eines einzelnen Feldes möglich. Der Feldkatalog ist genauso wie MESS_FCAT aufgebaut. |
LEV1_SORT, ..., LEV9_SORT |
Tabelle mit Sortierreihenfolge der Kapitelebenen. |
Zu bestimmten Zeitpunkten der Protokollanzeige können Rücksprungroutinen genutzt werden (FORM-Routinen oder Funktionsbausteine). Mögliche Zeitpunkte sind:
Feld |
Verwendung |
|---|---|
CLBK_READ |
Nachlesen externer Daten für die Anzeige (z.B. Materialkurztext) |
CLBK_UCOM |
Nachlesen externer Daten für die Anzeige (z.B. Materialkurztext) |
CLBK_UCOM |
Ausführung eigener User-Commands |
CLBK_UCBF |
Wird vor Ausführung eines User-Commands aufgerufen |
CLBK_UCAF |
Wird nach Ausführung eines User-Commands aufgerufen |
CLBK_PBO |
PBO der Anzeige (z.B. um einen eigenen Status zu setzen) |
Feld |
Verwendung |
|---|---|
EXT_PUSH1, ..., EXT_PUSH4 |
Mit diesen Komponenten können eigene Drucktasten ins Menü gebracht werden, ohne das ein eigener GUI-Status definiert werden muß. Zu PAI wird beim Auswählen der User-Command "%EXT_PUSH1", ... "%EXT_PUSH4" ausgelöst, auf die Sie dann in der entsprechenden Callback-Routine (siehe CLBK_UCOM) reagieren können. |