‎2008 May 08 7:52 AM
hi
actualy i have a document and i want to send it to sombody inbox through email in sap-abap.
i need step by step creation of email through abap
‎2008 May 08 7:55 AM
‎2008 May 08 10:55 AM
Hi Pankaj,
Welcome To SDN!!
Check these links.
http://www.geocities.com/mpioud/Z_EMAIL_ABAP_REPORT.html
http://www.thespot4sap.com/Articles/SAP_Mail_SO_Object_Send.asp
http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm
Sending mail in background or spool mail
http://www.sap-basis-abap.com/sapac018.htm
Check these for SCOT configuration.
Check the following link:-
/people/thomas.jung3/blog/2004/09/08/sending-e-mail-from-abap--version-610-and-higher--bcs-interface
http://help.sap.com/saphelp_nw04/helpdata/en/2b/d925bf4b8a11d1894c0000e8323c4f/frameset.htm
Regards
Kiran Sure
‎2008 May 09 7:19 AM
hi,
check this program, this program upload the file in 'BIN' binary form from presentation server into internal table and convert data in word formate and send as a mail to our inbox
Code
REPORT ztest_upload_worddata.
----
PROGRAM : ztest_upload_worddata *
PROGRAM TITLE : SALES ORDER REPORT *
AREA : SD *
AUTHOR : *
CREATED ON : 08/04/2008 *
OBJECT TYPE : abap object Report
*
----
DESCRIPTION : This report describes how to send a mail in "WORD
DOCUMENT" by uploading file from PRESENTATION
SERVER using GUI-UPLOAD.
************************************************************************
*Tables *
************************************************************************
TABLES: vbak.
************************************************************************
Internal-tables *
************************************************************************
DATA: BEGIN OF it_vbak OCCURS 0,
vbeln TYPE vbeln,
erdat TYPE erdat,
ernam TYPE ernam,
END OF it_vbak.
*DATA: it_vbak TYPE TABLE OF st_vbak WITH HEADER LINE.
************************************************************************
Variables *
************************************************************************
DATA: p_filename_str TYPE string.
PARAMETERS: p_mail TYPE ad_smtpadr OBLIGATORY DEFAULT
'enter concernd email here in single cotts'
*CLASS-DEFINITIONS *
----
DATA: send_request TYPE REF TO cl_bcs.
DATA: document TYPE REF TO cl_document_bcs.
DATA: sender TYPE REF TO cl_sapuser_bcs.
DATA: recipient TYPE REF TO if_recipient_bcs.
DATA: exception_info TYPE REF TO if_os_exception_info,
l_uname TYPE salrtdrcpt,
l_bcs_exception TYPE REF TO cx_document_bcs,
l_send_exception TYPE REF TO cx_send_req_bcs,
l_addr_exception TYPE REF TO cx_address_bcs,
bcs_exception TYPE REF TO cx_bcs.
----
INTERNAL TABLES *
----
DATA: l_mailtext TYPE soli_tab.
DATA: l_mailhex TYPE solix_tab.
DATA: iaddsmtp TYPE bapiadsmtp OCCURS 0 WITH HEADER LINE.
DATA: ireturn TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
----
VARIABLES *
----
DATA: mail_line LIKE LINE OF l_mailtext.
DATA: mailx_line LIKE LINE OF l_mailhex.
DATA: bapiadsmtp TYPE bapiadsmtp.
DATA: l_lines TYPE i.
----
CONSTANTS *
----
*CONSTANTS:
intelli_domain(20) TYPE c VALUE '@intelligroup.com'.
*CLASS cl_cam_address_bcs DEFINITION LOAD.
*CLASS cl_abap_char_utilities DEFINITION LOAD.
Constants----
CONSTANTS: c_tab(1) TYPE c VALUE
cl_abap_char_utilities=>horizontal_tab,
" Tab Character
c_cr(1) TYPE c VALUE cl_abap_char_utilities=>cr_lf,
" Line Feed for End-Of_line
c_ext TYPE soodk-objtp VALUE 'BMP'. " doc Extension.
CLASS cl_cam_address_bcs DEFINITION LOAD.
CLASS cl_abap_char_utilities DEFINITION LOAD.
*DATA: CONTROL_PARAMETERS TYPE SSFCTRLOP,
OUTPUT_OPTIONS TYPE SSFCOMPOP,
JOB_OUTPUT_INFO TYPE SSFCRESCL,
JOB_OUTPUT_OPTIONS TYPE SSFCRESOP,
DATA: string_data TYPE xstring,
file_size TYPE i,
lines TYPE TABLE OF tline .
************************************************************************
*
selection-screen *
************************************************************************
*
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_filnam TYPE ibipparms-path.
SELECTION-SCREEN : END OF BLOCK b1.
************************************************************************
at selection-screen on value-request *
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_filnam.
PERFORM fareeda.
*LOOP AT it_xstring into ls_xstring.
*
*concatenate imp_xstring ls_xstring into imp_xstring.
*
*ENDLOOP.
&----
*& Form f4_help_p_filnam
&----
text
----
--> p1 text
<-- p2 text
----
FORM fareeda .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
FIELD_NAME = ' '
IMPORTING
file_name = p_filnam
.
ENDFORM.
*----
*
START-OF-SELECTION
*----
*
START-OF-SELECTION.
************************************************************************
Start-of-selection *
************************************************************************
p_filename_str = p_filnam.
data: begin of it_bin occurs 0,
data(1028) type x,
end of it_bin.
*data : it_xstring type table of xstring,
ls_xstring like xstring,
data: imp_xstring type xstring.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_filename_str
filetype = 'BIN'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
IMPORTING
filelength = l_lines
header = string_data
TABLES
data_tab = it_bin
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = l_lines
FIRST_LINE = 0
LAST_LINE = 0
IMPORTING
BUFFER = imp_xstring
TABLES
binary_tab = it_bin
EXCEPTIONS
FAILED = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*
*--Using SOLIX Converting string data
DATA: lt_solix TYPE solix_tab.
DATA: LT_SOLI TYPE SOLI_TAB.
DATA: docdata TYPE sood-objdes.
DATA: l_size TYPE sood-objlen.
CALL METHOD cl_document_bcs=>xstring_to_solix
EXPORTING
ip_xstring = imp_xstring
RECEIVING
rt_solix = lt_solix
.
TRY.
*-- Create persistent send request
send_request = cl_bcs=>create_persistent( ).
DATA: first(1) TYPE c.
CLEAR first.
DATA: lt_text TYPE soli_tab.
DATA: ls_text TYPE soli.
ls_text-line = 'THIS IS TEST DATA'.
APPEND ls_text TO lt_text.
CLEAR ls_text.
ls_text-line = 'THIS IS TEST DATA'.
APPEND ls_text TO lt_text.
CLEAR ls_text.
document = cl_document_bcs=>create_document(
i_type = 'txt'
i_text = lt_text
i_subject = 'subject' ).
Preparing contents of attachment with Change Log
PERFORM prepare_attachment.
DESCRIBE TABLE it_vbak LINES l_lines.
Size to multiplied by 2 for UNICODE enabled systems
l_size = l_lines * 2 * 255.
REFRESH l_mailhex.
move l_lines to l_size .
CALL METHOD document->add_attachment
EXPORTING
i_attachment_type = c_ext
i_attachment_subject = docdata
i_attachment_size = l_size
i_att_content_text = l_mailtext
i_att_content_hex = lt_solix.
i_attachment_header = LT_SOLI.
CALL METHOD document->add_attachment
EXPORTING
i_attachment_type = c_ext
i_attachment_subject = docdata
i_attachment_size = l_size
i_att_content_text = l_mailtext
i_att_content_hex = lt_solix
i_attachment_header = l_mailtext.
*--Add document to send request
CALL METHOD send_request->set_document( document ).
*-- Get sender object
sender = cl_sapuser_bcs=>create( sy-uname ).
*--Add sender
l_uname = sy-uname.
CALL METHOD send_request->set_sender
EXPORTING
i_sender = sender.
recipient = cl_cam_address_bcs=>create_internet_address( p_mail
).
*--Add recipient with its respective attributes to send request
CALL METHOD send_request->add_recipient
EXPORTING
i_recipient = recipient
i_express = 'U'
i_copy = 'X'
i_blind_copy = ' '
i_no_forward = 'X'.
*--set send immediately flag
send_request->set_send_immediately( 'X' ).
*--Send document
CALL METHOD send_request->send( ).
COMMIT WORK.
CATCH cx_document_bcs INTO l_bcs_exception.
CATCH cx_send_req_bcs INTO l_send_exception.
CATCH cx_address_bcs INTO l_addr_exception.
ENDTRY.
&----
*& Form PREPARE_ATTACHMENT
&----
FORM prepare_attachment.
FIELD-SYMBOLS: <lfs_table>, " Internal table structure
<lfs_con>. " Field Content
DATA: l_text TYPE char1024. " Text content for mail attachment
DATA: l_con(50) TYPE c. " Field Content in character format
Columns to be tab delimeted
LOOP AT it_vbak ASSIGNING <lfs_table>.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE <lfs_table>
TO <lfs_con>.
IF sy-subrc NE 0.
CONCATENATE c_cr l_text INTO l_text.
APPEND l_text TO l_mailtext.
EXIT.
ELSE.
CLEAR: l_con.
MOVE <lfs_con> TO l_con.
CONDENSE l_con.
IF sy-index = 1.
CLEAR: l_text.
MOVE l_con TO l_text.
ELSE.
CONCATENATE l_text l_con INTO l_text
SEPARATED BY c_tab.
ENDIF.
ENDIF.
ENDDO.
ENDLOOP.
ENDFORM. " PREPARE_ATTACHMENT
Reward Ponts To All Helpfull Answers
Regards
Fareeeda
‎2008 Jul 30 6:52 AM
Hi,
Refer the following code.
REPORT ZEMAIL.
TABLES: USR02.
DATA: C(15).
DATA: SENT LIKE SONV-FLAG.
DATA: EMAIL_ID LIKE SOFOLENTI1-OBJECT_ID.
DATA: BEGIN OF EMAIL_DATA.
INCLUDE STRUCTURE SODOCCHGI1.
DATA: END OF EMAIL_DATA.
DATA: BEGIN OF EMAIL_SEND OCCURS 10.
INCLUDE STRUCTURE SOMLRECI1.
DATA: END OF EMAIL_SEND.
DATA: BEGIN OF EMAIL_TEXT OCCURS 10.
INCLUDE STRUCTURE SOLISTI1.
DATA: END OF EMAIL_TEXT.
****************************************************
PARAMETERS: ALL__CLI RADIOBUTTON GROUP RADI.
PARAMETERS: THIS_CLI RADIOBUTTON GROUP RADI.
PARAMETERS: SELECT__ RADIOBUTTON GROUP RADI.
SELECT-OPTIONS SEND_TO FOR C NO INTERVALS.
SELECTION-SCREEN SKIP.
PARAMETERS: SUBJECT(30).
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT /1(20) TEXT-999.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: L1(84).
SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: L2(84).
SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: L3(84).
SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: L4(84).
SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: L5(84).
SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: L6(84).
SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: L7(84).
SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: L8(84).
SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: L9(84).
SELECTION-SCREEN END OF LINE.
***********************************************
EMAIL_TEXT-LINE = L1.
APPEND EMAIL_TEXT.
EMAIL_TEXT-LINE = L2.
APPEND EMAIL_TEXT.
EMAIL_TEXT-LINE = L3.
APPEND EMAIL_TEXT.
EMAIL_TEXT-LINE = L4.
APPEND EMAIL_TEXT.
EMAIL_TEXT-LINE = L5.
APPEND EMAIL_TEXT.
EMAIL_TEXT-LINE = L6.
APPEND EMAIL_TEXT.
EMAIL_TEXT-LINE = L7.
APPEND EMAIL_TEXT.
EMAIL_TEXT-LINE = L8.
APPEND EMAIL_TEXT.
EMAIL_TEXT-LINE = L9.
APPEND EMAIL_TEXT.
EMAIL_DATA-OBJ_NAME = 'MESSAGE'.
EMAIL_DATA-OBJ_DESCR = SUBJECT.
EMAIL_DATA-OBJ_LANGU = 'E'.
EMAIL_DATA-SENSITIVTY = 'P'.
EMAIL_DATA-OBJ_PRIO = '1'.
EMAIL_DATA-NO_CHANGE = 'X'.
EMAIL_DATA-PRIORITY = '1'.
BREAK-POINT.
IF SELECT__ = 'X'.
LOOP AT SEND_TO.
EMAIL_SEND-RECEIVER = SEND_TO-LOW.
EMAIL_SEND-REC_TYPE = 'U'.
EMAIL_SEND-EXPRESS = 'X'.
APPEND EMAIL_SEND.
ENDLOOP.
ELSEIF THIS_CLI = 'X'.
SELECT * FROM USR02.
IF USR02-USTYP = 'A' AND USR02-BNAME NE 'SAP*'
AND USR02-BNAME NE 'DDIC'.
EMAIL_SEND-RECEIVER = USR02-BNAME.
EMAIL_SEND-REC_TYPE = 'U'.
EMAIL_SEND-EXPRESS = 'X'.
APPEND EMAIL_SEND.
ENDIF.
ENDSELECT.
ELSEIF ALL__CLI = 'X'.
SELECT * FROM USR02 CLIENT SPECIFIED.
IF USR02-USTYP = 'A' AND USR02-BNAME NE 'SAP*'
AND USR02-BNAME NE 'DDIC'.
EMAIL_SEND-RECEIVER = USR02-BNAME.
EMAIL_SEND-REC_TYPE = 'U'.
EMAIL_SEND-EXPRESS = 'X'.
APPEND EMAIL_SEND.
ENDIF.
ENDSELECT.
ENDIF.
BREAK-POINT.
EXIT.
*****************************************************
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = EMAIL_DATA
DOCUMENT_TYPE = 'RAW'
PUT_IN_OUTBOX = 'X'
IMPORTING
SENT_TO_ALL = SENT
NEW_OBJECT_ID = EMAIL_ID
TABLES
OBJECT_CONTENT = EMAIL_TEXT
RECEIVERS = EMAIL_SEND
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.