SAPфорум.RU https://sapboard.ru/forum/ |
|
Выгрузка gos attachmenta на локальный компьютер. https://sapboard.ru/forum/viewtopic.php?f=13&t=84556 |
Страница 1 из 1 |
Автор: | aks [ Пн, окт 21 2013, 12:05 ] |
Заголовок сообщения: | Выгрузка gos attachmenta на локальный компьютер. |
Добрый день. Помогите разобраться с проблемой. В нашей системе к каждому материалу(BUS1001001) прикреплено фото посредством gos attachmenta. Нужно выгрузить на локальный компьютер пользователя это фото посредством abap-программы. Следующий код создает файл, но открыть его не получается. В чем может быть проблема? Code: REPORT zdownload_test.
START-OF-SELECTION. DATA: gs_lpor TYPE sibflporb, lt_relat TYPE obl_t_relt, la_relat LIKE LINE OF lt_relat. gs_lpor-instid = '000000000000200730'. gs_lpor-typeid = 'BUS1001001'. gs_lpor-catid = 'BO'. la_relat-sign = 'I'. la_relat-option = 'CP'. la_relat-low = '*'. APPEND la_relat TO lt_relat. DATA: t_links TYPE obl_t_link, la_links LIKE LINE OF t_links. DATA: lo_root TYPE REF TO cx_root. TRY. CALL METHOD cl_binary_relation=>read_links EXPORTING is_object = gs_lpor it_relation_options = lt_relat IMPORTING et_links = t_links. CATCH cx_root INTO lo_root. ENDTRY. DATA l_folder_id TYPE soodk. DATA l_object_id TYPE soodk. DATA document_id TYPE sofmk. READ TABLE t_links INTO la_links INDEX 1. document_id = la_links-instid_b. l_folder_id-objtp = document_id-foltp. l_folder_id-objyr = document_id-folyr. l_folder_id-objno = document_id-folno. l_object_id-objtp = document_id-doctp. l_object_id-objyr = document_id-docyr. l_object_id-objno = document_id-docno. DATA: document_content TYPE STANDARD TABLE OF soli, sofm2 TYPE sood2. " Кто и когда создал * Получение содержимого файла. CALL FUNCTION 'SO_OBJECT_READ' EXPORTING folder_id = l_folder_id object_id = l_object_id IMPORTING object_hd_display = sofm2 TABLES objcont = document_content EXCEPTIONS active_user_not_exist = 1 communication_failure = 2 component_not_available = 3 folder_not_exist = 4 folder_no_authorization = 5 object_not_exist = 6 object_no_authorization = 7 operation_no_authorization = 8 owner_not_exist = 9 parameter_error = 10 substitute_not_active = 11 substitute_not_defined = 12 system_failure = 13 x_error = 14 OTHERS = 15. IF sy-subrc NE 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. * Выгрузка на локальный компьютер файла CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = 'C:\test.jpg' filetype = 'BIN' confirm_overwrite = 'X' TABLES data_tab = document_content. |
Автор: | SU53 [ Пн, окт 21 2013, 13:57 ] |
Заголовок сообщения: | Re: Выгрузка gos attachmenta на локальный компьютер. |
Попробуйте посчитайть размер контента и передать BIN_FILESIZE в ФМ GUI_DOWNLOAD. |
Автор: | aks [ Пн, окт 21 2013, 14:57 ] |
Заголовок сообщения: | Re: Выгрузка gos attachmenta на локальный компьютер. |
Вроде понял в чем проблема. Если gos attachment является текстовым файликом то ФМ 'SO_OBJECT_READ' в выходном табличном параметре возвращает содержимое текствого файла. Если же gos attachment является файлом картинкой то ФМ 'SO_OBJECT_READ' возвращает параметр document_content = '&SO_KProObjectID=SOFFLOIO 525E9A4AC0050C10E10080000ABAB980' а не содержимое картинки в двоичном коде. Осталось понять как по document_content = '&SO_KProObjectID=SOFFLOIO 525E9A4AC0050C10E10080000ABAB980' выудить содержимое картинки в двоичном коде. |
Автор: | aks [ Пн, окт 21 2013, 16:40 ] |
Заголовок сообщения: | Re: Выгрузка gos attachmenta на локальный компьютер. |
Разобрался с проблемой. Для чтения содержимого gos attachmenta нужно использовать ФМ SO_DOCUMENT_READ_API1. |
Автор: | julia.mat [ Вт, окт 17 2017, 08:11 ] |
Заголовок сообщения: | Re: Выгрузка gos attachmenta на локальный компьютер. |
У меня возникла подобная проблема. Cначала при помощи ФМ 'SO_DOCUMENT_READ_API1' получила таблицы OBJECT_HEADER и OBJECT_CONTENT с данными аттачмента GOS. После этого мне надо сохранить аттачмент в файл на локальный компьютер в указанную папку. Файлы могут быть Excel, Word, PDF. Имя файла и имя папки должно формироваться программно, но проблема не в этом. Для проверки, как это работает, написала простейшую программу. Использую ФМ 'GUI_DOWNLOAD' для сохранения аттачмента на компьютер. Файл test.pdf создается, но не открывается. При попытке открыть его возникает ошибка "Произошла ошибка при открытии данного документа. Файл поврежден и не может быть восстановлен". Прообовала передавать в ФМ 'GUI_DOWNLOAD' параметр BIN_FILESIZE = l_DOCUMENT-DOC_SIZE, все равно при открытии ошибка. Что я делаю не так? Может есть другой способ сохранять файлы аттачмента GOS на компьютер? Code: REPORT ZTEST_DOWNLOAD_GOS.
DATA: lt_HEADER type table of SOLISTI1, lt_CONTENT type table of SOLISTI1 WITH HEADER LINE, lt_DOCUMENT type table of SOFOLENTI1 WITH HEADER LINE, l_DOCUMENT LIKE SOFOLENTI1, DOC_id TYPE SOFOLENTI1-DOC_ID. CALL FUNCTION 'SO_DOCUMENT_READ_API1' EXPORTING DOCUMENT_ID = 'FOL32000000000004EXT42000000000008' IMPORTING DOCUMENT_DATA = l_DOCUMENT TABLES OBJECT_HEADER = lt_HEADER OBJECT_CONTENT = lt_CONTENT EXCEPTIONS DOCUMENT_ID_NOT_EXIST = 1 OPERATION_NO_AUTHORIZATION = 2 X_ERROR = 3 OTHERS = 4 . * Выгрузка на локальный компьютер файла CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING * BIN_FILESIZE = 000000851613 filename = 'C:\test.pdf' filetype = 'BIN' confirm_overwrite = 'X' TABLES data_tab = lt_CONTENT. |
Автор: | Bimit [ Вт, окт 17 2017, 08:49 ] |
Заголовок сообщения: | Re: Выгрузка gos attachmenta на локальный компьютер. |
Можете почитать тут https://wiki.scn.sap.com/wiki/display/A ... ntoPDFfile? |
Автор: | vvk [ Вт, окт 17 2017, 15:29 ] |
Заголовок сообщения: | Re: Выгрузка gos attachmenta на локальный компьютер. |
В параметре OBJECT_CONTENT возвращаются данные, хранящиеся в текстовом формате. Binary-файлы возвращаются в параметре CONTENTS_HEX фм |
Автор: | julia.mat [ Ср, окт 18 2017, 13:48 ] |
Заголовок сообщения: | Re: Выгрузка gos attachmenta на локальный компьютер. |
Спасибо, vvk! Подставила в ФМ GUI_DOWNLOAD другую таблицу, и все заработало! Тема закрыта. Code: REPORT ZTEST_DOWNLOAD_GOS.
DATA: lt_HEADER type table of SOLISTI1, lt_CONTENT type table of SOLISTI1 WITH HEADER LINE, lt_DOCUMENT type table of SOFOLENTI1 WITH HEADER LINE, l_DOCUMENT LIKE SOFOLENTI1, LT_HEX TYPE TABLE OF SOLIX WITH HEADER LINE, DOC_id TYPE SOFOLENTI1-DOC_ID. CALL FUNCTION 'SO_DOCUMENT_READ_API1' EXPORTING DOCUMENT_ID = 'FOL32000000000004EXT42000000000008' IMPORTING DOCUMENT_DATA = l_DOCUMENT TABLES OBJECT_HEADER = lt_HEADER OBJECT_CONTENT = lt_CONTENT CONTENTS_HEX = LT_HEX EXCEPTIONS DOCUMENT_ID_NOT_EXIST = 1 OPERATION_NO_AUTHORIZATION = 2 X_ERROR = 3 OTHERS = 4 . * Выгрузка на локальный компьютер файла CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING * BIN_FILESIZE = 000000851613 filename = 'C:\test.pdf' filetype = 'BIN' confirm_overwrite = 'X' TABLES data_tab = LT_HEX. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |