[ABAP] Infos zum Archiv lesen

*           Paket: SAOP
*                  SCMS
* Funktionsgruppe: SCMS_AO_API
* Tabellen: TOAAR: Kommunikationskonfigurationstabelle Ablagesysteme
*           TOADV: SAP ArchiveLink: Globale Dokumentarten SAP ArchiveLink
*           TOAOM: SAP ArchiveLink: Metatabelle für Verknüpfungen
*           TOADD: SAP ArchiveLink Prüftabelle DOK_Typ
*           TOJTB: Business Object Repository Grunddaten
*           TOA01: Verknüpfungstabelle 1
*           TOA02: Verknüpfungstabelle 2
*           TOA03: Verknüpfungstabelle 3
*           TOAAT: Table to store the File attributes
*           TOACO: Prüftabelle für die Verknüpfungstabellen

* Archiv-ID aus Tabelle TOAAR
PARAMETERS: p_arc TYPE toaar-archiv_id.

START-OF-SELECTION.

  DATA: lv_version TYPE char64.
  DATA: lv_protocol TYPE char64.
  DATA: lv_basicpath TYPE char255.
  DATA: lv_archivpath  TYPE char255.
  DATA: lv_spoolpath TYPE char255.
  DATA: lv_phys_basicpath TYPE char255.
  DATA: lv_phys_archivpath TYPE char255.
  DATA: lv_client_dependend TYPE sy-datar.
  DATA: lv_rep_type TYPE scms_crtyp.

* CMS: AO API Archivinformation
  CALL FUNCTION 'SCMS_ARCHIVE_INFO_GET'
    EXPORTING
      arc_id           = p_arc
    IMPORTING
      version          = lv_version
      protocol         = lv_protocol
      basicpath        = lv_basicpath
      archivpath       = lv_archivpath
      spoolpath        = lv_spoolpath
      phys_basicpath   = lv_phys_basicpath
      phys_archivpath  = lv_phys_archivpath
      client_dependend = lv_client_dependend
      rep_type         = lv_rep_type
    EXCEPTIONS
      error_config     = 1
      OTHERS           = 2.

  IF sy-subrc = 0.
    WRITE: / |Version: { lv_version }|.
    WRITE: / |Protokoll { lv_protocol }|.
    WRITE: / |BasicPath: { lv_basicpath }|.
    WRITE: / |ArchivPath: { lv_archivpath }|.
    WRITE: / |SpoolPath: { lv_spoolpath }|.
    WRITE: / |PhysBasicPath: { lv_phys_basicpath }|.
    WRITE: / |PhysArchivPath: { lv_phys_archivpath }|.
    WRITE: / |ClientDependend: { lv_client_dependend }|.
    WRITE: / |RepType: { lv_rep_type }|.
  ENDIF.

[ABAP] Archivobjekte lesen

* Archiv-ID aus Tabelle TOAAR
PARAMETERS: p_arc TYPE toaar-archiv_id.
* Dokumentart, in TOADV (SM30) gepflegt
PARAMETERS: p_aro TYPE toadv-ar_object DEFAULT 'SDOINVOICE'.
* Dateinamenerweiterung
PARAMETERS: p_dtype TYPE toaom-doc_type DEFAULT 'PDF'.
* SAP ArchiveLink: Objekt-Id (Objektidentifikator)
* SAP Objekt-Ident
* bei VBRK       - '0070000000                    0000000100'
* bei BUS1001006 - '0000000011000011111'
* Beispiele in TOA01, TOA02 oder TOA03
PARAMETERS: p_oid TYPE saeobjid DEFAULT '0070000000                    0000000100'.
* SAP ArchiveLink: Objekttyp des Business Objekts
* VBRK       - Kundeneinzelfaktura
* BUS1001006 - Standard Material
PARAMETERS: p_sobj TYPE tojtb-name DEFAULT 'VBRK'.

START-OF-SELECTION.

  DATA: it_connect_info TYPE STANDARD TABLE OF toav0 WITH DEFAULT KEY.

* Alle verkn?pften Archivobjekte zum Objekt anhand der Selektionskriterien ermitteln
* SAP ArchiveLink: Ermitteln von Ablage-Id und Dok.-Id zu Anwendungsobject
  CALL FUNCTION 'ARCHIV_CONNECTINFO_GET_META'
    EXPORTING
      archiv_id             = p_arc
      ar_object             = p_aro
      doc_type              = p_dtype
      object_id             = p_oid
      sap_object            = p_sobj
    TABLES
      connect_info          = it_connect_info
    EXCEPTIONS
      error_connectiontable = 1
      OTHERS                = 2.

  IF sy-subrc = 0.

* Liste der Verkn?fpungen durchgehen und Bin?rdaten aus Archiv holen
    LOOP AT it_connect_info ASSIGNING FIELD-SYMBOL(<ci>).

      WRITE: / <ci>-archiv_id, <ci>-sap_object, <ci>-object_id, <ci>-arc_doc_id, <ci>-reserve.

      DATA(lv_length) = 0.
      DATA: it_bin_data TYPE STANDARD TABLE OF tbl1024 WITH DEFAULT KEY.

      CLEAR: it_bin_data.

* Bin?rdaten des AO lesen
* CMS: AO API Dokument bereitstellen Tabelle
      CALL FUNCTION 'SCMS_AO_TABLE_GET'
        EXPORTING
          arc_id       = <ci>-archiv_id
          doc_id       = <ci>-arc_doc_id
        IMPORTING
          length       = lv_length
        TABLES
          data         = it_bin_data
        EXCEPTIONS
          error_http   = 1
          error_archiv = 2
          error_kernel = 3
          error_config = 4
          OTHERS       = 5.

      IF sy-subrc = 0.
        DATA: lv_xstring TYPE xstring.

* Bin?rdaten in xstring konvertieren
        CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
          EXPORTING
            input_length = CONV i( lv_length )
          IMPORTING
            buffer       = lv_xstring
          TABLES
            binary_tab   = it_bin_data
          EXCEPTIONS
            failed       = 1
            OTHERS       = 2.

        IF sy-subrc = 0.
          ...
        ENDIF.
      ELSE.
        WRITE: / 'Error:', sy-subrc.
      ENDIF.
    ENDLOOP.
  ELSE.
    WRITE: / 'Verbindungsdaten nicht gefunden:', sy-subrc.
  ENDIF.