Additional Blogs by SAP
cancel
Showing results for 
Search instead for 
Did you mean: 
former_member191062
Active Contributor


Prerequests:


1. WebAS as of rel. 6.20

2. BSP/ICF/ICM is configured.

3. Mail / Fax sub system connected to the R/3 system.

4. Basic ABAP / BSP skills.



The goal:


The application is able to send a textual document per mail or fax. The subject, body, sender, recipient, send art are variable over a BSP UI. It is not a goal of this weblog to show all the possibilities (what and how) a document can be sent, the goal is to have a working program wich can be easily copied and modified upon own request. Some more feature /* e.g How to send attachments... */ can be found in the SAP note: #190669. The idea is: This feature is often used to send notification information, which is usually a textual document.


The application:

Create a BSP application from Tr. SE80. We will require a page with flow logic. Create this.


+
The page attributes:

+
Each UI input enabled field, has a page attribute, to hand over the data, and an extra attribute for the status. /* To see weather the document has been sent */

OnCreate

if me->typeSelector is initial.

me->typeSelector = 'INT'.

endif.

OnInputProcessing

In this method we realize the effective coding wich sends the document with the help of the Function Module: 'SO_DOCUMENT_SEND_API1'. This part of the code will be examined in the last part of the blog, here you will find the complete coding, so you can copy paste it easily.


DATA:

*for the htmlb event handling 

evt type ref to if_htmlb_data,

*mail elements 

bodyTable type table of char255,      "body 

receiver type somlreci1,              "reciver  

receivers type TABLE OF somlreci1,    "table containing the reciver

senderAddr like sender,               "sender 

document_data type SODOCCHGI1,        "header informations

packing_list type table of SOPCKLSTI1,"document content description

sent_to_all type boolean,              

*help variables 

len type int4, 

base type int4, 

line type char255. 

evt = cl_htmlb_manager=>get_event_ex( request ).

case evt->event_server_name. 

"check for the send button click  when 'SendItem'.  "send item is pressed

*first we need to split the string into an internal table  

*with line length of 255 

len = strlen( body ) / 256.  

if len gt 0.  

do  len times.   

  base = ( sy-index - 1 ) * 256.   

  if sy-index = len.    

   line = body+base.   

  else.    

   line = body+base(256).

  endif.   

  APPEND line to bodyTable.  

enddo. 

ELSE. "one line length.  

append body to bodyTable. 

endif. 

"The text is now in the table bodytable.

if typeSelector eq 'INT'.               "MAIL RECIPIENT

  receiver-receiver = recipient.

  receiver-rec_type = 'U'.

  APPEND receiver to receivers.

  move sender to senderAddr.

endif.

Add the same for FAX, if required.

"Fill the document data /subject/

document_data-obj_descr = subject.

"Fill packing list

data: p_item type SOPCKLSTI1.

describe table bodyTable lines len.  " the length of the document

p_item-doc_type = 'RAW'.        " text document

p_item-transf_bin = ' '.        " non binary

p_item-obj_descr = subject.

p_item-body_start = 1.          " first (and only) object

p_item-body_num = len.          " set the length.

APPEND p_item to packing_list. 

**send the document call function

'SO_DOCUMENT_SEND_API1'

    exporting

       document_data              = document_data

       mput_in_outbox              = ' '

       commit_work                = 'X'

       sender_address             = senderAddr

       sender_address_type        = typeSelector

    importing

       sent_to_all                = sent_to_all

    tables

       packing_list               = packing_list

       contents_txt               = bodyTable

       *contents_hex               = contents_hex

        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.

   case sy-subrc.  "Error handling

       when '0'.

        statusT = 'Document is sent.'.

       when others.

        statusT = 'Error during the operation'.

   endcase.

Usage of the application:

- the subject is a one line text.

- the body is a multiline text, the CRLF characters are kept, so this can be a preformatted text.

- the sender and the recipient are:

    -in case of mail: standard internet Mail Addresses, like 'john.doe@mycompany.com'

    -in case of fax: Telephone number in the following format: 2 chr country code+faxnumber. E.g: 'DE6227757575' for SAP Germany.

The tricky things we must care of:

Now you have a working program wich sends mail / fax docuemts, it is upon you how you enhance this. Good luck :wink:

4 Comments