Автор Тема: Примеры работы SO_NEW_DOCUMENT_SEND_API1 (отправка сообщений)  (Прочитано 79292 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
В общем-то вполне полезный функционал который позволяет отправлять сообщения пользователям как по системе так и на внешние e-mail адреса, ну если конечно ваши администраторы настроили соответствующий функционал системы и отправка разрешена на выбранные домены.

В общем виде шаблон вызова ФМ представлен в следующем виде:
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
  EXPORTING
    document_data                    =
*   DOCUMENT_TYPE                    = 'RAW'
*   PUT_IN_OUTBOX                    = ' '
* IMPORTING
*   SENT_TO_ALL                      =
*   NEW_OBJECT_ID                    =
  tables
*   OBJECT_HEADER                    =
*   OBJECT_CONTENT                   =
*   CONTENTS_HEX                     =
*   OBJECT_PARA                      =
*   OBJECT_PARB                      =
    receivers                        =
* EXCEPTIONS
*   TOO_MANY_RECEIVERS               = 1
*   DOCUMENT_NOT_SENT                = 2
*   DOCUMENT_TYPE_NOT_EXIST          = 3
*   OPERATION_NO_AUTHORIZATION       = 4
*   PARAMETER_ERROR                  = 5
*   X_ERROR                          = 6
*   ENQUEUE_ERROR                    = 7
*   OTHERS                           = 8.

Ну и расшифруем некоторые параметры ФМ-ки:
Код: You are not allowed to view links. Register or Login
DOCUMENT_DATA - содержит заголовок отправляемого документа, полей в нем много и большая часть из них актуальная для хранения документа в sapoffice. Из того что обязательно/желательно заполнить в данной стркутуре:
OBJ_NAME - Имя документа,
OBJ_DESCR - Краткое описание,  собственно фактически это аналог темы e-mail сообщений
OBJ_LANGU - Код языка, ну сюда обычно толкаем значение из SY-LANGU, если не требуется что либо другое
SENSITIVTY - Степень конфиденциальности документа пока возможны следующие значения:
P Личный объект
F Функциональный объект
O Конфиденциальный объект
C Конфиденциальный объект фирмы
EXPIRY_DAT - Дата истчения срока действия сообщения. Полезно использовать совместно с параметром PUT_IN_OUTBOX.
NO_CHANGE - Если поставить в Х, то документ невозможно будет изменить. Само собой актуально для SapOffice
PUT_IN_OUTBOX - Иногда полезная функция, позволяте оставить отправленное сообщение в папке исходящие. Полезно для разбора полетов было сформировано сообщение или нет, ну если это какая-то вертушка работает.
DOCUMENT_TYPE - Тип документа который отправляется. Фактически это тип данных который передается в таблице OBJECT_CONTENT. Констант там определено дочертиков, опять же разницу в использовании определяйте сами, я лично пользовался всего парочкой из предложенного ниже списка (в примерах будет показано), а так вот оно:
      fol like sood-objtp value 'FOL', " Folder
      dli like sood-objtp value 'DLI', " Distributionlist
      usr like sood-objtp value 'USR', " User
      sys like sood-objtp value 'SYS', " System
      raw like sood-objtp value 'RAW', " RAW-Text
      int like sood-objtp value 'INT', " RAW-Text mit byte count
      bin like sood-objtp value 'BIN', " Binary Objects
      doc like sood-objtp value 'DOC', " Word - documents
      xls like sood-objtp value 'XLS', " Exel - documents
      img like sood-objtp value 'IMG', " Image-link
      otf like sood-objtp value 'OTF', " SAPscript Ausgabeformat
      rtf like sood-objtp value 'RTF', " RTF Editor (no TOM)
      txt like sood-objtp value 'TXT', " Text Format (notepad -no TOM)
      htm like sood-objtp value 'HTM', " HTML Format (no TOM)
      scr like sood-objtp value 'SCR', " SAPscript-Texte
      adr like sood-objtp value 'ADR', " Adressen
      org like sood-objtp value 'ORG', " organisation unit
      obj like sood-objtp value 'OBJ', " sap object
      ofo like sood-objtp value 'OFO', " object folder'RAW'
      url like sood-objtp value 'URL', " Internet/Intranet-Link
      dat like sood-objtp value 'DAT', " Date (Termin)
      qry like sood-objtp value 'QRY', " Suchabfragen SAPfind
      shl like sood-objtp value 'SHL', " Shelltexte SAPfind
      gry like sood-objtp value 'GRY', " SAP Prôsentationsgraphik
      fax like sood-objtp value 'FAX', " Telefax
      ext like sood-objtp value 'EXT', " PC documents
      arc like sood-objtp value 'ARC', " ArchiveLink
      ali like sood-objtp value 'ALI', " ABAP lists
      idc like sood-objtp value 'IDC', " idocs for edi as referenz
      r3i like sood-objtp value 'R3I', " idocs for edi as referenz
      wfl like sood-objtp value 'WFL', " WorkFlow
      gra like sood-objtp value 'GRA'. " SAP Prôsentationsgraphik

OBJECT_CONTENT - Собственно сам текст сообщения хранится в данной таблице, вообще там все по простому просто таблица строк в 255 символов длинной.
RECEIVERS - Список получателей, тут структура посложнее хотя не все нам из нее нужно:
RECEIVER - Имя получателя. Сюда можно записать как имя пользователя в система SAP так и внешний e-mail адрес.
REC_TYPE - Собственно поле определяющее что же мы записали в RECEIVER. По умолчнию предполагается что там записан пользователь из системы SAP, но вообще список довольно большой, пользовал или B - пользователь SAP или же U - что соответствует e-mail адресу Кстати из списка значений ясно что можно организовать рассылку списку адресатов из SAPoffice.
P Личный список адресатов
C Общий список адресатов
O Пользователь SAPoffice
B SAP-пользователь
U Адрес в Интернете
X X.400-адрес
R SAP-пользователь в другой SAP-системе
A Внешний адрес
F Номер факса
D X.500-адрес
L Номер телекса
H Организационная единица/Штатная должность
J SAP-объект
G Организационный объект/Ид.
EXPRESS - Полезная галочка, если нужно то по SAPoffice документ придет с отметкой экспресс, т.е. вывалится сообщение пользователю.

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

Код: You are not allowed to view links. Register or Login
  DATA: real_type LIKE soodk-objtp,
        document_data LIKE sodocchgi1,
        so_ali LIKE soli OCCURS 100 WITH HEADER LINE,
        rec_tab LIKE somlreci1 OCCURS 1 WITH HEADER LINE.

* Сначала получит данные спула, куда шел вывод.
  CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
       EXPORTING
            rqident              = SY-SPONO
            first_line           = '1'
            desired_type         = 'ALI'
       IMPORTING
            real_type            = real_type
       TABLES
            buffer               = so_ali
       EXCEPTIONS
            no_such_job          = 1
            job_contains_no_data = 2
            selection_empty      = 3
            no_permission        = 4
            can_not_access       = 5
            read_error           = 6
            type_no_match        = 7
            OTHERS               = 8.
  IF sy-subrc = 0.
    document_data-obj_langu = sy-langu.
    document_data-obj_name = 'Liste'(sls).
    document_data-obj_descr = sy-title.
    document_data-sensitivty = 'O'.

    MOVE: 'UUKRUL_SAP' TO rec_tab-receiver,
          'X'  TO rec_tab-express.
    APPEND rec_tab.

    CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
         EXPORTING
              document_data              = document_data
              document_type              = real_type
              put_in_outbox              = 'X'
         TABLES
              object_content             = so_ali
              receivers                  = rec_tab
         EXCEPTIONS
              too_many_receivers         = 1
              document_not_sent          = 2
              document_type_not_exist    = 3
              operation_no_authorization = 4
              parameter_error            = 5
              x_error                    = 6
              enqueue_error              = 7
              OTHERS                     = 8.
  ENDIF.

Для отправки на e-mail меняем тип получателя на 'U' задаем адрес и тип документа 'RAW', затем после отправки собственно всей почты требуется вызвать коммуникационную программу которая собственно говоря и сделает физическую отправку почты. Обычно админы данную программу планируют в фоне с периодичностью от часа до... сколько им там нужно, но никто ж нам не запрещает это дело подтолкнуть. Для этого требуется вызвать следующий код:

Код: You are not allowed to view links. Register or Login
    SUBMIT rsconn01 WITH mode = 'INT'
                    WITH output = 'X'
           TO SAP-SPOOL DESTINATION 'LOCL' IMMEDIATELY ' '
           KEEP IN SPOOL 'X' DATASET EXPIRATION 14
           WITHOUT SPOOL DYNPRO AND RETURN.

Вызывать только при отправке на адреса e-mail, для внутренних пользователей SAPoffice, это делать не нужно.

Оффлайн Skif

  • Jr. Member
  • **
  • Сообщений: 726
  • Репутация: +10/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
дошло что он rfc :)
неясно только что значит тип получателя "R" - если вызываешь как RFC, то пользователь-то уже локальный?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
неясно только что значит тип получателя "R" - если вызываешь как RFC, то пользователь-то уже локальный?
R - SAP-пользователь в другой SAP-системе... т.е. локальный для системы получателя.

