Datenbankablage für ArchiveLink einrichten

Mit dem miniSAP wird eine komplette Basiskomponente, BC resp. SAP_BASIS, bereitgestellt. Wer im Umfeld dieser Komponente tätig ist, z.B. im Bereich des Records Management BC-SRV-RM und das miniSAP diesbezüglich für Testzwecke einsetzt, wird schnell auf die Notwendigkeit einer ArchiveLink-fähigen Ablage stoßen. Der folgende Beitrag beschreibt die Einrichtung einer solchen. Darüber hinaus wird ein Programm vorgestellt, mit dem beliebige lokale Dateien archiviert werden können.

Zu Beginn möchte ich kurz den Hinweis 595563 – Datenbankablage für ArchiveLink – erwähnen. Dieser beschreibt selbige Vorgehensweise mit ähnlichen Schritten.

1. Tabelle kopieren

Im ersten Schritt richten wir den Zielbereich ein, in dem die Dokumente abgelegt werden. Wie der Titel des Beitrages schon vermuten lässt, handelt es sich hierbei um eine Datenbanktabelle. Mit der Transaktion SE80 ins Paket SDOK wechseln, die Tabelle SDOKCONT1 suchen und via Kontextmenü als lokales Objekt kopieren z.B. mit dem Namen ZDOKCONT1. Danach ins eigene Paket wechseln, die Tabelle in Bearbeitung nehmen, dann die Erweiterungskategorie der Tabelle definieren, die Tabelle speichern und aktivieren. Damit haben wir die Voraussetzung geschaffen, dass Dokumente hier abgelegt werden können.

2. Content Repository einrichten

Im folgenden Schritt richten wir ein Content Repository ein. Damit definieren wir im miniSAP-System den Bereich über den mit dem Archivsystem, welches ja in unserem Fall die Tabelle aus Schritt eins ist, kommuniziert wird. Wird z.B. ein Dokument archiviert, so muss das Content Repository (CR) und ein eindeutiger Identifikator, auch Archiv-Dokument-ID (ArcDocID) genannt, definiert werden. So kann jedes Dokument eindeutig identifiziert werden. Mit der Transaktion OAC0 richten wir z.B. das Content Repository ZA ein.


Content Repository: Detail

3. Dokumentart einrichten

Eine Dokumentart definiert eine eindeutige technische Bezeichnung für eine bestimmte Dokumentensorte, z.B. HRICONTRAC (Human Resource Incoming Work Contract) für einen Arbeitsvertrag. Wir richten uns eine eigene Dokumentart mit der Transaktion OAC2 ein, z.B. ZTEXT für eine Textdatei beliebigen Inhalts.


Dokumentart einrichten

4. Dokumentverknüpfung einrichten

Die definierte Dokumentart muss nun noch mit einem Business-Objekt (BO) verknüpft werden. Ein BO beschreibt die zum ihm gehörigen Methoden, Attribute und Schlüsselfelder im BO-Repository. Wir wählen hier das BO SOFM (Office Document). Mit der Transaktion OAC3 wird diese Dokumentverknüpfung eingerichtet. Hier muss dann auch das unter Schritt zwei definierte CR sowie eine Verknüpfungstabelle angegeben werden. In dieser Verknüpfungstabelle werden die eindeutigen Identifikatoren des archivierten Dokumentes unter dem anwendungsspezifischen Schlüssel abgelegt. Wir wählen hier den Standard TOA01.


Neue Einträge

5. Report implementieren

Mit dem nun folgenden Programm können beliebige Dokumente archiviert und deren Verknüpfungseinträge geschrieben werden.

