Текущее время: Сб, июл 19 2025, 09:26

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: PDF по E-mail
СообщениеДобавлено: Ср, июн 11 2008, 08:37 
Начинающий
Начинающий

Зарегистрирован:
Вт, апр 25 2006, 06:26
Сообщения: 12
Нужно отправить документ в виде приложенного к письму PDF-файла.
Как после использования ФМ CONVERT_OTF_2_PDF передать данные в ФМ SO_DOCUMENT_SEND_API1? Видимо, нужно какое-то преобразование tline в solix...
Может, кто делал. Поделитесь мыслями


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июн 11 2008, 08:46 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, мар 12 2007, 07:04
Сообщения: 15
Откуда: Пермь
Может быть сначала необходимо выгрузить файл куда-нибудь, а уже потом его прицепить к письму?

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

Code:
*Вложение файла

* clear some stuffs
  CLEAR objpack.
  CLEAR objhead.
  CLEAR v_tab_lines.
  CLEAR objbin.

  sfile = filename.

  OPEN DATASET sfile FOR INPUT IN BINARY MODE.

  DATA s TYPE string.
  READ DATASET sfile INTO s.

* copy file content to the objbin table
  DATA doc_size TYPE i.
  doc_size = strlen( s ).
  do.
    objbin = s.
    append objbin.
    v_tab_lines = v_tab_lines + 1.
    SHIFT s BY 255 PLACES.
    data i type i.
    i = strlen( s ).
    if i < 255.
      objbin = s.
      append objbin.
      v_tab_lines = v_tab_lines + 1.
      exit.
    endif.
  enddo.

* closing file
  CLOSE DATASET sfile.

  objhead = sfile. " Attachment Name
  APPEND objhead.

* Creation of the entry for the attachment
  objpack-transf_bin = 'X'.
  objpack-head_start = 1.
  objpack-head_num   = 0.
  objpack-body_start = shift.
  objpack-body_num   = v_tab_lines.
  objpack-doc_type   = 'txt'.
  objpack-obj_name   = sfile. "attach_name.
  objpack-obj_descr  = sfile.
  objpack-doc_size   = doc_size.
  APPEND objpack.

  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = doc_chng
      put_in_outbox              = outbox
    TABLES
      packing_list               = objpack
      object_header              = objhead
      contents_bin               = objbin
      contents_txt               = objtxt
      receivers                  = reclist
    EXCEPTIONS
      too_many_receivers         = 1
      document_not_sent          = 2
      operation_no_authorization = 4
      OTHERS                     = 99.




Файл передается в бинарном виде, поэтому без разницы pdf это или txt.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июн 11 2008, 10:02 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
пдф из смартформы берется или откуда? если из смартформы в поиске есть все примеры

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июн 11 2008, 11:36 
Начинающий
Начинающий

Зарегистрирован:
Вт, апр 25 2006, 06:26
Сообщения: 12
Решил проблему следующим образом.
Если использовать ФМ CONVERT_OTF, то можно получить формуляр в бинарном представлении (параметр BIN_FILE). Потом его расфасовал по строкам таблицы content_hex.
Code:
  CALL FUNCTION 'CONVERT_OTF'
    EXPORTING
      format                = 'PDF'
    IMPORTING
      bin_file              = l_pdf_data
      bin_filesize          = l_filesize
    TABLES
      otf                   = ls_output_info-otfdata
      lines                 = lt_pdf_lines
    EXCEPTIONS
      err_max_linewidth     = 1
      err_format            = 2
      err_conv_not_possible = 3
      err_bad_otf           = 4
      OTHERS                = 5.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  ls_document-type = 'PDF'.
  ls_document-subject = 'Счет на предоплату'.
  DO.
    ls_content_hex-line = l_pdf_data.
    APPEND ls_content_hex TO ls_document-content_hex.
    SHIFT l_pdf_data BY 255 PLACES IN BYTE MODE.
    DATA i TYPE i.
    i = XSTRLEN( l_pdf_data ).
    IF i < 255.
      ls_content_hex-line = l_pdf_data.
      APPEND ls_content_hex TO ls_document-content_hex.
      EXIT.
    ENDIF.
  ENDDO.
  APPEND ls_document TO lt_documents.


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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