Оффлайн Skif

  • Jr. Member
  • **
  • Сообщений: 726
  • Репутация: +10/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
R - SAP-пользователь в другой SAP-системе... т.е. локальный для системы получателя.
ну так модуль уже запускается в системе-получателе как rfc
фактически ему передаются только адресат и пакет, а исполняется уже всё там
те передать локальному (для destination) юзеру
если указать 'B'  то что-то разве изменится?...
впрочем может логику какую завязали на этом...

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
а также форматированный вывод
ошеннно красиво получается  ;D
You are not allowed to view links. Register or Login
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*& Report  ZTEST_SEND_MAIL_HTML
*&---------------------------------------------------------------------*
*& This report will show how to send the Formatted Emails using
*&   SAPConnect
*&---------------------------------------------------------------------*
REPORT  ztest_np_send_mail.

DATA:
t_objbin   TYPE STANDARD TABLE OF solisti1,   " Attachment data
t_objtxt   TYPE STANDARD TABLE OF solisti1,   " Message body
t_objpack  TYPE STANDARD TABLE OF sopcklsti1, " Packing list
t_reclist  TYPE STANDARD TABLE OF somlreci1,  " Receipient list
t_objhead  TYPE STANDARD TABLE OF solisti1.   " Header

DATA: wa_docdata TYPE sodocchgi1,   " Document data
      wa_objtxt  TYPE solisti1,     " Message body
      wa_objbin  TYPE solisti1,     " Attachment data
      wa_objpack TYPE sopcklsti1,   " Packing list
      wa_reclist TYPE somlreci1.    " Receipient list

