• ABAP 邮件


    function zint_send_email.
    *"----------------------------------------------------------------------
    *"*"區域介面:
    *" IMPORTING
    *" VALUE(KTYPE) TYPE SO_OBJ_TP DEFAULT 'RAW'
    *" VALUE(SUBJECT) TYPE SO_OBJ_DES
    *" VALUE(TEXT) TYPE SOLI_TAB
    *" VALUE(SENDER_ADDRESS) TYPE AD_SMTPADR
    *" VALUE(SENDER_NAME) TYPE AD_SMTPADR OPTIONAL
    *" VALUE(ATTACHMENTS) TYPE RMPS_T_POST_CONTENT OPTIONAL
    *" VALUE(IMMEDIATELY) TYPE BOOLEAN OPTIONAL
    *" EXPORTING
    *" VALUE(E_RESULT) TYPE BOOLEAN
    *" TABLES
    *" T_RECIPIENT STRUCTURE UPS_YS_HR_CPERSON
    *" RETURN STRUCTURE BAPIRET2
    *"----------------------------------------------------------------------

    data:send_request type ref to cl_bcs,
    document type ref to cl_document_bcs,
    sender_id type ref to if_sender_bcs,
    fail type ref to cx_bcs,
    recipient type ref to if_recipient_bcs.

    data:w_return like bapiret2,
    w_rename type ad_smtpadr,
    w_attachment like line of attachments,
    w_attachment_subject type sood-objdes.

    *BREAK CP900.
    refresh return.
    clear e_result.
    e_result = 'X'.
    if ktype is initial.
    w_return-type = 'E'.
    w_return-message = '未指定文件類別代碼'.
    w_return-parameter = 'KTYPE'.
    append w_return to return.
    clear e_result.
    endif.

    if subject is initial.
    w_return-type = 'E'.
    w_return-message = '未指定郵件主題'.
    w_return-parameter = 'SUBJECT'.
    append w_return to return.
    clear e_result.
    endif.

    if text[] is initial.
    w_return-type = 'E'.
    w_return-message = '未指定郵件內容'.
    w_return-parameter = 'TEXT'.
    append w_return to return.
    clear e_result.
    endif.

    if sender_address is initial.
    w_return-type = 'E'.
    w_return-message = '未指定發送人郵件地址'.
    w_return-parameter = 'SENDER_ADDRESS'.
    append w_return to return.
    clear e_result.
    endif.
    if t_recipient[] is initial.
    w_return-type = 'E'.
    w_return-message = '未指定接收人郵件地址'.
    w_return-parameter = 'RECIPIENT'.
    append w_return to return.
    clear e_result.
    endif.

    clear w_return.

    check e_result is not initial.

    try.
    * 第一步: 创建发送请求
    send_request = cl_bcs=>create_persistent( ).

    * 第二步: 创建整理发送内容
    document = cl_document_bcs=>create_document(
    i_type = ktype
    i_text = text
    i_subject = subject ).
    * 增加附件內容
    loop at attachments into w_attachment.
    w_attachment_subject = w_attachment-subject.
    document->add_attachment(
    exporting
    i_attachment_type = w_attachment-objtp
    i_attachment_subject = w_attachment_subject
    i_att_content_hex = w_attachment-cont_hex ).
    endloop.
    * 第三步: 添加邮件内容到发送请求
    send_request->set_document( document ).

    * 第四步:設置發送人出件地址
    sender_id = cl_cam_address_bcs=>create_internet_address(
    i_address_string = sender_address
    i_address_name = sender_name ).
    send_request->set_sender( sender_id ).

    * 第五步: 接收者邮件地址转换
    loop at t_recipient where cperson ne '99999999'.
    w_rename = t_recipient-emnam.
    recipient = cl_cam_address_bcs=>create_internet_address(
    i_address_string = t_recipient-e_mail
    i_address_name = w_rename ).
    send_request->add_recipient( recipient ).
    endloop.

    loop at t_recipient where cperson eq '99999999'.
    w_rename = t_recipient-emnam.
    recipient = cl_cam_address_bcs=>create_internet_address(
    i_address_string = t_recipient-e_mail
    i_address_name = w_rename ).
    * SEND_REQUEST->ADD_RECIPIENT( RECIPIENT ).
    call method send_request->add_recipient
    exporting
    i_recipient = recipient
    i_copy = 'X'.
    endloop.

    * 第六步,設置狀態屬性
    send_request->set_status_attributes(
    i_requested_status = 'E'
    i_status_mail = 'E' ).
    send_request->set_send_immediately( immediately ).

    * 第七步: 正式发送并提交作业
    send_request->send( i_with_error_screen = 'X' ).
    commit work and wait.
    catch cx_bcs into fail.
    e_result = ''.
    w_return-type = 'E'.
    w_return-message = fail->get_text( ).
    append w_return to return.
    clear w_return.
    endtry.

    endfunction.

  • 相关阅读:
    检测一个对象方法是否存在
    非堵塞 延迟脚本 高性能
    移动开发 相关 备忘
    元素透明 渐变函数
    cookie
    media query 单位
    前端入门可参考《如何教会非计算机专业的女友写代码》
    JQ判断复选框是否选中
    聊天记录
    JS获取文本值
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6274439.html
Copyright © 2020-2023  润新知