Текущее время: Пт, авг 01 2025, 14:28

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: E-mail & Attachment
СообщениеДобавлено: Ср, июл 01 2009, 10:55 
Специалист
Специалист

Зарегистрирован:
Вт, сен 16 2008, 13:15
Сообщения: 124
Пол: Мужской
Привет
кто нить сталкивался с проблемой
есть необходимость хранить документы в САПе
можно ли и если да, то куда смотреть, чтобы документы попадали с письмами (вложениями)
приблизительная схема: приходит письмо с вложением в САП, вложение сохраняется, а отправителю отсылается уведомление что документ успешно сохранен


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: E-mail & Attachment
СообщениеДобавлено: Ср, июл 01 2009, 16:22 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
namen написал:
Привет
кто нить сталкивался с проблемой
есть необходимость хранить документы в САПе
можно ли и если да, то куда смотреть, чтобы документы попадали с письмами (вложениями)
приблизительная схема: приходит письмо с вложением в САП, вложение сохраняется, а отправителю отсылается уведомление что документ успешно сохранен

А где здесь проблема?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: E-mail & Attachment
СообщениеДобавлено: Ср, июл 01 2009, 16:44 
Специалист
Специалист

Зарегистрирован:
Вт, сен 16 2008, 13:15
Сообщения: 124
Пол: Мужской
проблема в том что не понятно как получить вложение и как его сохранить в САПе


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: E-mail & Attachment
СообщениеДобавлено: Ср, июл 01 2009, 16:53 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
namen написал:
проблема в том что не понятно как получить вложение и как его сохранить в САПе

А где\как Вы его хотите "сохранить в САПе"?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: E-mail & Attachment
СообщениеДобавлено: Ср, июл 01 2009, 17:02 
Специалист
Специалист

Зарегистрирован:
Вт, сен 16 2008, 13:15
Сообщения: 124
Пол: Мужской
ArhiveLink, хотелось бы сюда и в ответном письме ссылку на документ
вообще интересует любая возможность сохранения документа


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: E-mail & Attachment
СообщениеДобавлено: Чт, июл 02 2009, 11:37 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
namen написал:
ArhiveLink, хотелось бы сюда и в ответном письме ссылку на документ
вообще интересует любая возможность сохранения документа

Поищите на форуме по слову GOS.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: E-mail & Attachment
СообщениеДобавлено: Пт, июл 03 2009, 10:06 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Делал похожее, крепил вложения из писем к документам FI.
После изучения классов и методов OUTLOOK, было принята следующая метода и решение.
1. Пользователь открывает интересующие его письма,
2. заходит в SAP (работают в Z-транзакции) выбирает прикрепление вложений из OUTLOOK,
3. обрабатываются открытые письма со стягиванием названий файлов во вложениях,
4. файлы сохраняются на локальную машину,
5. все открытые письма закрываются, (т.е. необходимо освободить файлы и память)
6. выдается диалог выбора файлов для прикрепления,
7. выделенные файлы с локальной машины крепятся через GOS к документам FI,
8. удаляются все файлы, сохранные на локале.

Вот код в помощь.
Code:
*&---------------------------------------------------------------------*
*&      Form  SAVE_ATTACHMENTS_TO_LOCAL
*&---------------------------------------------------------------------*
*       Сохраняем аттачи на локальный диск
*----------------------------------------------------------------------*
*      <--> PT_FILE_NAMES - имена сохраненных файлов
*      <--> PF_TEMP_DIR    - путь временной папки
*      <--> PF_ERROR         - признак ошибки
*----------------------------------------------------------------------*
FORM save_attachments_to_local  CHANGING pt_file_names TYPE tt_file_names
                                         pf_temp_dir   TYPE char128
                                         pf_error      TYPE c.
  DATA: lo_outlook         TYPE ole2_object,
        lo_inspectors      TYPE ole2_object,
        lo_inspector       TYPE ole2_object,
        lo_curitem         TYPE ole2_object,
        lo_attachments     TYPE ole2_object,
        lo_item            TYPE ole2_object,
        lf_filename(255)   TYPE c,
        lf_insp_count      TYPE i,
        lf_attach_count    TYPE i,
        cl_service         TYPE REF TO cl_gui_frontend_services,
        lf_temp_dir_string TYPE string.

  CREATE OBJECT cl_service.

  pf_temp_dir = cc_temp_dir.

  pf_error = cc_x.
  CREATE OBJECT lo_outlook 'OUTLOOK.APPLICATION'.
  CHECK sy-subrc IS INITIAL.