DATA: w_tab_lines TYPE i.           " Table lines

* Selection Screen
PARAMETERS: p_email TYPE char120 obligatory
                VISIBLE LENGTH 40
                LOWER CASE.

* Start-of-selection
START-OF-SELECTION.

* Creating message
  PERFORM create_message.

* Sending Message
  PERFORM send_message.

*&---------------------------------------------------------------------*
*&      Form  create_message
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM create_message .

**1 Title, Description & Body
  PERFORM create_title_desc_body.

**2 Receivers
  PERFORM fill_receivers.

ENDFORM.                    " create_message

*&---------------------------------------------------------------------*
*&      Form  CREATE_TITLE_DESC_BODY
*&---------------------------------------------------------------------*
*       Title, Description and body
*----------------------------------------------------------------------*
FORM create_title_desc_body.

*...Title
  wa_docdata-obj_name  = 'Email notification'.

*...Description
  wa_docdata-obj_descr = 'Email body in HTML'.

*...Message Body in HMTL
  wa_objtxt-line = '<html> <body style="background-color:#FFE4C4;">'.
  APPEND wa_objtxt TO t_objtxt.

  wa_objtxt-line = '<p> List of Test materials </p>'.
  APPEND wa_objtxt TO t_objtxt.

*   table display
  wa_objtxt-line = '<table style="MARGIN: 10px" bordercolor="#90EE90" '.
  APPEND wa_objtxt TO t_objtxt.
  wa_objtxt-line = ' cellspacing="0" cellpadding="3" width="400"'.
  APPEND wa_objtxt TO t_objtxt.
  wa_objtxt-line = ' border="1"><tbody><tr>'.
  APPEND wa_objtxt TO t_objtxt.

