Текущее время: Вт, июл 15 2025, 08:55

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Вложение в письмо.
СообщениеДобавлено: Пн, окт 07 2013, 13:44 
Ассистент
Ассистент

Зарегистрирован:
Ср, авг 01 2012, 09:52
Сообщения: 41
Добрый день.
Проблема в том, что не могу прикрепить файл в письмо считав его из директории клиентской машины. Из SMW0 все нормально считывается.

Добавляю вложение в документ.
CALL METHOD r_document->add_attachment
EXPORTING
i_attachment_type = 'DOC'
i_attachment_subject = 'Уведомление.doc'
i_att_content_hex = binary_content.


При этом если я считываю из smw0:
CLEAR binary_content.
DATA KEY type WWWDATATAB.
KEY-objid = 'ZHR_SSC' .
KEY-relid = 'MI' .
CALL FUNCTION 'WWWDATA_IMPORT'
EXPORTING
KEY = KEY
TABLES
* HTML = HTML
MIME = binary_content
EXCEPTIONS
OTHERS = 1.

То все нормально Вложение приходит.

А мне нужно считать файл не из smw0, а из директории на локальной машине. Для этого я использую:

CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = TempName
filetype = 'BIN'
IMPORTING
filelength = flen
CHANGING
data_tab = binary_content
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.

Но в этом случае, хоть таблица binary_content и заполняется, во вложении какая то ерунда.
Вопрос вот в чем. Как правильно считать документ с компьютера пользователя, чтобы он подходил для метода r_document->add_attachment ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Пн, окт 07 2013, 14:03 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Добрый день.
Попробуйте передавать еще размер файла в ->add_attachment, и i_attachment_type = 'BIN'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 08:44 
Ассистент
Ассистент

Зарегистрирован:
Ср, авг 01 2012, 09:52
Сообщения: 41
Проблема в том, что пытаюсь переслать xml документ. Word и Excel нормально передает. Если писать i_attachment_type = 'BIN' тоже не работает.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 10:50 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Странно, у меня работает. Даже с XML (вообще непонятно какая разница системе на расширение файла, может с кодировками чего?).
Code:
          docum->add_attachment( i_attachment_type    = 'BIN'
                                 i_attachment_subject = '1.xml'
                                 i_att_content_hex    = list_content
                                 i_attachment_size    = att_size ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 11:13 
Ассистент
Ассистент

Зарегистрирован:
Ср, авг 01 2012, 09:52
Сообщения: 41
Code:
data lv_i type i.
    call function 'SCMS_XSTRING_TO_BINARY'
         exporting
              buffer          = gv_xml_xstring
              IMPORTING
                  output_length         = lv_i
         tables
              binary_tab      = binary_content.


DATA len TYPE sood-objlen.
len = lv_i.
                        CALL METHOD r_document->add_attachment
                    EXPORTING
                       i_attachment_type = 'EXT'
                       i_attachment_subject = 'УведомлениеNEW5.doc'
                       i_att_content_hex    =  binary_content
                       i_attachment_size    = len.


И не работает. У вас так?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 11:16 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
Может дело действительно в кодировке? Как будет выглядеть XML без русских букв? Тоже ерунда?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 11:25 
Ассистент
Ассистент

Зарегистрирован:
Ср, авг 01 2012, 09:52
Сообщения: 41
Цитата:
Может дело действительно в кодировке? Как будет выглядеть XML без русских букв? Тоже ерунда?


Файлы вообще получаются 0 байт. То есть когда приходит письмо, то написано что вложение 90 Кб, например. А когда этот файл скачиваешь он занимает 0 байт.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 11:53 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Od1n, предлагаю делиться файлами и написанным кодом.

А зачем Вы вызываете call function 'SCMS_XSTRING_TO_BINARY' ?

У меня так:
Code:
  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      filename                = 'C:\1.xml'
      filetype                = 'BIN'
    IMPORTING
      filelength              = lv_bin_data_len
    CHANGING
      data_tab                = lt_binary
    EXCEPTIONS
...
      OTHERS                  = 19.

...
          docum->add_attachment( i_attachment_type    = 'BIN'
                                 i_attachment_subject = '1.xml'
                                 i_att_content_hex    = lt_binary
                                 i_attachment_size    = lv_bin_data_len ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 13:11 
Ассистент
Ассистент

Зарегистрирован:
Ср, авг 01 2012, 09:52
Сообщения: 41
Цитата:
А зачем Вы вызываете call function 'SCMS_XSTRING_TO_BINARY' ?


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

Для этого использую
Code:
CALL TRANSFORMATION ID
SOURCE XML gv_xml_xstring
RESULT XML go_resstream.


Собственно gv_xml_xstring - это и есть сформированный файл но в xstring, потом при помощи эту строку привожу к нужному типу данных. Чтобы
Code:
    call function 'SCMS_XSTRING_TO_BINARY'
         exporting
              buffer          = gv_xml_xstring

              IMPORTING
                  output_length         = flen
         tables
              binary_tab      = binary_content.


И потом вкладываю документ в письмо.
Code:
len = flen."lv_i.
                        CALL METHOD r_document->add_attachment
                    EXPORTING
                       i_attachment_type = 'BIN'
                       i_attachment_subject = 'УведомлениеNEW7.doc'
                       i_att_content_hex    =  binary_content
                       i_attachment_size    = len.




Также пробую вариант с загрузкой получившегося файла из директории:
Code:
  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      filename                = TempName"l_filename
      filetype                = 'BIN'
    IMPORTING
      filelength              = flen
    CHANGING
      data_tab                = binary_content  "t_datatab[]
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      not_supported_by_gui    = 17
      error_no_gui            = 18
      OTHERS                  = 19
      .


Но тоже не отправляется, а вот ворд или эксель без проблем.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 13:32 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Od1n написал(а):
Цитата:
А зачем Вы вызываете call function 'SCMS_XSTRING_TO_BINARY' ?


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

Я перестаю Вас понимать все больше и больше.. Вы хотите загрузить xml, преобразовать его в другой xml и отправить новый xml по почте, чтобы человек его распечатал. Или Вы пытаетесь таким образом издеваться над файлами MS Office?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 14:37 
Ассистент
Ассистент

Зарегистрирован:
Ср, авг 01 2012, 09:52
Сообщения: 41
Цитата:
Я перестаю Вас понимать все больше и больше.. Вы хотите загрузить xml, преобразовать его в другой xml и отправить новый xml по почте, чтобы человек его распечатал. Или Вы пытаетесь таким образом издеваться над файлами MS Office?


))))) Объяснения не мой конек. Сейчас попробую.

