REPORT z_email_abap_report.
*---------------------------------------------------------------------*
* E-mail an Abap report *
*---------------------------------------------------------------------*
* Author : Michel PIOUD *
* Email : mpioud@yahoo.fr HomePage : http://www.geocities.com/mpioud *
*---------------------------------------------------------------------*
DATA : w_name TYPE sos04-l_adr_name.
SELECT-OPTIONS :
* Recipient address
s_name FOR w_name DEFAULT sy-uname NO INTERVALS.
*---------------------------------------------------------------------*
START-OF-SELECTION.
* E-mail Abap report
PERFORM f_send_mail.
*---------------------------------------------------------------------*
* Form f_send_mail
*---------------------------------------------------------------------*
FORM f_send_mail.
* Data Declaration
DATA:
l_datum(10),
ls_docdata TYPE sodocchgi1,
lt_objpack TYPE TABLE OF sopcklsti1 WITH HEADER LINE,
lt_objhead TYPE TABLE OF solisti1 WITH HEADER LINE,
lt_objtxt TYPE TABLE OF solisti1 WITH HEADER LINE,
lt_objbin TYPE TABLE OF solisti1 WITH HEADER LINE,
lt_reclist TYPE TABLE OF somlreci1 WITH HEADER LINE,
lt_listobject TYPE TABLE OF abaplist WITH HEADER LINE,
l_tab_lines TYPE i,
l_att_type LIKE soodk-objtp.
WRITE sy-datum TO l_datum.
* List of Users According to Logon Date and Password Change
* NOTE: Create ALI/OTF Document in Spool
SUBMIT rsusr200 WITH valid = 'X'
WITH notvalid = space
WITH unlocked = 'X'
WITH locked = space
EXPORTING LIST TO MEMORY AND RETURN.
* Read list from memory into table
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = lt_listobject
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Error in function module &1
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'LIST_FROM_MEMORY'.
ENDIF.
* Because listobject is of size RAW(1000)
* and objbin is of size CHAR(255) we make this table copy
CALL FUNCTION 'TABLE_COMPRESS'
TABLES
in = lt_listobject
out = lt_objbin
EXCEPTIONS
compress_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Error in function module &1
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'TABLE_COMPRESS'.
ENDIF.
* NOTE: Creation of attachment is finished yet.
* For your report, the attachment should be placed into table
* objtxt for plain text or
* objbin for binary content.
* Now create the message and send the document.
* Create Message Body
* Title and Description
ls_docdata-obj_name = 'USERS_LIST'.
CONCATENATE 'List of Users' sy-sysid '-' l_datum "#EC *
INTO ls_docdata-obj_descr SEPARATED BY space.
* Main Text
lt_objtxt = 'List of Users According to Logon Date' &
' and Password Change'. "#EC *
APPEND lt_objtxt.
* Write Packing List (Main)
DESCRIBE TABLE lt_objtxt LINES l_tab_lines.
READ TABLE lt_objtxt INDEX l_tab_lines.
ls_docdata-doc_size = ( l_tab_lines - 1 ) * 255 + STRLEN( lt_objtxt ).
CLEAR lt_objpack-transf_bin.
lt_objpack-head_start = 1.
lt_objpack-head_num = 0.
lt_objpack-body_start = 1.
lt_objpack-body_num = l_tab_lines.
lt_objpack-doc_type = 'RAW'.
APPEND lt_objpack.
* Create Message Attachment
* Write Packing List (Attachment)
l_att_type = 'ALI'.
DESCRIBE TABLE lt_objbin LINES l_tab_lines.
READ TABLE lt_objbin INDEX l_tab_lines.
lt_objpack-doc_size = ( l_tab_lines - 1 ) * 255 + STRLEN( lt_objbin ).
lt_objpack-transf_bin = 'X'.
lt_objpack-head_start = 1.
lt_objpack-head_num = 0.
lt_objpack-body_start = 1.
lt_objpack-body_num = l_tab_lines.
lt_objpack-doc_type = l_att_type.
lt_objpack-obj_name = 'ATTACHMENT'.
lt_objpack-obj_descr = 'List_of_Users'. "#EC *
APPEND lt_objpack.
* Create receiver list
LOOP AT s_name.
lt_reclist-receiver = s_name-low.
lt_reclist-rec_type = 'B'.
APPEND lt_reclist.
ENDLOOP.
* Send Message
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = ls_docdata
put_in_outbox = ''
TABLES
packing_list = lt_objpack
object_header = lt_objhead
contents_bin = lt_objbin
contents_txt = lt_objtxt
receivers = lt_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc = 0.
* Document sent
MESSAGE ID 'SO' TYPE 'S' NUMBER '022'.
ELSE.
* Document <&> could not be sent
MESSAGE ID 'SO' TYPE 'S' NUMBER '023'
WITH ls_docdata-obj_name.
ENDIF.
ENDFORM. " F_SEND_MAIL
***************** END OF PROGRAM Z_EMAIL_ABAP_REPORT ******************
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
67 | REPORT z_alv_smartforms [2] | 노름마치 | 2007.11.05 | 4210 |
66 | REPORT z_alv_rsusr200 [1] | 노름마치 | 2007.11.05 | 4287 |
65 | ref 소스 [4] | 풍운사랑 | 2007.09.07 | 4308 |
» | REPORT z_email_abap_report [1] | 노름마치 | 2007.11.05 | 4377 |
63 | REPORT z_list_user_profiles [1] | 노름마치 | 2007.11.05 | 4459 |
62 | REPORT z_alv_standard_text [1] | 노름마치 | 2007.11.05 | 4492 |
61 | REPORT z_password [1] | 노름마치 | 2007.11.05 | 4520 |
60 | REPORT z_dbbrowser [2] | 노름마치 | 2007.11.05 | 4574 |
59 | BDC 샘플소스(UPLODATE DATA) [7] | sapjoy | 2007.03.26 | 4615 |
58 | ALV Grid 코드 샘플 [10] | sapjoy | 2007.03.26 | 4676 |
57 | REPORT z_mychat [1] | 노름마치 | 2007.11.05 | 4745 |
56 | REPORT z_alv_cdhdr_cdpos [1] | 노름마치 | 2007.11.05 | 4802 |
55 | REPORT z_exec_program [4] | 노름마치 | 2007.11.12 | 4904 |
54 | REPORT z_downup_table [1] | 노름마치 | 2007.11.05 | 4957 |
53 | SELECT-OPTIONS 문법 [5] | sapjoy | 2006.12.28 | 4968 |
52 | 모든 사용자의 화면에 메세지를 보내는 소스 [4] | 아밥공주 | 2007.04.02 | 5004 |
51 | internal table to an XML file [4] | BlackBean | 2007.06.04 | 5040 |
50 | REPORT z_se16 [2] | 노름마치 | 2007.11.05 | 5042 |
49 | REPORT z_memory_game [1] | 노름마치 | 2007.11.05 | 5200 |
48 | 웹 연동시키기 [2] | 아밥공주 | 2007.04.02 | 5282 |
유용하게 사용하겠습니다. 감사합니다^^