„-Begin—————————————————————–
  Report  Z_ARCHIVEFILE.

    „-Variables———————————————————
      Data tabFileName Type filetable.
      Data rc Type sy-subrc.
      Data UserAction Type i.
      Data ArcDocID Type toa01-arc_doc_id.

    „-GUI—————————————————————
      Parameter FileName Type sapb-sappfad Lower Case.
      Parameter ContRep Type toaar-archiv_id.
      Parameter DocTyp Type toadd-doc_type.
      Selection-Screen Skip 1.
      Parameter BusObj Type toaom-sap_object.
      Parameter ArObj Type toaom-ar_object.
      Parameter ObjID Type sapb-sapobjid Lower Case.
      Selection-Screen Skip 1.
      Selection-Screen PushButton /1(79) ArcDoc User-Command ArcDoc.
      Selection-Screen Skip 1.
      Parameter DocID Type toa01-arc_doc_id.

    „-Initialization—————————————————-
      Initialization.
        ArcDoc = ‚Put document into archive'(001).

    „-Event press button to select file———————————
      At Selection-Screen On Value-Request For FileName.

        Clear FileName.
        Clear tabFileName.

        Call Method cl_gui_frontend_services=>file_open_dialog
          Exporting
            window_title = ‚Datei zum Upload in das Archiv‘
            multiselection = abap_false
            file_filter = ‚*.*‘
          Changing
            file_table = tabFileName
            rc = rc
            user_action = UserAction.

        If UserAction = 0.
          Read Table tabFileName Into FileName Index 1.
        EndIf.

    „-Main————————————————————–
      At Selection-Screen.

        Case sy-ucomm.
          When ‚ARCDOC‘.

            Call Function ‚ARCHIVOBJECT_CREATE_FILE‘
              Exporting
                ARCHIV_ID = ContRep
                DOCUMENT_TYPE = DocTyp
                PATH = FileName
              Importing
                ARCHIV_DOC_ID = ArcDocID
              Exceptions
                ERROR_ARCHIV = 1
                ERROR_COMMUNICATIONTABLE = 2
                ERROR_UPLOAD = 3
                ERROR_KERNEL = 4
                OTHERS = 5.

              If sy-subrc = 0.
                DocID = ArcDocID.

                Call Function ‚ARCHIV_CONNECTION_INSERT‘
                  Exporting
                    ARCHIV_ID = ContRep
                    ARC_DOC_ID = ArcDocID
                    AR_OBJECT = ArObj
                    OBJECT_ID = ObjID
                    SAP_OBJECT = BusObj
                    DOC_TYPE = DocTyp
                  Exceptions
                    ERROR_CONNECTIONTABLE = 1
                    OTHERS = 2.

                  If sy-subrc = 0.
                    Message ‚Success‘ Type ‚S‘.
                  Else.

                    Call Function ‚ARCHIVOBJECT_DELETE‘
                      Exporting
                        ARCHIV_ID = ContRep
                        ARCHIV_DOC_ID = ArcDocID
                      Exceptions
                        ERROR_ARCHIV = 1
                        ERROR_COMMUNICATIONTABLE = 2
                        ERROR_KERNEL = 3
                        OTHERS = 4.

                    Message ‚Connection insert not successful‘ Type ‚E‘.
                  EndIf.

              Else.
                Message ‚Archiving not successful‘ Type ‚E‘.
              EndIf.

        EndCase.

„-End——————————————————————-

6. Report testen

Zugegeben ist die von mir gewählte Object-ID nicht gerade sinnvoll, da sie eigentlich mit den Schlüsselfeldern des BO korrespondieren sollte, aber für einen Test reicht es aus. Nach dem Aufruf muss in der Tabelle TOA01 ein Eintrag vorliegen und in der Tabelle ZDOKCONT1 müssen ebenfalls Einträge vorhanden sein.


Test des Reports

7. Erfolg testen

Mit der Transaktion SE37 kann das FM ARCHIVOBJECT_DISPLAY aufgerufen werden. Hier ist die ArcDocID und das Content Repository zu übergeben. Mit Ausführung des FM wird der Document Viewer gestartet und das archivierte Dokument angezeigt. Sofern alles korrekt eingerichtet ist, sollte nun das Dokument sichtbar sein.


Testumgebung ARCHIVEOBJECT_DISPLAY

Mit relativ wenig Aufwand kann man sich auf diesem Wege eine ArchiveLink-fähige Ablage in einem miniSAP zur Verfügung stellen und diese auch in anderen Applikationen nutzen, z.B. dem Folders Management.

image_pdfimage_print
Letzte Artikel von Stefan Schnell (Alle anzeigen)

COMMENTS

  • <cite class="fn">auswis</cite>

    Hallo,

    vielen Dank für diese super Seite, habe schon viele verschiedene Beiträge sehr gefeiert.
    Ich habe jedoch ein Problem beim der Ablage von Dokumenten in das Archiv. Die Ablage funktioniert einwandfrei, jedoch erstellt er mir in dem Verzeichnis, aus dem ich die abzulegende Datei auswähl 3 neue Dateien.
    Die erste Datei ist eine „.trc“ Datei.
    Die zweite Datei ist heißt immer gleich „dev_http“.
    Die dritte Datei heißt jedesmal anders.

    Kann mir jemand sagen, ob ich verhindern kann, dass diese Dateien erstellt werden?

    Vielen Lieben Dank !!!
    Dominic

  • <cite class="fn">helpless</cite>

    Hallo,

    ich habe entsprechend der Anleitung das CR und OAC2/3-Customizing eingereicht. Beim Testupload erhalte ich jedoch folgende Fehlermeldung:

    HTTP error: 401 Unauthorized
    Message no. CMS025

    Diagnosis
    Error in accessing via HTTP

    401 Unauthorized

    Anschließend habe ich in der Transaction SICF einen HTTP-User hinterlegt (Communication User mit SAP_ALL). Trotzdem erhalte ich die selbe Fehlermeldung wieder. Kann mir jemand weiterhelfen?

Comments are closed.