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

Часовой пояс: 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 часа


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

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


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

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