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/ |