Текущее время: Чт, июл 31 2025, 17:38

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


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

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


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

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