BOPF Archivierung: Das BO vorbereiten
In vielen zentralen Bereichen des SAP-Systems wird die Menge der erzeugten Belegen oder sonstigen Bewegungsdaten schnell so groß, dass die Systemlast bei Datenabfragen signifikant ansteigt. Im etablierten SAP-Standard ist dafür das Konstrukt der Archivierungsobjekte geschaffen worden. Nutzen Sie BOPF, gibt es dort keien Standard-Archivierung. Wie Sie vorgehen müssen, erfahren Sie in in unserer dreiteiligen Artikelreihe. In diesem Artikel lernen Sie, wie Sie das BO vorbereiten.
Zu Teil 2 der Serie: Programme erstellen.
Zu Teil 3 der Serie: Customizing vornehmen.
Archivierung mit BOPF?
Nutzen Sie jedoch das Business Object Processing Framework (BOPF), gibt es dort keine Standard-Archivierungsobjekte, die Sie bloß ein wenig konfigurieren und dann einplanen können. Üblicherweise verschalt ein Business Object (BO) in einem einfachen Szenario eine oder mehrere Datenbanktabellen und bietet die Möglichkeit, mit den darin enthaltenen Daten zu arbeiten, ohne direkte Datenbankoperationen durchzuführen.
Um dieses Konstrukt auch in der Archivierung zu ermöglichen, können Sie Ihre bestehenden BOs mit den nachfolgend erläuterten Schritten für die Archivierung fit machen. In Teil 1 der Serie erläutere ich Ihnen die notwendigen Tätigkeiten am BO selbst. Die Fortsetzung beschäftigt sich dann mit den benötigten Programmen zum Vorbereiten, Schreiben und Löschen der zu archivierenden Einträge und den vorzunehmenden Customizing-Einträgen.
Den Archivierungsstatus hinzufügen
Das Kriterium, ob eine Instanz des BOs archivierbar ist oder nicht, stellt in BOPF eine Statusvariable dar. Um diese zu erzeugen, braucht Ihr BO die passende Statusklasse /BOFU/CL_LIB_SAM_ADAPTER. Dafür gehen Sie in die Transaktion BOBX, wählen dort Ihr BO doppelt aus und klicken anschließend doppelt auf den obersten Knoten des BOs (Schritt 1 in Abbildung 1). Dort fügen Sie die genannte Klasse im Feld “Statusklasse” (Schritt 2 in Abbildung 1) hinzu und bestätigen mit Enter.
Sofern Ihr BO diese Unterknoten nicht vorher schon hatte, erscheinen jetzt unter dem Root-Knoten die Punkte “Statusvariablen”, “Statusderivatoren” und “Statusschemata” (siehe Abbildung 2).
Als nächsten Schritt gehen Sie in die Datenstruktur des ROOT-Knotens Ihres BOs und fügen dort ein Feld “ARCHIVING_STATUS” mit dem Datentyp /BOFU/ARCHIVING_STATUS_CODE hinzu. Diese Änderung speichern und aktivieren Sie. Um diesen Archivierungs-Status jetzt auch in BOPF bekannt zu machen, legen Sie anschließend ein Statusschema mit beliebigem Namen und eine Statusvariable mit Bezug zum soeben angelegten Element “ARCHIVING_STATUS” der Datenstruktur an. Dazu können Sie auf die jeweiligen Unterknoten rechtsklicken und “Anlegen” drücken. Bei der Statusvariable wählen Sie “Standardstatus” und unter “Zugehör. Attributname” das angelegte Attribut aus (siehe Abbildung 3). Anschließend speichern Sie die Änderungen.
Action und Query für die Archivierung definieren
Um anhand des gerade angelegten Archivierungsstatus auch die Archivierung sicherzustellen, benötigen wir noch zwei wichtige Zugriffe auf das BO. Diese werden über die in der Fortsetzung beschriebenen Programme im Archivierungslauf aufgerufen, um die geeigneten Datensätze festzulegen und anschließend für die tatsächliche Archivierung abzufragen.
Zuerst definieren Sie bitte eine Action am BO. Der Sinn und Zweck dieser Action ist es, vor der eigentlichen Archivierung die Datensätze zu prüfen und anhand der von Ihnen in dieser Action definierten Kriterien den Archivierungsstatus auf den Wert “02”, d.h. “zu archivieren” zu setzen. Die Implementierung dieser Action wird hier nicht dargestellt. Dennoch ein Hinweis: In dieser Action sollte mindestens eine Meldung zurückgegeben werden, auch im Erfolgsfall! Ansonsten kann es später zu einem Fehler bei der Archivierung kommen und die Daten werden nicht weggeschrieben.
Für die Einstellungen der Action wählen Sie bitte wie in Abbildung 4 zu sehen die Kardinalität “Mehrere Knoteninstanzen” aus und setzen zudem im Reiter “Trigger für Eigenschaftsänderungen” den Haken für Ihre Knoten und beim Event “Aktualisieren”.
Abschließend erstellen Sie wie gewohnt noch eine Query am BO, die Sie entweder über eine Query-Klasse implementieren oder als Standard-Query definieren können. Wählen Sie den Weg der Standard-Query, können Sie über die Angabe eines Datentyps die Selektionsparameter spezifizieren, mit denen die in Frage kommenden Elemente selektiert werden sollen.
Vorbereitung des BOs abgeschlossen
Damit ist die reine Vorbereitung des BOs abgeschlossen. Um die Statusänderungen und mögliche Werte der Statusvariable zu definieren, bedarf es noch der Konfiguration des BOs bzw. vielmehr des Statusschemas in der Transaktion SAMDT. Dort können Sie festlegen, welche Action für eine Statusänderung sorgt und welche Werte die Statusvariable annehmen darf.
Bei einigen Installationen ist diese Transaktion nicht nutzbar aufgrund eines Konflikts mit oder einer fehlenden Installation von JNet. Dann können Sie alternativ über die SM34 den Viewcluster /BSAM/VC_STM aufrufen und die notwendigen Werte dort pflegen (siehe Abbildung 7). Bitte beachten Sie: Wenn Sie einen neuen Eintrag auf der Ebene “Statusschema” hinzufügen, können Sie das Feld “Schema-GUID” leer lassen. Dieses wird automatisch ermittelt.
Damit haben Sie die Vorbereitung Ihres BOs abgeschlossen. In den folgenden Teilen der Artikelserie zeige ich Ihnen, wie Sie die notwendigen Programme für die Archivierung erzeugen und sowohl die BOPF-spezifischen als auch die bereits bekannten Archivierungscustomizing-Einträge pflegen können.
Zu Teil 2 der Serie: Programme erstellen.
Zu Teil 3 der Serie: Customizing vornehmen.
Sie haben bereits Fragen oder eigene Erfahrungen zur Archivierung mit BOPF? Kommen Sie gerne direkt auf mich zu oder hinterlassen Sie mir einen Kommentar!