SEND EMAIL IN ABAP PROGRAM
Sometimes, there is a user need to send email from SAP to internal SAP or to eksternal SMTP. Below sample code in ABAP to make report that is able to send email from SAP
a. Data Declaration
SAP Structures: sodocchgi1, solisti1, somlreci1
DATA :
document_data LIKE sodocchgi1,
objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
objhead LIKE solisti1 OCCURS 0 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
document_data LIKE sodocchgi1,
objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
objhead LIKE solisti1 OCCURS 0 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
tab_lines TYPE i.
b. Input Parameters
SELECTION-SCREEN BEGIN OF BLOCK blok1 WITH FRAME TITLE text-001.
PARAMETERS p_email TYPE SO_RECNAME DEFAULT 'mas.trias@gmail.com'.
PARAMETERS p_login TYPE SO_RECNAME DEFAULT 'GUEST01'.
PARAMETERS p_judul TYPE SO_OBJ_DES DEFAULT 'Email dari SAP'.
PARAMETERS p_text TYPE SO_TEXT255 DEFAULT 'Ini hanya test Email dari SAP'.
SELECTION-SCREEN END OF BLOCK blok1.
PARAMETERS p_email TYPE SO_RECNAME DEFAULT 'mas.trias@gmail.com'.
PARAMETERS p_login TYPE SO_RECNAME DEFAULT 'GUEST01'.
PARAMETERS p_judul TYPE SO_OBJ_DES DEFAULT 'Email dari SAP'.
PARAMETERS p_text TYPE SO_TEXT255 DEFAULT 'Ini hanya test Email dari SAP'.
SELECTION-SCREEN END OF BLOCK blok1.
c. Sample codes in Start of Selection.
- Set Email body.
START-OF-SELECTION.
CLEAR objtxt[].
objtxt-line = p_text.
APPEND objtxt.
APPEND objtxt.
- Set Email Title
CLEAR document_data.
DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
document_data-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
READ TABLE objtxt INDEX tab_lines.
document_data-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
WRITE p_judul TO document_data-obj_descr.
- Creation of the entry for the compressed document DESCRIBE TABLE objtxt LINES tab_lines.
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'RAW'.
APPEND objpack.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'RAW'.
APPEND objpack.
- Set Internal SAP Email
receivers-receiver = p_login."SAP Login User
receivers-rec_type = 'B'. "local addres user
receivers-express = 'X'.
APPEND receivers.
receivers-rec_type = 'B'. "local addres user
receivers-express = 'X'.
APPEND receivers.
- Set Eksternal Email
receivers-receiver = p_email. "Email Address
receivers-rec_type = 'U'. "Intenet Address
APPEND receivers.
receivers-rec_type = 'U'. "Intenet Address
APPEND receivers.
- Call Function Module SO_NEW_DOCUMENT_ATT_SEND_API1
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = document_data
put_in_outbox = 'X'
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL = SENT_TO_ALL
* NEW_OBJECT_ID = NEW_OBJECT_ID
TABLES
packing_list = objpack
object_header = objhead
* CONTENTS_BIN = CONTENTS_BIN
contents_txt = objtxt
* CONTENTS_HEX = CONTENTS_HEX
* OBJECT_PARA = OBJECT_PARA
* OBJECT_PARB = OBJECT_PARB
receivers = receivers
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
.
EXPORTING
document_data = document_data
put_in_outbox = 'X'
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL = SENT_TO_ALL
* NEW_OBJECT_ID = NEW_OBJECT_ID
TABLES
packing_list = objpack
object_header = objhead
* CONTENTS_BIN = CONTENTS_BIN
contents_txt = objtxt
* CONTENTS_HEX = CONTENTS_HEX
* OBJECT_PARA = OBJECT_PARA
* OBJECT_PARB = OBJECT_PARB
receivers = receivers
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
.
- Show Message as an FM exceptions.
CASE sy-subrc.
WHEN 0.
MESSAGE i398(00) WITH 'Success'.
WHEN 1.
MESSAGE e398(00) WITH 'Too many receivers'.
WHEN 2.
MESSAGE e398(00) WITH 'Document not send'.
WHEN 3.
MESSAGE e398(00) WITH 'Document type not exist'.
WHEN 4.
MESSAGE e398(00) WITH 'Operation no autorization'.
WHEN 5.
MESSAGE e398(00) WITH 'Parameter Erros'.
WHEN 6.
MESSAGE e398(00) WITH 'X Eror'.
WHEN 7.
MESSAGE e398(00) WITH 'Enque Error'.
WHEN OTHERS.
MESSAGE e398(00) WITH 'Others'.
WHEN 0.
MESSAGE i398(00) WITH 'Success'.
WHEN 1.
MESSAGE e398(00) WITH 'Too many receivers'.
WHEN 2.
MESSAGE e398(00) WITH 'Document not send'.
WHEN 3.
MESSAGE e398(00) WITH 'Document type not exist'.
WHEN 4.
MESSAGE e398(00) WITH 'Operation no autorization'.
WHEN 5.
MESSAGE e398(00) WITH 'Parameter Erros'.
WHEN 6.
MESSAGE e398(00) WITH 'X Eror'.
WHEN 7.
MESSAGE e398(00) WITH 'Enque Error'.
WHEN OTHERS.
MESSAGE e398(00) WITH 'Others'.
ENDCASE.
EXECUTE REPORT
it is good blog, this blog very help me for coding abap. thank u 3as.
ReplyDelete