Данные хранятся в шаблоне xml. Транзакция STANS.

При помощи

Цитата:
CALL TRANSFORMATION z_abap_to_xml2
SOURCE (gt_source_itab)
RESULT XML gv_xml_xstring.


Где (gt_source_itab) хранит в себе данные которые нужно поставить на нужные места в шаблоне. А gv_xml_xstring - хранит в себе сам выходной файл. только в формате xstring. Его я и хотел передать пользователю. преобразовав в нужный формат при помощи call function 'SCMS_XSTRING_TO_BINARY'. (Чтобы не выгружать его на диск, а потом оттуда не забирать). Но такая передача не принципиальна.

Сделал выгрузку в папку пользователя, а уже из нее пытаюсь брать файл. То есть проблема не в формировании самого XML файла (Он нормально сохраняется в папке), а его последующая передача в письме. И проблема именно с XML.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 15:53 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Ну вот, все стало понятно. Правильно решили избежать выгрузки, ведь она здесь и не нужна. Видимо проблема непосредственно в файле, можете выложить его где-нибудь? Попробую Ваш файл отправить у себя.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Вт, окт 08 2013, 15:59 
Ассистент
Ассистент

Зарегистрирован:
Ср, авг 01 2012, 09:52
Сообщения: 41
Вот файл, выгруженный в процессе выполнения.

http://files.mail.ru/53CECE8905B74603AB47AC8B5949800E


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Сб, окт 12 2013, 10:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
не в фоне надеюсь,
отладить ведь 2 минуты


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вложение в письмо.
СообщениеДобавлено: Пт, окт 18 2013, 08:14 
Ассистент
Ассистент

Зарегистрирован:
Ср, авг 01 2012, 09:52
Сообщения: 41
Причина была в настройке почтового клиента на стороне пользователя. XML файлы блокировались Проблему решил, поместив сгенерированный файл в архив.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB