SAP ABAP 发邮件方法(OO)

*&---------------------------------------------------------------------*
*& Report  ZSENDEMAIL08
*&
*&---------------------------------------------------------------------*

REPORT  zsendemail08.

CONSTANTS:
  gc_tab  TYPE c VALUE cl_bcs_convert=>gc_tab,  "CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
  gc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf. "CL_ABAP_CHAR_UTILITIES=>CR_LF

PARAMETERS mailto TYPE ad_smtpadr DEFAULT 'justin.ding@usisz.com.cn'收件人

DATA send_request   TYPE REF TO cl_bcs.
DATA document       TYPE REF TO cl_document_bcs.
DATA recipient      TYPE REF TO if_recipient_bcs.
DATA bcs_exception  TYPE REF TO cx_bcs.

DATA main_text      TYPE bcsy_text.
DATA binary_content TYPE solix_tab.
DATA size           TYPE so_obj_len.
DATA sent_to_all    TYPE os_boolean.


START-OF-SELECTION.

  PERFORM create_content.
  PERFORM send.

*&---------------------------------------------------------------------*
*&      Form  create_content
*&---------------------------------------------------------------------*
Create Example Content
1) Write example text into string
2) convert this string to solix_tab
*----------------------------------------------------------------------*
FORM create_content.

  DATA lv_string TYPE string.
  DATA ls_t100   TYPE t100.

--------------------------------------------------------------
as example content we use some system messages out of t100
get them for all installed languages from db
and write one line for each language into the spread sheet
columns are separated by TAB and each line ends with CRLF

  CONCATENATE 'This Is Just Example Text!'
              gc_crlf gc_crlf
              INTO lv_string.

  DO 10 TIMES.
    CONCATENATE lv_string
                '1111111111111111111111111111111111111111111111111111111111111' gc_tab
                '2222222222222222222222222222222222222222222222222222222222222' gc_tab
                '3333333333333333333333333333333333333333333333333333333333333' gc_tab
                'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' gc_tab
                'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' gc_tab
                'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' gc_tab
                'ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd' gc_tab
                'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' gc_tab
                'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff' gc_tab
                'ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg' gc_tab
                'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh' gc_tab
                'iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii' gc_tab
                'jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj' gc_tab
                'kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk' gc_crlf
                INTO lv_string.
  ENDDO.
--------------------------------------------------------------
convert the text string into UTF-16LE binary data including
byte-order-mark. Mircosoft Excel prefers these settings
all this is done by new class cl_bcs_convert (see note 1151257)

  TRY.
      cl_bcs_convert=>string_to_solix(
        EXPORTING
          iv_string   lv_string
          iv_codepage '4103'  "suitable for MS Excel, leave empty
          iv_add_bom  'X'     "for other doc types
        IMPORTING
          et_solix  binary_content
          ev_size   size ).
    CATCH cx_bcs.
      MESSAGE e445(so).
  ENDTRY.

ENDFORM                   "create_content

*---------------------------------------------------------------
NOTES:
*---------------------------------------------------------------
UTF-16LE including the BOM (Byte order mark)
is preferred by Microsoft Excel. If you want to create
other binary content you may choose another codepage (e.g.
'4110' (UTF-8) which is standard for e-mails).
Find SAP codepage names in the drop down list
for the codepage setting of node SMTP in transaction SCOT.
Or: leave iv_codepage and iv_add_bom empty. Then the target
codepage is set according to SAPconnect settings
*
Important:
SAP neither guarantees that the attachment created
by this report can be opened by all Excel Versions nor
that it can be opened by any 3rd party software at all

*&---------------------------------------------------------------------*
*&      Form  send
*&---------------------------------------------------------------------*
FORM send.

  TRY.

    -------- create persistent send request ------------------------
      send_request cl_bcs=>create_persistent( ).

    -------- create and set document with attachment ---------------
    create document object from internal table with text
      APPEND 'Hello world!' TO main_text.                   邮件内容
      document cl_document_bcs=>create_document(
        i_type    'RAW'
        i_text    main_text
        i_subject 'Test Created By BCS_EXAMPLE_7' ).      邮件主题名

    add the spread sheet as attachment to document object
      document->add_attachment(
        i_attachment_type    'xls'                        附件格式
        i_attachment_subject 'ExampleSpreadSheet'         attachment name
        i_attachment_size    size                         "附件大小
        i_att_content_hex    binary_content ).            "附件内容

    add document object to send request
      send_request->set_document( document ).

    --------- add recipient (e-mail address) -----------------------
    create recipient object
      recipient cl_cam_address_bcs=>create_internet_address( mailto ).

    add recipient object to send request
      send_request->add_recipient( recipient ).

    ---------- send document ---------------------------------------
      sent_to_all send_request->send( i_with_error_screen 'X' ).

      COMMIT WORK.
      WAIT UP TO 2 SECONDS.
      SUBMIT rsconn01 WITH mode 'INT'
                    WITH output 'X'
                    AND RETURN.
      IF sent_to_all IS INITIAL.
        MESSAGE i500(sbcoms) WITH mailto.
      ELSE.
        MESSAGE s022(so).
      ENDIF.
  ------------ exception handling ----------------------------------
  replace this rudimentary exception handling with your own one !!!
    CATCH cx_bcs INTO bcs_exception.
      MESSAGE i865(so) WITH bcs_exception->error_type.
  ENDTRY.

ENDFORM                   "send


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值