*   table header
  wa_objtxt-line = '<th bgcolor="#90EE90">Material</th>'.
  APPEND wa_objtxt TO t_objtxt.
  wa_objtxt-line = '<th bgcolor="#90EE90">Description</th></tr>'.
  APPEND wa_objtxt TO t_objtxt.

*   table Contents
  DO 5 TIMES.
    wa_objtxt-line = '<tr style="background-color:#eeeeee;"><td>TEST</td>'.
    APPEND wa_objtxt TO t_objtxt.
    CONCATENATE '<td>' sy-abcde '</td> </tr>' INTO wa_objtxt-line.
    APPEND wa_objtxt TO t_objtxt.
  ENDDO.

*   table close
  wa_objtxt-line = '</tbody> </table>'.
  APPEND wa_objtxt TO t_objtxt.

*   Hyperlink
  wa_objtxt-line = '<br> <br>'.
  APPEND wa_objtxt TO t_objtxt.
  wa_objtxt-line = '<p><a href="http://help-abap.blogspot.com">'.
  APPEND wa_objtxt TO t_objtxt.
  wa_objtxt-line = 'Click here to check the latest post</a></p>'.
  APPEND wa_objtxt TO t_objtxt.

*   Signature with background color
  wa_objtxt-line = '<br><br>'.
  APPEND wa_objtxt TO t_objtxt.
  wa_objtxt-line = '<p> Regards,</p>'.
  APPEND wa_objtxt TO t_objtxt.
  wa_objtxt-line = '<p style="background-color:#1E90FF;"><b>Naimesh Patel</b></p>'.
  APPEND wa_objtxt TO t_objtxt.


*   HTML close
  wa_objtxt-line = '</body> </html> '.
  APPEND wa_objtxt TO t_objtxt.

* Document data
  DESCRIBE TABLE t_objtxt      LINES w_tab_lines.
  READ     TABLE t_objtxt      INTO wa_objtxt INDEX w_tab_lines.
  wa_docdata-doc_size =
      ( w_tab_lines - 1 ) * 255 + STRLEN( wa_objtxt ).

* Packing data
  CLEAR wa_objpack-transf_bin.
  wa_objpack-head_start = 1.
  wa_objpack-head_num   = 0.
  wa_objpack-body_start = 1.
  wa_objpack-body_num   = w_tab_lines.
*   we will pass the HTML, since we have created the message
*   body in the HTML
  wa_objpack-doc_type   = 'HTML'.
  APPEND wa_objpack TO t_objpack.

ENDFORM.                    " CREATE_TITLE_DESC_BODY

*&---------------------------------------------------------------------*
*&      Form  fill_receivers
*&---------------------------------------------------------------------*
*       Filling up the Receivers
*----------------------------------------------------------------------*
FORM fill_receivers .

  wa_reclist-receiver = p_email.
  wa_reclist-rec_type = 'U'.
  APPEND wa_reclist TO t_reclist.
  CLEAR  wa_reclist.


ENDFORM.                    " fill_receivers
*&---------------------------------------------------------------------*
*&      Form  send_message
*&---------------------------------------------------------------------*
*       Sending Mail
*----------------------------------------------------------------------*
FORM send_message .