* Получаем список открытых писем
  GET PROPERTY OF lo_outlook 'INSPECTORS' = lo_inspectors.
  CHECK sy-subrc IS INITIAL.
  CLEAR lf_insp_count.
  GET PROPERTY OF lo_inspectors 'COUNT' = lf_insp_count.
  DO lf_insp_count TIMES.
*   По-очереди обрабатываем каждое письмо, номер инспектора всегда 1,
*   так как мы закрываем каждое письмо после обработки
    CALL METHOD OF lo_inspectors 'ITEM' = lo_inspector
      EXPORTING #1 = 1.
    CHECK sy-subrc IS INITIAL.
*   Текущий элемент должен быть письмом
    GET PROPERTY OF lo_inspector 'CURRENTITEM' = lo_curitem.
    CHECK sy-subrc IS INITIAL.
*   Получаем список приложенных файлов
    GET PROPERTY OF lo_curitem 'ATTACHMENTS' = lo_attachments.

*   Закрываем письмо
    CALL METHOD OF lo_curitem 'CLOSE'
      EXPORTING #1 = 1.
    FREE OBJECT lo_curitem.
    CALL METHOD OF lo_inspector 'CLOSE'
      EXPORTING #1 = 1.
    FREE OBJECT lo_inspector.

    CLEAR lf_attach_count.
    GET PROPERTY OF lo_attachments 'COUNT' = lf_attach_count.
*   Обрабатываем список приложенных файлов
    DO lf_attach_count TIMES.
      CALL METHOD OF lo_attachments 'ITEM' = lo_item
        EXPORTING #1 = sy-index.
      CHECK sy-subrc IS INITIAL.

      CLEAR lf_filename.
      GET PROPERTY OF lo_item 'FILENAME' = lf_filename.
      IF lf_filename IS NOT INITIAL.
*       Сохраняем файл на локальный диск
        CONCATENATE pf_temp_dir lf_filename INTO lf_filename.
        CALL METHOD OF lo_item 'SAVEASFILE'
          EXPORTING #1 = lf_filename.
        IF sy-subrc IS INITIAL.
          APPEND lf_filename TO pt_file_names.
        ENDIF.
      ENDIF.
      FREE OBJECT lo_item.
    ENDDO.

    FREE OBJECT: lo_attachments.
  ENDDO.

  FREE OBJECT: lo_inspectors,
                       lo_outlook.
  CLEAR pf_error.
ENDFORM.                    " SAVE_ATTACHMENTS_TO_LOCAL

Code:
*&---------------------------------------------------------------------*
*&      Form  LOAD_FILE_TO_ATTACH
*&---------------------------------------------------------------------*
*       Прикрепление файлов к документу
*----------------------------------------------------------------------*
*      --> PF_FILE_NAME   - имя файла
*      --> PF_OBJKEY      - ключ объекта
*      --> PF_OBJTYPE     - тип объекта
*     <--> PF_ERROR       - признак ошибки
*----------------------------------------------------------------------*
FORM load_file_to_attach  USING    pf_file_name   TYPE string
                                   pf_temp_dir    TYPE char128
                                   pf_objkey      TYPE swo_typeid
                                   pf_objtype     TYPE swo_objtyp
                          CHANGING pf_error       TYPE c.
  DATA: ls_object_a    TYPE borident,
        ls_object_b    TYPE borident,
        lf_docty       LIKE borident-objtype VALUE 'MESSAGE',
        lf_str1        TYPE string,
        lf_str2        TYPE string,
        lf_str         TYPE string,
        lt_str         TYPE STANDARD TABLE OF string,
        lf_ext         TYPE string,
        lf_lines       TYPE i,
        lo_message     TYPE swc_object,
        lf_message_key TYPE ts_message_key,
        lf_reltyp      LIKE breltyp-reltype VALUE 'ATTA',
        lf_msgtyp      LIKE sofm-doctp  VALUE 'PDF',
        lt_data_tab    TYPE STANDARD TABLE OF ts_blob,
        lf_file_length TYPE i,
        lf_filetype(10) TYPE c VALUE 'BIN',
        lf_result       TYPE c,
        lf_file(128)    TYPE c,
        lc_service      TYPE REF TO cl_gui_frontend_services,
        lf_filename     TYPE string,
        lf_rc           TYPE i,
        lf_offset       TYPE i,
        lf_size         TYPE i,
        lc_com1         TYPE ole2_object.

  pf_error = cc_x.
  CREATE OBJECT lc_service.
  ls_object_a-objkey =  pf_objkey.
  ls_object_a-objtype = pf_objtype.
  lf_file = pf_file_name.
  "CONDENSE lf_file.
  lf_filename = lf_file.
