Anfang des Inhaltsbereichs

Vorgehensweisen Löschprogramme entwickeln  Dokument im Navigationsbaum lokalisieren

Verwendung

Aus Gründen der Datensicherheit darf das Schreibprogramm keine Daten in der Datenbank löschen. Die Daten werden während der Löschphase von einem separaten Löschprogramm aus der Datenbank gelöscht. Dadurch wird sichergestellt, daß während der Schreibphase keine Daten verlorengehen können, so daß eine Archivierung im Onlinemodus möglich ist.

Das Löschprogramm liest die Archivdateien mit Hilfe der ADK-Funktionsbausteine (FB) und löscht danach die Daten in der Datenbank. Die Verarbeitung der Archivdateien durch das Löschprogramm erfolgt stets dateiweise. Es können aber mehrere Löschprogramme parallel laufen, wobei jedes eine einzige Archivdatei verarbeitet.

Wichtige Informationen

Achtung

Aufgrund der Unicode-Fähigkeit des ADK sind bestimmte Änderungen in vorhandenen Löschprogrammen erforderlich, speziell für ARCHIVE_GET_NEXT_RECORD. Diese neuen Richtlinien gelten natürlich auch für alle neuen Löschprogramme, die Sie entwickeln.

Vorgehensweise

Reihenfolge beim Aufruf der Funktionsbausteine

  1. Löschen initialisieren – ARCHIVE_OPEN_FOR_DELETE

Dieser Funktionsbaustein:

  1. Commit-Zähler besorgen – ARCHIVE_GET_CUSTOMIZING_DATA

Mit diesem Funktionsbaustein rufen Sie den Wert des Commit-Zählers ab, der über die Transaktion AOBJ im Customizing festgelegt wurde.

  1. (optional): Strukturen für Initialisierungsdaten besorgen – ARCHIVE_GET_INIT_STRUCTURES

Ab SAP Web Application Server 6.10 können Sie diesen Funktionsbaustein dazu verwenden, die Strukturen der Initialisierungsdaten, die Sie mit ARCHIVE_PUT_INIT_DATA im Schreibprogramm übergeben haben, zu besorgen.

  1. (optional) Initialisierungsdaten besorgen – ARCHIVE_GET_INIT_DATA

Ab SAP Web Application Server 6.10 können Sie diesen Funktionsbaustein dazu verwenden, die Initialisierungsdaten, die Sie mit ARCHIVE_PUT_INIT_DATA im Schreibprogramm übergeben haben, zu besorgen.

Die folgenden Schritte (5 - 8) müssen in einer Schleife für alle zu löschenden Datenobjekte durchgeführt werden.

  1. Nächstes Datenobjekt aus der Archivdatei lesen – ARCHIVE_GET_NEXT_OBJECT

Mit diesem Funktionsbaustein lesen Sie das nächste Datenobjekt aus der zum Löschen geöffneten Archivdatei.

Dieser Funktionsbaustein:

Hinweis

Der Parameter OBJECT_ID muß syntaktisch vom Typ CHAR sein.

  1. Archivierungsklassen mitteilen, daß sie ihre Daten löschen sollen – ARCHIVE_DELETE_OBJECT_DATA

Dieser Funktionsbaustein muß nach jedem ARCHIVE_GET_NEXT_OBJECT aufgerufen werden und kann nicht entsprechend < commit counter > nach Datenobjekten gruppiert werden.

  1. Archivierungsobjektdaten besorgen – ARCHIVE_GET_NEXT_RECORD (bzw. ARCHIVE_GET_TABLE, wo sinnvoll)

Mit diesem Funktionsbaustein besorgen Sie die Archivierungsobjektdaten aus dem Datencontainer des ADK und speichern sie pro Struktur bzw. Tabelle in einer internen Tabelle. Rufen Sie diesen Funktionsbaustein innerhalb der in Schritt 5 geöffneten Schleife so lange auf, bis aus dem Datencontainer keine Sätze mehr gelesen werden können.

Falls Ihr Schreibprogramm Informationen im Feld RECORD_FLAGS gespeichert hat, können Sie diese im Löschprogramm dazu benutzen zu ermitteln, welche Daten tatsächlich aus der Datenbank gelöscht werden sollen.

Im Unicode-Kontext gibt es zwei Möglichkeiten, diesen Funktionsbaustein aufzurufen:

Achtung

Im Unicode-Kontext kann die CHAR-Datensatzpuffervariable für das generische Lesen von Sätzen in Strukturen, die Felder im Nicht-Zeichen-Format enthalten, nicht mehr verwendet werden.

  1. Archivierungsobjektdaten aus der Datenbank löschen – Von Ihnen zu entwickelnde separate Subroutine

Erhöhen Sie nach jedem ARCHIVE_GET_NEXT_OBJECT einen Zähler um eins. Läuft das Löschprogramm im Produktivmodus, so rufen Sie Ihre Subroutine immer dann auf, wenn der Wert des Zählers gleich dem des im Customizing eingestellten Commit-Zählers ist. Rufen Sie diese Subroutine nicht im Testmodus auf.

Ihre Subroutine muß:

    1. die internen Tabellen lesen und diese Daten aus der Datenbank löschen
    2. ARCHIVE_GIVE_STATISTICS aufrufen, um die Anzahl der gelöschten Datensätze an das ADK zu übermitteln; verwenden Sie zur Ermittlung der gelöschten Datensätze den Parameter SY-DBCNT
    3. Achtung

      Sie müssen diesen Funktionsbaustein aufrufen, anderenfalls funktioniert die Statistikfunktion nicht einwandfrei.

    4. COMMIT WORK aufrufen und die internen Tabellen zurücksetzen
    5. den Zähler zurücksetzen

Ende der Schleife

  1. (optional) Statistiken vom ADK besorgen – ARCHIVE_GET_STATISTICS

Hinweis

Bei Löschprogrammen funktioniert ARCHIVE_GET_STATISTICS nur im Produktivmodus.

Mit diesem Funktionsbaustein besorgen Sie die vom ADK gesammelten Statistikdaten. Diese Daten können Sie dann zur Erstellung eines eigenen spezifischen Protokolls verwenden. Dieser Funktionsbaustein kann zusätzlich zu ARCHIVE_WRITE_STATISTICS oder allein verwendet werden.

  1. (optional) Standard-Statistikprotokoll ausgeben – ARCHIVE_WRITE_STATISTICS

Hinweis

Bei Löschprogrammen funktioniert ARCHIVE_WRITE_STATISTICS nur im Produktivmodus.

Mit diesem Funktionsbaustein können Sie das Standard-Statistikprotokoll mit den entsprechenden Informationen zum Löschprogramm ausgeben. Der Funktionsbaustein muß direkt vor ARCHIVE_CLOSE_FILE aufgerufen werden.

  1. Löschphase beenden – ARCHIVE_CLOSE_FILE

Dieser Funktionsbaustein:

Ergebnis

Nachdem Sie die Entwicklung Ihres Löschprogramms abgeschlossen haben, tragen Sie es für Ihr Archivierungsobjekt in der Transaktion AOBJ ein.

Beispiel

Beispiele für Löschprogramme bieten die Programme SBOOKD und SFLIGHTD (Beispiel für die Verwendung von Archivierungsklassen).