База данных ABAP ArchiveLink Сторги двоичных файлов - PullRequest
0 голосов
/ 17 июня 2020

Я хотел бы хранить созданные файлы (например, PDF-документы в двоичном формате) через ArchiveLink непосредственно в базе данных, а не на каком-либо сервере содержимого.

Я успешно настроил репозиторий содержимого ArchiveLink и даже сохранил первый файл в этом репозитории с помощью простого отчета. В этом отчете я использовал функциональный модуль ARCHIVOBJECT_CREATE_FILE и передал ему путь к файлу, хранящемуся локально на моем компьютере, репозиторий контента и тип документа.

Поскольку я, однако, хотел бы использовать свой репозиторий контента для хранения созданных двоичных файлов, я хотел бы использовать функциональный модуль ARCHIVOBJECT_CREATE_TABLE. Но реализация этого вызывает у меня некоторые проблемы.

Я попытался загрузить тот же файл, который использовал для тестирования раньше, с помощью GUI_UPLOAD FM (тип файла «BIN»), а затем попытался заархивировать полученный BINARCHIVOBJECT через модуль Create Table Function. Это работает без каких-либо ошибок, давая мне sy-subrc 0 и даже генерируя ARC_DOC_ID.

Однако в моей базе данных, используемой для ArchiveLink, нет записей, и когда я пытаюсь отобразить ARC_DOC_ID через ARCHIVOBJECT_DISPLAY FM он сообщает мне, что не может загрузить соответствующий файл из моего хранилища базы данных (потому что, конечно, нет записи для этого ARC_DOC_ID).

Я был бы очень признателен за любые предложения, как я бы заставить это работать.

Работает (для лучшего чтения без исключений):

PARAMETERS filename TYPE sapb-sappfad LOWER CASE.
PARAMETERS contrep  TYPE toaar-archiv_id.
PARAMETERS doctyp   TYPE toadd-doc_type.

Call Function 'ARCHIVOBJECT_CREATE_FILE'
  Exporting 
    ARCHIV_ID     = ContRep
    DOCUMENT_TYPE = DocTyp
    PATH          = FileName
  Importing
    ARCHIV_DOC_ID = ArcDocID.

Не работает:

DATA: lt_binary   TYPE STANDARD TABLE OF tbl1024,
      lv_filename TYPE string,
      lv_length   TYPE i,
      lv_length2  TYPE SAPB-LENGTH.

CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    filename   = lv_filename
    filetype   = 'BIN'
  IMPORTING
    FILELENGTH = lv_length
  TABLES
    data_tab   = lt_binary.

CALL FUNCTION 'ARCHIVOBJECT_CREATE_TABLE'
  EXPORTING
    archiv_id       = ContRep
    document_type   = DocTyp
    LENGTH          = lv_length2
  IMPORTING
    ARCHIV_DOC_ID   = ArcDocID
  TABLES
    BINARCHIVOBJECT = lt_binary.

Заранее спасибо,

Мориц

...