* Send Message to external Internet ID
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = wa_docdata
      put_in_outbox              = 'X'
      commit_work                = 'X'     "used from rel.6.10
    TABLES
      packing_list               = t_objpack
      object_header              = t_objhead
      contents_txt               = t_objtxt
      receivers                  = t_reclist
    EXCEPTIONS
      too_many_receivers         = 1
      document_not_sent          = 2
      document_type_not_exist    = 3
      operation_no_authorization = 4
      parameter_error            = 5
      x_error                    = 6
      enqueue_error              = 7
      OTHERS                     = 8.

  IF sy-subrc NE 0.
    WRITE: 'Sending Failed'.
  ELSE.
    WRITE: 'Sending Successful'.
  ENDIF.


ENDFORM.                    " send_message

PS: Uukrul, подправил код на предмет заключения в скобки code /code
« Последнее редактирование: Октябрь 15, 2010, 11:41:19 am от Uukrul »

Оффлайн lestat

  • Newbie
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
А подскажите пожалуйста, как прикрепить к вложениям отправляемого письма файл XLS! Допустим файл сформировался - куда-нибудь сложился на комп и потом его сразу отправить?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
А подскажите пожалуйста, как прикрепить к вложениям отправляемого письма файл XLS! Допустим файл сформировался - куда-нибудь сложился на комп и потом его сразу отправить?
Ну тут есть вариант описания отправки сообщения с вложением, посмотри пример: You are not allowed to view links. Register or Login

Оффлайн lestat

  • Newbie
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Спасибо за пример! А этот пример отправляет на любую почту письма, в том числе и на внешнюю?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Спасибо за пример! А этот пример отправляет на любую почту письма, в том числе и на внешнюю?
Тип получателя наверное надо указать правильно. Ну и разрешения дложня быть на отправку почты на внешние адреса.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
А этот фм из примера вообще ничего не делает... коммит в конце раскоментил...
Не подскажешь как самое простое с помощью SO_NEW_DOCUMENT_SEND_API1 прилепить к вложениям XLS?
Так почему ты решил что ничего не делается? При отправке почты из SAP она не уходит сразу на указанный адрес. Сообщение попадет в очередь и в зависимости от настройки администраторами, физическая отправка происходит периодическим заданием или в ручном режиме запустить транзакцию SCOT и там выбрать режим "Запустить процесс отправки". Или вы это делали?

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Подскажите пожалуйста.
Пытаюсь Смартформу конвертнуть в ПДФ, приатачить к письму и отправить.
но при выполнении функции "SO_NEW_DOCUMENT_SEND_API1" получаю EXCEPTIONS x_error = 6
В чем может быть проблема?

Подставлял и U и R...

