SAPфорум.RU
https://sapboard.ru/forum/

Правильное использование ФМ bapi_document_change2
https://sapboard.ru/forum/viewtopic.php?f=13&t=94531
Страница 1 из 1

Автор:  boreich [ Вт, мар 14 2017, 08:24 ]
Заголовок сообщения:  Правильное использование ФМ bapi_document_change2

Добрый день, коллеги.

Хотел поинтересоваться как правильно надо использовать ФМ bapi_document_change2 для того, чтобы изменить файл, прикреплённый к дмс док-ту? В гугле есть несколько примеров использования, но так, чтобы привязанный файл изменяли - не нашёл такого. Зато, кроме всего прочего, мне попалась нота с описанием bapi для dms документов (правда ответа на свой вопрос я там тоже не нашёл), но может кому-нибудь пригодится: номер 766277. Просто, насколько я знаю, в сап файлы физически копируются на контент сервер и, чтобы изменить привязку дмс к файлу ведь недостаточно просто сменить ссылку на файл? Желательно ведь ещё и старый файл удалить из контент сервера. Буду признателен, если кто-нибудь покажет рабочий пример.

Автор:  boreich [ Чт, мар 16 2017, 16:54 ]
Заголовок сообщения:  Re: Правильное использование ФМ bapi_document_change2

Возможно я не совсем понятно выразился. В общем, нужно, чтобы файл не добавлялся в дмс, а изменялся на новый при загрузке. Есть следующий код:

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.


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

Автор:  Bimit [ Пт, мар 17 2017, 06:34 ]
Заголовок сообщения:  Re: Правильное использование ФМ bapi_document_change2

выставите параметр DELETEVALUE в бапишке

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/