Текущее время: Пт, апр 26 2024, 13:22

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Использование cl_bcs, cl_document_bcs
СообщениеДобавлено: Вт, фев 10 2015, 15:13 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Здравствуйте уважаемые!
В своих вокругбивишных поделках на ABAPе использую класс cl_document_bcs.
Не могу решить две проблемы:

1. Тема (subject) имеет длину 50 символов. Хотелось бы побольше, есть поле LONG_SUBJECT типа string, но оно защищённое, и метод SET_SUBJECT_LONG -- защищённый.
2. Не получается добавить пару строчек в заголовок письма (header), не получается, причём, не у меня одного:
http://scn.sap.com/thread/3275694
http://scn.sap.com/thread/1547213
Я увидел параметр в конструкторе, но это тоже на результат никак не влияет:
Code:
        document = cl_document_bcs=>create_document(
                            i_type    = 'RAW'
                            i_text    = lt_mailtext
                            i_length  = textlength
                            i_header  = l_header[]
                            i_subject = mailheader
                            ).       "#EC *

Помогите пожалуйста разобраться! Важно: первая проблема не является критичной, а вот на второй я застопорился.
Спасибо заранее.

_________________
Глаза боятся, а руки крюки


Последний раз редактировалось G Вт, фев 10 2015, 20:05, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование cl_bcs, cl_document_bcs
СообщениеДобавлено: Вт, фев 10 2015, 15:26 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 475
1)
Code:

data: send_request       type ref to cl_bcs.
send_request = cl_bcs=>create_persistent( ).

        document = cl_document_bcs=>create_document(
          i_type    = 'HTM'
          i_text    = main_text
          i_subject = l_subject_short ).                    "#EC NOTEXT

        send_request->SET_MESSAGE_SUBJECT( lvf_subject_str ). " более 50 символом можно


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование cl_bcs, cl_document_bcs
СообщениеДобавлено: Вт, фев 10 2015, 15:31 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 475
2) - цель можно поподробнее?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование cl_bcs, cl_document_bcs
СообщениеДобавлено: Вт, фев 10 2015, 16:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Спасибо за ответы!

1) Не получается, отладчик показывает, что заголовок записывается во внутреннее поле message_subject объекта send_request, но отправка происходит с темой, заданной при создании документа. Пробовал ставить при создании тему пустой -- остаётся пустой. Может код выслать?

2) Цель -- это добавить в заголовок две строчки, точно такие же как во втором примере, напоминание в заголовок письма:
Code:
X-Message-Flag: Follow up
Reply-By: Mon, 30 Nov 2009 12:45:00 +0100

У меня попытка выглядела так (заполнение таблички для примера выше):
Code:
data: l_header TYPE SOLI_TAB WITH HEADER LINE.
        ...
        l_header = 'X-Message-Flag: =?koi8-r?Q?=EB_=C9=D3=D0=CF=CC=CE=C5=CE=C9=C0?='.
        append l_header.
        l_header = 'Reply-By: Fri, 6 Feb 2015 20:15:00 +0300'.
        append l_header.

_________________
Глаза боятся, а руки крюки


Последний раз редактировалось G Вт, фев 10 2015, 20:01, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование cl_bcs, cl_document_bcs
СообщениеДобавлено: Вт, фев 10 2015, 19:13 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 475
1) код нужен - да.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование cl_bcs, cl_document_bcs
СообщениеДобавлено: Вт, фев 10 2015, 19:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Code:
    TRY.
* Create persistent send request
        send_request = cl_bcs=>create_persistent( ).
* Create document
        DESCRIBE TABLE lt_mailtext LINES num_rows.
        num_rows = num_rows * 255.
        MOVE num_rows TO textlength.

          lv_saved_langu = sy-langu.
          SET LANGUAGE <fs_reciver>-langu.
          CONCATENATE  text-003 lv_sessiontext INTO mailheader SEPARATED BY space.
          SET LANGUAGE lv_saved_langu.

        l_header = 'X-Message-Flag: =?koi8-r?Q?=EB_=C9=D3=D0=CF=CC=CE=C5=CE=C9=C0?='.
        append l_header.
        l_header = 'Reply-By: Fri, 6 Feb 2015 20:15:00 +0300'.
        append l_header.

        document = cl_document_bcs=>create_document(
                            i_type    = 'RAW'
                            i_text    = lt_mailtext
                            i_length  = textlength
*                            i_header  = l_header[]
                            i_subject = mailheader
                            ).       "#EC *

* Add document to send request
        CALL METHOD send_request->set_document( document ).

        l_subject_long = '1234567890abcdefghijабвгдежзик1234567890abcdefghijабвгдежзик1234567890abcdefghijабвгдежзик' .

        send_request->SET_MESSAGE_SUBJECT( l_subject_long ).
* Get sender object
        sender_object = cl_sapuser_bcs=>create( sy-uname ).

* Add sender
        CALL METHOD send_request->set_sender
          EXPORTING
            i_sender = sender_object.

        DATA: lt_adress TYPE TABLE OF adr6-smtp_addr.
        DATA: c_address TYPE adr6-smtp_addr.

        MOVE e_email TO c_address.
        SPLIT c_address AT ';' INTO TABLE lt_adress.
        LOOP AT lt_adress INTO c_address.
          recipient = cl_cam_address_bcs=>create_internet_address(
                                                    c_address ).

* Add recipient with its respective attributes to send request
          CALL METHOD send_request->add_recipient
            EXPORTING
              i_recipient  = recipient
              i_express    = ' '
              i_copy       = ' '
              i_blind_copy = ' '.
        ENDLOOP.

* Request only error receipts " 31B25 PN
*       (STS disseminates usually a lot of mails and the sender is usually
*        not interested in read receipt, which is set by default)
        send_request->set_status_attributes( 'E' ).

* Send document
        result =  send_request->send( ).

      CATCH cx_bcs INTO bcs_exception.
        IF messages IS NOT INITIAL.
          messages->add_message( condition = 'mail' message = 'Fehler beim Versenden der Mail aufgetreten' ). "#EC NOTEXT
          e_result = -500. " ошибка при отправке или формировании письма

        ENDIF.
    ENDTRY.
    COMMIT WORK.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование cl_bcs, cl_document_bcs
СообщениеДобавлено: Чт, апр 21 2016, 13:18 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, апр 30 2008, 07:46
Сообщения: 52
Пол: Мужской
Добрый день!

Коллеги, кто-нибудь пытался добавить к письму, создаваемому через CL_DOCUMENT_BCS, создать вложение через методы ADD_ATTACHMENT или ADD_DOCUMENT_AS_ATTACHMENT ?

В сети есть несколько примеров, в которых файл экселя полностью генерируется абап-кодом, что имхо является ахинеей - однозначно нужно иметь возможность считать шаблон из репозитория (OAER или SMW0), и затем по меткам вставлять данные, как это обычно делается во всех инструментах по выгрузке.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование cl_bcs, cl_document_bcs
СообщениеДобавлено: Пт, май 13 2016, 20:45 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
htk_s написал:
В сети есть несколько примеров, в которых файл экселя полностью генерируется абап-кодом, что имхо является ахинеей - однозначно нужно иметь возможность считать шаблон из репозитория (OAER или SMW0), и затем по меткам вставлять данные, как это обычно делается во всех инструментах по выгрузке.

Примеры обычно показывают самый простой способ применения, поэтому используется упрощенный код. Естественно, пример должен быть "доработан напильником" для применения в конкретбой программе. Это как бы не очень сложная задача IMHO если понимать, что приаттачить можно любые двоичные (binary) даные. Как вы эти двоичные данные получите - это уже к данному классу не имеет никакого отношения.

Например, вот фрагмент простой программы, которая читает файлы (все равно какие) с application server и приаттачивает их к email:

Code:
DATA:  lv_xstring TYPE xstring,
      itab_solix LIKE STANDARD TABLE OF solix.

        OPEN DATASET lv_pathname FOR INPUT IN BINARY MODE.
        READ DATASET lv_pathname INTO lv_xstring.
        CLOSE DATASET lv_pathname.
<...>
    CALL METHOD cl_document_bcs=>xstring_to_solix
      EXPORTING
        ip_xstring = lv_xstring
      RECEIVING
        rt_solix   = itab_solix[].
<...>
        size = XSTRLEN( lv_xstring ).
        document->add_attachment(
          i_attachment_type    = itab_dir-extension
          i_attachment_subject = lv_subject
          i_attachment_size    = size
          i_att_content_hex    = itab_solix ).


Здесь OPEN DATASET можно заменить на что-то другое, это совершенно не важно как вы прочитаете данные. Вам просто надо их запихнуть в подходящий формат.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


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

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


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

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


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

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