* Проверяем существование файла
  CALL METHOD lc_service->file_exist
    EXPORTING
      file                 = lf_filename
    RECEIVING
      result               = lf_result
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      wrong_parameter      = 3
      not_supported_by_gui = 4
      OTHERS               = 5.

  lf_file = lf_filename.
 
  CHECK lf_result IS NOT INITIAL.

* Читаем файл с диска
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = lf_filename
      filetype                = lf_filetype
    IMPORTING
      filelength              = lf_file_length
    TABLES
      data_tab                = lt_data_tab
    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.

  IF sy-subrc IS NOT INITIAL.
    MESSAGE s368(00) WITH 'Ошибка открытия файла' DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.
*----------------------------------------------------------
*  ( MESSAGE )тип документа.
  lf_docty = 'MESSAGE'.

  lf_ext = pf_file_name.
  TRANSLATE lf_ext TO UPPER CASE.
  "SPLIT lf_ext AT '.' INTO: lf_str1 lf_str2.
  SPLIT lf_ext AT '.' INTO TABLE lt_str.
  lf_lines = LINES( lt_str ).
  IF lf_lines EQ 1.
*   Файл без расширения
    MESSAGE e002(ZMAIL).
  ENDIF.
  READ TABLE lt_str INTO lf_str2 INDEX lf_lines.
  lf_lines = lf_lines - 1.
  LOOP AT lt_str INTO lf_str TO lf_lines.
    IF lf_str1 IS INITIAL.
      lf_str1 = lf_str.
    ELSE.
      CONCATENATE lf_str1 lf_str INTO lf_str1 SEPARATED BY '.'.
    ENDIF.
  ENDLOOP.

  lf_offset = STRLEN( pf_temp_dir ).
  lf_str1 = lf_str1+lf_offset.
* Проверяем расширения, так как нам нужны "избранные"
  IF lf_str2 = 'DOC' OR lf_str2 = 'XLS' OR lf_str2 = 'PDF' OR lf_str2 = 'RAR' OR
     lf_str2 = 'BMP' OR lf_str2 = 'JPG' OR lf_str2 = 'TIFF' OR lf_str2 = 'TIF'.
    lf_msgtyp = lf_str2.
  ELSE.
    lf_msgtyp = 'EXT'.
  ENDIF.

* Создаем объект типа MESSAGE
  swc_create_object lo_message 'MESSAGE' lf_message_key.

* Создаем контейнер для последующих вызовов
  swc_container lt_message_container.

* Передаем параметры вызова
  swc_set_element lt_message_container 'DOCUMENTTITLE' lf_str1.
  swc_set_element lt_message_container 'DOCUMENTLANGU' 'E'.
  swc_set_element lt_message_container 'NO_DIALOG'     'X'.
  swc_set_element lt_message_container 'DOCUMENTNAME'   lf_docty.
  swc_set_element lt_message_container 'DOCUMENTTYPE'  lf_msgtyp.

* Данные документа
  swc_set_table lt_message_container 'DocumentContent' lt_data_tab.

* Размер документа
  swc_set_element lt_message_container 'DOCUMENTSIZE'   lf_file_length.

* Создаем объект для прикрепления
  swc_refresh_object lo_message.
  swc_call_method lo_message 'CREATE' lt_message_container.

* Получаем ключ объекта
  swc_get_object_key lo_message lf_message_key.

* Теперь приложение у нас как экземпляр БО, который можем прикрепить

* Крепим (связываем) объекты
  ls_object_b-objkey = lf_message_key.
  ls_object_b-objtype = lf_docty.

*----------------------------------------------------------
  CALL FUNCTION 'BINARY_RELATION_CREATE'
    EXPORTING
      obj_rolea      = ls_object_a
      obj_roleb      = ls_object_b
      relationtype   = lf_reltyp
    EXCEPTIONS
      no_model       = 1
      internal_error = 2
      unknown        = 3.

  COMMIT WORK AND WAIT.

  CLEAR pf_error.

ENDFORM.                    " LOAD_FILE_TO_ATTACH


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

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


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

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


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

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