Funktionsbaustein ARCHIV CREATE TABLE

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Der Funktionsbaustein ARCHIV_CREATE_TABLE kann z. B. ein PDF-Formular archivieren. Dies kann notwendig werden, wenn z. B. das Adobe Forms-Formular im Rahmen der Druck-Workbench (Transaktion EFRM) aufgerufen wird, wo nur ein Beleg bei der Archivierung dem Formular übergeben werden kann. Die Anforderung vom Fachbereich ist jedoch häufig, mehrere Belege bei der Formularausgabe zu archivieren. Dann muss das erzeugte PDF konvertiert werden und dem Funktionsbaustein ARCHIV_CREATE_TABLE übergeben werden.

Beispiel: Im Funktionsbaustein "RS_LIST_TO_SERPLISTS_NO_DIALOG".

Adobe Forms Archivierung

Coding

Ein Beispiel, um ein Objekt abzulegen. Hier das Binärobjekt PDF, was bei der Formularstellung vom Adobe Forms zurückgegeben wurde. Es kann auch jedes andere PDF archiviert werden.

  METHOD pdf_archivierung.

    DATA: ls_archiv     TYPE z_aif_s_archiv,
          ls_toadt      TYPE toadt,
          lv_FLENGTH    type SAPB-LENGTH,
          lv_anzahl     type i.

    DATA: lt_binar TYPE STANDARD TABLE OF tbl1024.

    IF iv_pdf IS INITIAL.
      RAISE err_no_pdf. "Es wurde kein PDF zur Archivierung mitgegeben
    ENDIF.

*   Konvertiere RAWSTRING in Binärtabelle
    CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
      EXPORTING
        buffer     = iv_pdf
      TABLES
        binary_tab = lt_binar.

*   Schleife über N Belege
    LOOP AT it_archiv INTO ls_archiv.

      IF sy-tabix = 1.

        DESCRIBE TABLE lt_binar lines lv_anzahl.

*       Dateigröße bestimmen. Sonst wird nur leeres Dokument archiviert
        lv_FLENGTH = lv_anzahl * 1024.

        CALL FUNCTION 'ARCHIV_CREATE_TABLE'
          EXPORTING
            ar_object                = ls_archiv-ar_object     "z. B. 'Z_BELEG' (für EIBE)
            object_id                = ls_archiv-object_id     "Beleg, z. B. 00000000000000001363, 00000000000000001364 oder 00000000000000001365
            sap_object               = ls_archiv-sap_object    "z. B. '/IDXGC/DOC' (für EIBE)
            FLENGTH                  = lv_flength              "Dateigröße
          IMPORTING
            outdoc                   = ls_toadt                "Rückgabetabelle, entscheidend Parameter ARC_DOC_ID
          TABLES
           "archivobject             = lt_archiveobj
            binarchivobject          = lt_binar
          EXCEPTIONS
            error_archiv             = 01
            error_communicationtable = 02
            error_connectiontable    = 03
            error_kernel             = 04
            error_parameter          = 05
            OTHERS                   = 06.

        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE 'I'
                  NUMBER sy-msgno
                  WITH sy-msgv1
                       sy-msgv2
                       sy-msgv3
                       sy-msgv4.
        ENDIF.

      ELSE.

*       Füge die zusätzlichen Verknüpfungen in der Tabelle TOA01 an
*       Beim zweiten Satz ist die ARC_DOC_ID (SAP ArchiveLink: Dokument-Id) gefüllt
*       und dann braucht nur noch die Verknüpfung zum Archivierungsobjekt erstellt werden
*       für jeden weiteren Beleg
        CALL FUNCTION 'ARCHIV_CONNECTION_INSERT'
          EXPORTING
            archiv_id             = 'PU'
            arc_doc_id            = ls_toadt-arc_doc_id        "z. B. 005056A8B7ED1ED69D9E3FE94306C24E, s. a. TOA01-ARC_DOC_ID
            ar_object             = ls_archiv-ar_object        "z. B. 'Z_BELEG' (für EIBE)
            object_id             = ls_archiv-object_id        "Beleg, z. B. 00000000000000001363, 00000000000000001364 oder 00000000000000001365
            sap_object            = ls_archiv-sap_object       "z. B. '/IDXGC/DOC' (für EIBE)
          EXCEPTIONS
            error_connectiontable = 1
            OTHERS                = 2.

      ENDIF.

    ENDLOOP.

  ENDMETHOD.

Anzeige archiviertes PDF

Aus dem Beleg heraus. Hier ein Immobilienvertrag.

Archivierung1.jpg

Anzeige der Anlagenliste.

Archivierung2.jpg

Archivierung3.jpg

Archivierung4.jpg

Web-Links