ABAP OO EMAIL
来源:互联网 发布:宁波淘宝客服招聘 编辑:程序博客网 时间:2024/05/30 20:08
REPORT zssp_zens_0010_er6444.
TYPE-POOLS: icon.
TABLES:zemail_address.
DATA: i_bodys TYPE TABLE OF ztarget_val_log WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
PARAMETERS: p_tname TYPE zemail_address-tabname DEFAULT 'ZTARGET_VAL_LOG'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
DATA: lr_mail_data TYPE REF TO cl_crm_email_data,
lv_send_request TYPE sysuuid_x.
CLEAR: i_bodys,i_bodys[].
SELECT *
INTO CORRESPONDING FIELDS OF TABLE i_bodys
FROM ztarget_val_log
WHERE xflag = ''.
IF NOT i_bodys[] IS INITIAL.
CREATE OBJECT lr_mail_data.
PERFORM frm_bulid_oo_to TABLES lr_mail_data->to.
PERFORM frm_bulid_oo_from CHANGING lr_mail_data->from.
PERFORM frm_build_oo_body TABLES lr_mail_data->body.
PERFORM frm_build_oo_attachment TABLES lr_mail_data->body.
"the subject of this email
lr_mail_data->subject = text-m01.
"send this email out
lv_send_request = cl_crm_email_utility_base=>send_email( iv_mail_data = lr_mail_data ).
IF NOT lv_send_request IS INITIAL.
SKIP 1.
WRITE AT: /1 lv_send_request.
WRITE AT: /5 text-m02.
WRITE icon_mail AS ICON.
WRITE: sy-uline.
"try to lock the table till success
DO.
CALL FUNCTION 'ENQUEUE_EZTARGET_VAL_LOG'
EXPORTING
mode_ztarget_val_log = 'X'
mandt = sy-mandt
_scope = '2'
_wait = ' '
_collect = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc = 0.
EXIT.
ENDIF.
ENDDO.
"modify flag for the data has been sent out right now
MODIFY ztarget_val_log FROM TABLE i_bodys.
IF sy-subrc = 0.
COMMIT WORK.
ELSE.
FORMAT COLOR COL_NEGATIVE ON.
SKIP 1.
WRITE AT: /1 text-m03.
WRITE icon_message_critical_small AS ICON.
FORMAT COLOR OFF.
WRITE: sy-uline.
STOP.
ENDIF.
"unlock this table
CALL FUNCTION 'DEQUEUE_EZTARGET_VAL_LOG'
EXPORTING
mode_ztarget_val_log = 'X'
mandt = sy-mandt
_scope = '3'
_synchron = ' '
_collect = ' '.
ELSE.
FORMAT COLOR COL_NEGATIVE ON.
SKIP 1.
WRITE AT: /1 text-m04.
WRITE icon_message_critical_small AS ICON.
FORMAT COLOR OFF.
WRITE: sy-uline.
STOP.
ENDIF.
ELSE.
SKIP 1.
WRITE AT: /1 text-m05.
WRITE icon_message_information_small AS ICON.
WRITE: sy-uline.
STOP.
ENDIF.
*&---------------------------------------------------------------------*
*& Form frm_bulid_oo_to
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LI_TO text
*----------------------------------------------------------------------*
FORM frm_bulid_oo_to TABLES li_to TYPE crmt_email_recipients.
DATA: lw_to TYPE LINE OF crmt_email_recipients,
li_email TYPE TABLE OF zemail_address WITH HEADER LINE.
DATA: lv_flag.
"get email address from table zemail_address
CLEAR: li_email,li_email[],li_to[],lw_to.
SELECT * INTO TABLE li_email FROM zemail_address WHERE tabname = p_tname.
LOOP AT li_email.
CLEAR: lv_flag.
"check if the email is illegal
PERFORM frm_regex_check USING '/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*' li_email-email lv_flag.
IF lv_flag EQ 'X'.
"to reveiver list
CLEAR lw_to.
lw_to-address = li_email-email.
lw_to-name = li_email-email.
APPEND lw_to TO li_to.
ELSE.
SKIP 1.
WRITE AT: /1 li_email-email.
WRITE AT: /5 text-m06.
WRITE icon_message_warning_small AS ICON.
WRITE: sy-uline.
ENDIF.
ENDLOOP.
"if the mail to box is empty, stop the process!
IF li_to[] IS INITIAL.
FORMAT COLOR COL_NEGATIVE ON.
SKIP 1.
WRITE AT: /1 text-m07.
WRITE icon_message_critical_small AS ICON.
FORMAT COLOR OFF.
WRITE: sy-uline.
STOP.
ENDIF.
ENDFORM. "frm_bulid_oo_to
*&---------------------------------------------------------------------*
*& Form frm_bulid_oo_from
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LI_FROM text
*----------------------------------------------------------------------*
FORM frm_bulid_oo_from CHANGING li_from TYPE crms_email_recipient.
"Now the send box is empty
ENDFORM. "frm_bulid_oo_from
*&---------------------------------------------------------------------*
*& Form build_attachment
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PTAB_BODY text
* -->P_ATTACH text
*----------------------------------------------------------------------*
FORM frm_build_oo_attachment TABLES li_body TYPE crmt_email_mime_struc.
DATA: lw_body TYPE crms_email_mime_struc.
lw_body-is_attachment = 'X'.
* MOVE 'text/html' TO lw_body-mime_type.
* MOVE 'application/vnd.ms-excel' TO lw_body-mime_type.
MOVE 'text/csv' TO lw_body-mime_type.
CONCATENATE 'Contract target value calculation log_' sy-datum '_' sy-uzeit '.csv' INTO lw_body-file_name.
DEFINE fill.
concatenate lw_body-content_ascii '"' &1 '"' ',' into lw_body-content_ascii.
concatenate lw_body-content_ascii '"' &2 '"' ',' into lw_body-content_ascii.
concatenate lw_body-content_ascii '"' &3 '"' ',' into lw_body-content_ascii.
concatenate lw_body-content_ascii '"' &4 '"' ',' into lw_body-content_ascii.
concatenate lw_body-content_ascii '"' &5 '"' ',' into lw_body-content_ascii.
concatenate lw_body-content_ascii '"' &6 '"' ',' into lw_body-content_ascii.
concatenate lw_body-content_ascii '"' &7 '"' ',' into lw_body-content_ascii.
concatenate lw_body-content_ascii '"' &8 '"' ',' into lw_body-content_ascii.
concatenate lw_body-content_ascii cl_abap_char_utilities=>cr_lf into lw_body-content_ascii.
END-OF-DEFINITION.
"fill attachment
fill: 'Contract Number' 'Date' 'Time' 'Counter' 'Message type' 'Message class' 'Message' 'User name'.
LOOP AT i_bodys.
fill: i_bodys-ebeln i_bodys-datum i_bodys-uzeit i_bodys-msgcounter i_bodys-msgtype i_bodys-msgid i_bodys-message i_bodys-uname.
"set flag = 'X'
i_bodys-xflag = 'X'.
MODIFY i_bodys TRANSPORTING xflag.
ENDLOOP.
APPEND lw_body TO li_body.
ENDFORM. "build_attachment
*&---------------------------------------------------------------------*
*& Form frm_build_oo_body
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PTAB_BODY text
*----------------------------------------------------------------------*
FORM frm_build_oo_body TABLES li_body TYPE crmt_email_mime_struc.
DATA: lw_body TYPE crms_email_mime_struc.
MOVE 'text/html' TO lw_body-mime_type.
MOVE 'body.htm' TO lw_body-file_name.
DEFINE body.
concatenate lw_body-content_ascii &1 &2 into lw_body-content_ascii.
END-OF-DEFINITION.
body: '<body bgcolor="#C0C0C0">' cl_abap_char_utilities=>cr_lf,
'<p>Hi all,</p>' cl_abap_char_utilities=>cr_lf,
'<p>Attached is the file for Contract target value calculation error log.</p>' cl_abap_char_utilities=>cr_lf,
'<p>Thank you.</p>' cl_abap_char_utilities=>cr_lf,
'</body>' ''.
APPEND lw_body TO li_body.
ENDFORM. "frm_build_oo_body
*&---------------------------------------------------------------------*
*& Form frm_regex_check
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->REGEX text
* -->OBJ text
* -->RE text
*----------------------------------------------------------------------*
FORM frm_regex_check USING regex obj re.
DATA lc_matcher TYPE REF TO cl_abap_matcher.
lc_matcher = cl_abap_matcher=>create( pattern = regex
ignore_case = 'X'
text = obj ).
re = lc_matcher->match( ).
ENDFORM. "frm_regex_check
- ABAP OO EMAIL
- 【ABAP】ABAP OO使用总结
- ABAP OO笔记1
- ABAP OO笔记2
- ABAP OO Control
- ABAP OO的基本概念
- ABAP OO INHERITANCE & POLYMORPHISM
- ABAP OO EXCEPTION
- ABAP OO小例子
- ABAP OO编程(一)
- ABAP OO(二)
- ABAP OO(三)
- abap oo 语法
- SAP ABAP OO Event
- ABAP(Object Orientation) OO
- abap oo alv
- Abap OO and .Net OO [1]
- Send email in ABAP
- 井底之蛙
- Windows CE 5.0 Product Update Rollup, December 31, 2009
- 11月29日 工作总结(ASP.NET代码收藏)
- 小波对比
- 11月29日 工作总结(ASP.NET代码收藏)
- ABAP OO EMAIL
- cmd切换路径
- 拷贝对屏幕图象捕获的文章
- Visual Studio 2008(C#)XML注释提取成帮助文档的方法
- ASP.NET MVC框架(第一部分)
- 免费的C++ IDE: Visual C++ 2005 Express
- Apriori算法的Python实现!
- poj 1042
- CheckBoxLixt 初始化 赋值