Friday, November 19, 2010

Send Email in ABAP Report






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 WITH HEADER LINE,
      objhead 
LIKE solisti1 OCCURS WITH HEADER LINE,
      objtxt 
LIKE solisti1 OCCURS WITH HEADER LINE,
      receivers 
LIKE somlreci1 OCCURS 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.

c.      Sample codes in Start of Selection.

-         Set Email body.
START-OF-SELECTION.
CLEAR objtxt[].
objtxt-line = p_text.
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 - 
) * 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.

 -         Set Internal SAP Email
  receivers-receiver = p_login."SAP Login User
  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.

-         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
            .
-         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'.
ENDCASE.


                                   EXECUTE REPORT





    



  


1 comment:

  1. it is good blog, this blog very help me for coding abap. thank u 3as.

    ReplyDelete