Возможно я не совсем понятно выразился. В общем, нужно, чтобы файл не добавлялся в дмс, а изменялся на новый при загрузке. Есть следующий код:
Code:
CALL FUNCTION 'BAPI_DOCUMENT_GETDETAIL2'
EXPORTING
documenttype = ls_draw-dokar
documentnumber = ls_draw-doknr
documentpart = ls_draw-doktl
documentversion = ls_draw-dokvr
getdocfiles = 'X'
IMPORTING
documentdata = ls_documentdata
return = ls_return
TABLES
documentfiles = lt_files.
Мы получили информацию о дмс документе в системе. Далее мы смотрим таблицу lt_files (т.к. она представлена строками 1024 чар, анализ выглядит криво, но вроде работает). Получаем информацию о контент сервере и приложении, открывающем файл:
Code:
LOOP AT lt_files INTO wa_fileinfo.
IF wa_fileinfo+34(1) EQ 1.
l_storage = wa_fileinfo+49(10).
CONDENSE l_storage.
i_appl = wa_fileinfo+59(3).
CONDENSE i_appl.
ENDIF.
ENDLOOP.
Далее в wa_files-docfile попадает имя нового файла, который должен заменить существующий. wa_files-originaltype, если я правильно понимаю, должен быть всегда равен 1, чтобы файл перезаписывался.
Code:
wa_files-docfile = <it_i>-i_file.
wa_files-originaltype = n.
wa_files-storagecategory = l_storage.
wa_files-active_version = 'X'.
wa_files-wsapplication = i_appl.
APPEND wa_files TO lt_file.
И в конце вызываем BAPI_DOCUMENT_CHANGE2, поставив галочку на ls_documentdatax-savedocfile1.
Code:
ls_documentdatax-savedocfile1 = 'X'.
CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2'
EXPORTING
documenttype = ls_draw-dokar
documentnumber = ls_draw-doknr
documentpart = ls_draw-doktl
documentversion = ls_draw-dokvr
documentdata = ls_documentdata
documentdatax = ls_documentdatax
IMPORTING
return = ls_return
TABLES
documentfiles = lt_file.
После всех этих манипуляций ошибок нет, но и файл не затирается, а добавляется новый. Подскажите, пожалуйста, как затереть старый файл и добавить новый.