не могу понять в чем ошибка... :(
  itab_reclist-rec_type = 'R'. "U Internet address

Код: You are not allowed to view links. Register or Login
DATA: ls_output_data          TYPE ssfcrescl.
...
PERFORM send_emailnew TABLES ls_output_data-otfdata.
...
FORM send_emailnew TABLES p_otf.

* Definitions for emailing
DATA: itab_otf        TYPE TABLE OF itcoo WITH HEADER LINE,
      itab_lines      TYPE TABLE OF tline WITH HEADER LINE,
      itab_receivers  TYPE TABLE OF somlreci1 WITH HEADER LINE,
      itab_objpack    TYPE TABLE OF sopcklsti1 WITH HEADER LINE,
      itab_objtxt     TYPE TABLE OF solisti1 WITH HEADER LINE,
      itab_pdf        TYPE TABLE OF solisti1 WITH HEADER LINE,
      itab_reclist    TYPE TABLE OF somlreci1 WITH HEADER LINE,
*      l_return TYPE ssfcrescl,
      l_doc_chng      TYPE sodocchgi1,
      l_bin_size      LIKE sood-objlen,
      l_lines         TYPE i.
* Convert Smart Form output into PDF binary format
  itab_otf[] = p_otf[].

*  CALL FUNCTION 'CONVERT_OTF'
  CALL FUNCTION 'CONVERT_OTF_2_PDF'
*    EXPORTING
*      format                = 'PDF'
*      max_linewidth         = 132
    IMPORTING
      bin_filesize          = l_bin_size
    TABLES
      otf                   = itab_otf
      doctab_archive        = gt_docs
      lines                 = itab_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.

  REFRESH itab_pdf[].

  CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
    EXPORTING
      line_width_dst              = '255'
    TABLES
      content_in                  = itab_lines
      content_out                 = itab_pdf
    EXCEPTIONS
      err_line_width_src_too_long = 1
      err_line_width_dst_too_long = 2
      err_conv_failed             = 3
      OTHERS                      = 4.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CLEAR: l_doc_chng, itab_reclist, itab_objtxt, itab_objpack.
  REFRESH: itab_reclist, itab_objtxt, itab_objpack.

  l_doc_chng-obj_name   = sy-repid.
  l_doc_chng-obj_descr  = 'Test'.
  l_doc_chng-sensitivty = 'O'.

* Email body text
  itab_objtxt-line = 'Test'.
  APPEND itab_objtxt.

* Packing for body text.
  DESCRIBE TABLE itab_objtxt LINES l_lines.

 l_doc_chng-doc_size = ( l_lines - 1 ) * 255 + strlen( itab_objtxt ).

  CLEAR itab_objpack-transf_bin.
  itab_objpack-head_start = 1.
  itab_objpack-head_num   = 0.
  itab_objpack-body_start = 1.
  itab_objpack-body_num   = l_lines.
  itab_objpack-doc_type   = 'RAW'.
  itab_objpack-doc_size   = l_lines * 255.
  APPEND itab_objpack.

* Packing for PDF.
  DESCRIBE TABLE itab_pdf LINES l_lines.
  itab_objpack-transf_bin = 'X'.
  itab_objpack-head_start = 1.
  itab_objpack-head_num   = 1.
  itab_objpack-body_start = 1.
  itab_objpack-body_num   = l_lines.
  itab_objpack-doc_type   = 'PDF'.
  itab_objpack-obj_name   = 'Invoice'.
  CONCATENATE itab_objpack-obj_name '.pdf' INTO itab_objpack-obj_descr.
  itab_objpack-doc_size = l_lines * 255.
  APPEND itab_objpack.

* Email recipient list
  itab_reclist-rec_type = 'R'. "U Internet address
  itab_reclist-receiver = '****@***.com'.
  APPEND itab_reclist.

* Sending mail.
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
*  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
    EXPORTING
      document_data              = l_doc_chng
      put_in_outbox              = 'X'
      commit_work                = 'X'
    TABLES
      packing_list               = itab_objpack
      contents_bin               = itab_pdf
      contents_txt               = itab_objtxt
      receivers                  = itab_reclist
    EXCEPTIONS
      too_many_receivers         = 1
      document_not_sent          = 2
      document_type_not_exist    = 3
      operation_no_authorization = 4
      parameter_error            = 5
      x_error                    = 6
      enqueue_error              = 7
      OTHERS                     = 8.


ENDFORM.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Значит так,  R - это имя сап пользователя, а ты отправляешь на интернет почту, так что точно надо U ставить. Еще нужно узнать разрешена ли отправка сообщений за пределы системы, стандартно в системе отправка почты на E-mail закрыта.

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
Значит так,  R - это имя сап пользователя, а ты отправляешь на интернет почту, так что точно надо U ставить. Еще нужно узнать разрешена ли отправка сообщений за пределы системы, стандартно в системе отправка почты на E-mail закрыта.

Можете подсказать куда копать дабы открыть (что бы им подсказать) . а то они не знают и получается что неверно работает прога - то есть я крайний...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Можете подсказать куда копать дабы открыть (что бы им подсказать) . а то они не знают и получается что неверно работает прога - то есть я крайний...
Как сказали знакомые базисники, типа читать тут: You are not allowed to view links. Register or Login

или тут:

You are not allowed to view links. Register or Login

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Спасибо.
Как оказалось. доступ все же есть.
Ошибка возникает если добавить такой блок:

То есть пытаюсь приатачить ПДФ документ.

Код: You are not allowed to view links. Register or Login
* Packing for PDF.
  DESCRIBE TABLE itab_pdf LINES l_lines.
  itab_objpack-transf_bin = 'X'.
  itab_objpack-head_start = 1.
  itab_objpack-head_num   = 1.
  itab_objpack-body_start = 1.
  itab_objpack-body_num   = l_lines.
  itab_objpack-doc_type   = 'PDF'.
  itab_objpack-obj_name   = 'DocName'.
  CONCATENATE itab_objpack-obj_name '.pdf' INTO itab_objpack-obj_descr.
  itab_objpack-doc_size = l_lines * 255.
  APPEND itab_objpack.

может кто-то такое делал, как описывать этот блок?

по поводу itab_objpack-doc_type   = 'PDF'.
Перешел через домен "SO_OBJ_TP" поля doc_type в таблицу TSOTD (Допустимые типы объектов)
и там кода 'PDF' нет, может из-за этого? если да то как его туда добавить?


Закоментил строку "doc_type   = 'PDF'." получил сообщение с вложением  "Name_PDF.pdf.txt"
Прописал типа "doc_type   = 'RAW'". получил сообщение с вложением  "Name_PDF.pdf.txt"

правда как текст там иероглифы, а если убрать .txt и оставить "Name_PDF.pdf" то пишет, что ошибка в чтении...

%(
« Последнее редактирование: Декабрь 14, 2012, 02:06:39 pm от Sed0Y »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Перешел через домен "SO_OBJ_TP" поля doc_type в таблицу TSOTD (Допустимые типы объектов)
и там кода 'PDF' нет, может из-за этого? если да то как его туда добавить?
А остальные типа BIN или EXT тоже не подходят?

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Нет (
может

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Нет
Почитай еще тут: You are not allowed to view links. Register or Login

и тут типа пример программы вроде как есть:

You are not allowed to view links. Register or Login

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
что-то не получается, вроде бы даже готовые с сайта примеры подставлял все равно... :(

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Сделал настройки как по ссылке(рис smtp.jpg):

И также сделал второй вариант отправки email с вложением PDF через клас "cl_bcs"

И тоже самое - оба, если прописываю type = 'PDF' ДАМП,
если type = 'RAW' получаем тело письма(1) и само вложение в ПДФ(2) (рис outlook.jpg)
Тело письма нормально читаемое,
а вот само вложение иероглифы (рис nopdf.jpg)





Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
попробовал зайти на почту САП (тр SBWP) и там создать себе письмо и риатачить какой-то документ
в результате получил ошбку "Ошибка БД при <INSERT INTO KPRO> <>"
На продуктиве все ОК с этим, так может оно как-то связано?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
попробовал зайти на почту САП (тр SBWP) и там создать себе письмо и риатачить какой-то документ
в результате получил ошбку "Ошибка БД при <INSERT INTO KPRO> <>"
А еще одна система типа теста, где можно проверить под руками нет? Вполне может быть, что проблема с этим.

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
А еще одна система типа теста, где можно проверить под руками нет? Вполне может быть, что проблема с этим.
Спасибо.
Да, так и сделал.
Ошибка была(и есть пока что) в CRM, я перенес все наработки в ERP - и тут все отработало без ошибки.
Таки проблема базиса.
Если нужно могу тут выложить 1 готовый пример (есть 3 варианта реализации :) ).

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Если нужно могу тут выложить 1 готовый пример (есть 3 варианта реализации :) ).
Не только можно, но и нужно.. причем можно все три.. мало ли кому пригодится...

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
Не только можно, но и нужно.. причем можно все три.. мало ли кому пригодится...

позже (может уже в следующем году) выложу, нужно их подготовить - а то нет времени...

А пока такой вопрос, а как сделать, что бы письмо отправлялось от другого имени (которое будет постоянное)
к примеру [email protected], не меняя sy-uname?
« Последнее редактирование: Декабрь 18, 2012, 12:27:52 pm от Sed0Y »

Sapforum.Biz