Anfang des Inhaltsbereichs

Vorgehensweisen Rückladeprogramme entwickeln (optional)  Dokument im Navigationsbaum lokalisieren

Verwendung

Mit einem Rückladeprogramm werden archivierte Daten aus Archivdateien in die Datenbank zurückgeladen; das Rückladeprogramm muß dabei alle archivierten Daten eines Archivierungslaufs verarbeiten. Falls nicht alle Daten eines Archivierungslaufs zurückgeladen werden, wird ein neuer Archivierungslauf mit den restlichen Daten erzeugt. Nachdem ein Archivierungslauf zurückgeladen wurde, ist er aus der Archivverwaltung nicht mehr zugreifbar.

Das Rückladeprogramm liest die Archivdateien mit Hilfe der ADK-Funktionsbausteine (FB) und lädt dann die Daten in die Datenbank zurück. Ein Rückladeprogramm kann gleichzeitig immer nur einen Archivierungslauf verarbeiten.

Vorgehensweise

Reihenfolge beim Aufruf der Funktionsbausteine

  1. Archivierungslauf zum Rückladen öffnen – ARCHIVE_OPEN_FOR_MOVE

Dieser Funktionsbaustein erzeugt einen neuen Archivierungslauf im Produktivmodus und übergibt zwei Archiv-Handle:

  1. Den Commit-Zähler auf einen kleinen Festwert setzen
  1. (optional) Strukturen für Initialisierungsdaten besorgen – ARCHIVE_GET_INIT_STRUCTURES
  2. 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.

  3. (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 - 9) müssen in einer Schleife für alle archivierten Datenobjekte durchgeführt werden.

  1. Archivierte Daten aus Archivierungslauf lesen – ARCHIVE_GET_NEXT_OBJECT

Dieser Funktionsbaustein:

Hinweis

Der Parameter OBJECT_ID muß syntaktisch vom Typ CHAR sein.

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

Mit diesem Funktionsbaustein besorgen Sie die Archivierungsobjektdaten aus dem Datencontainer des ADK und speichern sie für jede 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.

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.

Entscheiden Sie, ob das Datenobjekt in die Datenbank zurückgeladen werden soll. Falls ja, führen Sie nur die Schritte 7 und 8 durch; falls nein, nur Schritt 9.

  1. Archivierungsklassen zum Archivieren ihrer Daten auffordern – ARCHIVE_RELOAD_OBJECT_DATA

Dieser Funktionsbaustein muß nach jedem ARCHIVE_GET_NEXT_OBJECT aufgerufen werden.

  1. Archivierungsobjektdaten in die Datenbank zurückladen – Von Ihnen zu entwickelnde separate Subroutine

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

Ihre Subroutine muß:

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

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

      Rufen Sie ARCHIVE_GIVE_STATISTICS nicht über das Schreib-Handle auf.

    4. COMMIT WORK aufrufen und die internen Tabellen zurücksetzen
    5. den Zähler zurücksetzen
  1. Nicht zurückgeladenes Datenobjekt in einen neuen Archivierungslauf sichern – ARCHIVE_SAVE_OBJECT

Wenn Sie ARCHIVE_SAVE_OBJECT nicht aufrufen, sind die nicht zurückgeladenen Daten aus der Archivverwaltung nicht mehr zugreifbar.

Achtung

Falls für das betreffende Archivierungsobjekt in der AOBJ das Kennzeichen Kein neuer Lauf beim Zurückladen gesetzt ist, hat der Aufruf von ARCHIVE_SAVE_OBJECT keine Wirkung.

Ende der Schleife

  1. (optional) Statistiken vom ADK besorgen – ARCHIVE_GET_STATISTICS

Hinweis

Verwenden Sie für diesen Funktionsbaustein nur das Read-Handle.

Bei Rückladeprogrammen 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.

  1. (optional) Standard-Statistikprotokoll ausgeben – ARCHIVE_WRITE_STATISTICS

Hinweis

Bei Rückladeprogrammen 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. Archivierungslauf schließen – ARCHIVE_CLOSE_FILE

Mit diesem Funktionsbaustein beenden Sie den Rückladevorgang.

Dieser Funktionsbaustein:

Achtung

Falls für das betreffende Archivierungsobjekt in der AOBJ das Kennzeichen Kein neuer Lauf beim Zurückladen gesetzt ist, wird der Status des Archivierungslaufs nicht auf Ersetzt gesetzt. Das bedeutet, daß der Archivierungslauf in der Archivverwaltung noch zugreifbar ist und erneut in die Datenbank zurückgeladen werden könnte. Sie müssen daher sicherstellen, daß ein erneutes Rückladen des Archivierungslaufs ausgeschlossen ist und daß er, z.B. bei der Belegsuche, in der Datenbank nicht mitgelesen wird. Es könnte sonst passieren, daß zwei identische Belege gefunden werden.

Hinweis

Mit dem Aufruf müssen Sie nur eines der beiden Archiv-Handle übergeben. Das zweite wird vom ADK automatisch ermittelt.

Ergebnis

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

Beispiel

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