zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    剑气之争,聊聊算法岗位的门户之见!
    80%学生的困惑,学完C/C++之后学什么?
    算法工程师日常,训练的模型翻车了怎么办?
    迭代器设计模式,帮你大幅提升Python性能
    十年编程经验总结,三点技巧帮你提升代码能力!
    CenterNet:Corner-Center三元关键点,检测性能全面提升 | ICCV 2019
    CornerNet:经典keypoint-based方法,通过定位角点进行目标检测 | ECCV2018
    阿里面试:MySQL如何设计索引更高效?
    大厂是怎么进行SQL调优的?
    程序人生|从网瘾少年到微软、BAT、字节offer收割机逆袭之路
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6274439.html
Copyright © 2011-2022 走看看