0% found this document useful (0 votes)
22 views16 pages

Sending Smartform Output To Email

The document outlines the process of sending emails with PDF attachments using Smartforms in SAP, utilizing various standard classes from Business Communication Services (BCS). It details the steps required to create a send request, add recipients, create documents, and send the email, along with relevant code snippets for implementation. Key classes mentioned include CL_BCS for sending requests and CL_DOCUMENT_BCS for document handling.

Uploaded by

shivam feb414
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views16 pages

Sending Smartform Output To Email

The document outlines the process of sending emails with PDF attachments using Smartforms in SAP, utilizing various standard classes from Business Communication Services (BCS). It details the steps required to create a send request, add recipients, create documents, and send the email, along with relevant code snippets for implementation. Key classes mentioned include CL_BCS for sending requests and CL_DOCUMENT_BCS for document handling.

Uploaded by

shivam feb414
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

🔟

Email Triggering in Smartforms

1. Introduction
To send mail into PDF, we will make use of the various standard classes related to BCS (
Business Communication Services ).

We can use SOST transaction code while sending the mail to external system in order to
check whether everything is perfect fine or not in our system.

2. Important Classes used for Email Purpose


The various standard classes we will use for this purpose are as follows :-

CL_BCS :-

This class is used for creating the send request, adding the recipient, sending the
document etc.

CL_DOCUMENT_BCS :-

This class is used for creating the document, adding the attachment etc.

Email Triggering in Smartforms 1


Mob No :- +916261538504
We will use this class for writing documents.

CL_CAM_ADDRESS_BCS :-

This class is used to create the external recipients.

This class is used to for sending the mail to outside address of SAP.

Out of these above classes, the first two are most important for Email purpose.

3. Steps Used for Email Writing Normally


When ever send any mail, we use below steps.

We pass the receipent address ( where we want to send the mail ).

We pass the subject

We write the text for the email purpose (i.e. Description for mail ) .

We attach the document for the same.

Then we have to click on send to send the mail.

This whole process is maintained by the first two classes.

CL_BCS

CL_DOCUMENT_BCS

4. Steps to Send Smartform PDF as an E-Mail


Attachment
1. Get the BIN_FILE of the smartform.

2. Convert the BIN_FILE from XSTING format to binary format.

3. Create the send request.

4. Create the SAP user/external user ( recipient ).

5. Add the recipient.

6. Create the document

Email Triggering in Smartforms 2


Mob No :- +916261538504
7. Add the attachment.

8. Set the document

9. Activate/deactivate immediate sending.

10. Send

11. Commit

5. Implementation
Step 1 :- Call the function module of the smartform to get the OTF data.

PARAMETERS : P_EMP_ID TYPE ZAR_EMP_ID.

START-OF-SELECTION.

DATA : LS_CONTROL TYPE SSFCTRLOP.


LS_CONTROL-GETOTF = 'X'.
LS_CONTROL-NO_DIALOG = 'X'.

DATA : LS_OUTPUT TYPE SSFCOMPOP.


LS_OUTPUT-TDDEST = 'LP01'.

DATA : LS_OUTPUT_INFO TYPE SSFCRESCL.


CALL FUNCTION '/1BCDWB/SF00000129'
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = LS_CONTROL
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = LS_OUTPUT
USER_SETTINGS =''

Email Triggering in Smartforms 3


Mob No :- +916261538504
P_EMP_ID = P_EMP_ID
IMPORTING
* DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = LS_OUTPUT_INFO
* JOB_OUTPUT_OPTIONS =
EXCEPTIONS
FORMATTING_ERROR =1
INTERNAL_ERROR =2
SEND_ERROR =3
USER_CANCELED =4
OTHERS =5
.

Step 2 :- Now we have OTF data, so we will convert it to BIN_FILE using CONVERT_OTF
function module, It will return me the BIN_FILE.

DATA : LT_LINES TYPE TABLE OF TLINE,


LV_BIN_FILE TYPE XSTRING.

CALL FUNCTION 'CONVERT_OTF'


EXPORTING
FORMAT = 'PDF'
* MAX_LINEWIDTH = 132
* ARCHIVE_INDEX =''
* COPYNUMBER =0
* ASCII_BIDI_VIS2LOG =''
* PDF_DELETE_OTFTAB =''
* PDF_USERNAME =''
* PDF_PREVIEW =''
* USE_CASCADING =''
* MODIFIED_PARAM_TABLE =
IMPORTING
* BIN_FILESIZE =
BIN_FILE = LV_BIN_FILE
TABLES

Email Triggering in Smartforms 4


Mob No :- +916261538504
OTF = LS_output_info-otfdata
LINES = LT_LINES
EXCEPTIONS
ERR_MAX_LINEWIDTH =1
ERR_FORMAT =2
ERR_CONV_NOT_POSSIBLE =3
ERR_BAD_OTF =4
OTHERS =5
.

Step 3 :- We have got our BIN_FILE in form of XSTRING format, now we need to convert
it into binary format. So, we will use SCMS_XSTRING_TO_BINARY function module for
the same purpose.

DATA : LT_BINARY_TAB type SOLIX_TAB.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'


EXPORTING
BUFFER = LV_BIN_FILE
* APPEND_TO_TABLE =''
* IMPORTING
* OUTPUT_LENGTH =
TABLES
BINARY_TAB = LT_BINARY_TAB
.

Step 4 :- Now, we have the contents which I want to send a email, So now I will create a
send request using CL_BCS class.

We have a CREATE_PERSISTENT method in CL_BCS class which we will use for


create request purpose.

It will return me the object for CL_BCS class.

DATA : LO_BCS TYPE REF TO CL_BCS.

TRY.

Email Triggering in Smartforms 5


Mob No :- +916261538504
CALL METHOD CL_BCS=>CREATE_PERSISTENT
RECEIVING
RESULT = LO_BCS
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

Step 5 :- Now, to send the mail to the external user,I will have to create a recipient for
external user.

For the same purpose, we have CL_CAM_ADDRESS_BCS class and we will call its
method CREATE_INTERNET_ADDRESS, it will return the object of this class.

TRY.
CALL METHOD CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS
EXPORTING
I_ADDRESS_STRING = '[email protected]'
* I_ADDRESS_NAME =
* I_INCL_SAPUSER =
RECEIVING
RESULT = LO_EXTERNAL_USER
.
CATCH CX_ADDRESS_BCS.
ENDTRY.

Step 6 :- Now, we have got the external address, then we will add this recipient to CL_BCS
class using ADD_RECIPIENT method.

TRY.
CALL METHOD LO_BCS->ADD_RECIPIENT
EXPORTING
I_RECIPIENT = LO_EXTERNAL_USER
* I_EXPRESS =
* I_COPY =
* I_BLIND_COPY =
* I_NO_FORWARD =

Email Triggering in Smartforms 6


Mob No :- +916261538504
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

Step 7 :- Now, we have added the recipient, now we will create the document for the same
purpose.

We will provide, subject, text and will attach the PDF for the same purpose in the
document part.

We will use CREATE_DOCUMENT method of CL_DOCUMENT_BCS class to create


the document.

DATA : LT_TEXT TYPE TABLE OF SOLI,


LS_TEXT TYPE SOLI.

LS_TEXT-LINE = 'Dear Sir'.


APPEND LS_TEXT to LT_TEXT.
CLEAR LS_TEXT.

LS_TEXT-LINE = 'Below is the attached Smartform'.


APPEND LS_TEXT to LT_TEXT.
CLEAR LS_TEXT.

LS_TEXT-LINE = 'Thanks and Regards'.


APPEND LS_TEXT to LT_TEXT.
CLEAR LS_TEXT.

LS_TEXT-LINE = 'Amrit Raj'.


APPEND LS_TEXT to LT_TEXT.
CLEAR LS_TEXT.

DATA : LO_DOCUMENT type ref to CL_DOCUMENT_BCS.

TRY.
CALL METHOD CL_DOCUMENT_BCS=>CREATE_DOCUMENT
EXPORTING

Email Triggering in Smartforms 7


Mob No :- +916261538504
I_TYPE = 'RAW'
I_SUBJECT = 'Employee Details'
* I_LENGTH =
* I_LANGUAGE = SPACE
* I_IMPORTANCE =
* I_SENSITIVITY =
I_TEXT = LT_TEXT
* I_HEX =
* I_HEADER =
* I_SENDER =
* IV_VSI_PROFILE =
RECEIVING
RESULT = LO_DOCUMENT
.
CATCH CX_DOCUMENT_BCS.
ENDTRY.

Step 8 :- Now we will add the smartform and a Subject for the Mail, for that purpose we will
use ADD_ATTACHMENT method of CL_DOCUMENT_BCS class.

TRY.
CALL METHOD LO_DOCUMENT->ADD_ATTACHMENT
EXPORTING
I_ATTACHMENT_TYPE = 'PDF'
I_ATTACHMENT_SUBJECT = 'Employee Details Using Smartform'
* I_ATTACHMENT_SIZE =
* I_ATTACHMENT_LANGUAGE = SPACE
* I_ATT_CONTENT_TEXT =
I_ATT_CONTENT_HEX = LT_BINARY_TAB
* I_ATTACHMENT_HEADER =
* IV_VSI_PROFILE =
.
CATCH CX_DOCUMENT_BCS.
ENDTRY.

Email Triggering in Smartforms 8


Mob No :- +916261538504
Step 9 :- Now we have to set the document, so for that purpose we will use the
SET_DOCUMENT method of CL_BCS class to set the document and we will pass the
object of CL_DOCUMENT_BCS class into this method.

TRY.
CALL METHOD LO_BCS->SET_DOCUMENT
EXPORTING
I_DOCUMENT = LO_DOCUMENT
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

Step 10 :- Last step is to prepare mail for sending so we will call the
SET_SEND_IMMEDIATELY method of CL_BCS class and we will pass it to true.

TRY.
CALL METHOD LO_BCS->SET_SEND_IMMEDIATELY
EXPORTING
I_SEND_IMMEDIATELY = 'X'
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

Step 11 :- Send the mail using send method of CL_BCS class.

DATA : LV_RESULT type OS_BOOLEAN.


TRY.
CALL METHOD LO_BCS->SEND
* EXPORTING
* I_WITH_ERROR_SCREEN = SPACE
RECEIVING
RESULT = LV_RESULT
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

Email Triggering in Smartforms 9


Mob No :- +916261538504
IF LV_RESULT is NOT INITIAL.
COMMIT WORK.
MESSAGE 'Mail is Sent' TYPE 'S'.
ELSE.
MESSAGE 'Mail is not Sent' type 'E'.
ENDIF.

Code
PARAMETERS : P_EMP_ID TYPE ZAR_EMP_ID.

START-OF-SELECTION.

DATA : LS_CONTROL TYPE SSFCTRLOP.


LS_CONTROL-GETOTF = 'X'.
LS_CONTROL-NO_DIALOG = 'X'.

DATA : LS_OUTPUT TYPE SSFCOMPOP.


LS_OUTPUT-TDDEST = 'LP01'.

DATA : LS_OUTPUT_INFO TYPE SSFCRESCL.


CALL FUNCTION '/1BCDWB/SF00000129'
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = LS_CONTROL
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = LS_OUTPUT
USER_SETTINGS =''
P_EMP_ID = P_EMP_ID

Email Triggering in Smartforms 10


Mob No :- +916261538504
IMPORTING
* DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = LS_OUTPUT_INFO
* JOB_OUTPUT_OPTIONS =
EXCEPTIONS
FORMATTING_ERROR =1
INTERNAL_ERROR =2
SEND_ERROR =3
USER_CANCELED =4
OTHERS =5
.

DATA : LT_LINES TYPE TABLE OF TLINE,


LV_BIN_FILE TYPE XSTRING.

CALL FUNCTION 'CONVERT_OTF'


EXPORTING
FORMAT = 'PDF'
* MAX_LINEWIDTH = 132
* ARCHIVE_INDEX =''
* COPYNUMBER =0
* ASCII_BIDI_VIS2LOG =''
* PDF_DELETE_OTFTAB =''
* PDF_USERNAME =''
* PDF_PREVIEW =''
* USE_CASCADING =''
* MODIFIED_PARAM_TABLE =
IMPORTING
* BIN_FILESIZE =
BIN_FILE = LV_BIN_FILE
TABLES
OTF = LS_output_info-otfdata
LINES = LT_LINES
EXCEPTIONS
ERR_MAX_LINEWIDTH =1
ERR_FORMAT =2

Email Triggering in Smartforms 11


Mob No :- +916261538504
ERR_CONV_NOT_POSSIBLE =3
ERR_BAD_OTF =4
OTHERS =5
.

DATA : LT_BINARY_TAB type SOLIX_TAB.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'


EXPORTING
BUFFER = LV_BIN_FILE
* APPEND_TO_TABLE =''
* IMPORTING
* OUTPUT_LENGTH =
TABLES
BINARY_TAB = LT_BINARY_TAB
.

DATA : LO_BCS TYPE REF TO CL_BCS.

TRY.
CALL METHOD CL_BCS=>CREATE_PERSISTENT
RECEIVING
RESULT = LO_BCS
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

DATA : LO_EXTERNAL_USER TYPE REF TO CL_CAM_ADDRESS_BCS.

TRY.
CALL METHOD CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS

Email Triggering in Smartforms 12


Mob No :- +916261538504
EXPORTING
I_ADDRESS_STRING = '[email protected]'
* I_ADDRESS_NAME =
* I_INCL_SAPUSER =
RECEIVING
RESULT = LO_EXTERNAL_USER
.
CATCH CX_ADDRESS_BCS.
ENDTRY.

TRY.
CALL METHOD LO_BCS->ADD_RECIPIENT
EXPORTING
I_RECIPIENT = LO_EXTERNAL_USER
* I_EXPRESS =
* I_COPY =
* I_BLIND_COPY =
* I_NO_FORWARD =
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

DATA : LT_TEXT TYPE TABLE OF SOLI,


LS_TEXT TYPE SOLI.

LS_TEXT-LINE = 'Dear Sir'.


APPEND LS_TEXT to LT_TEXT.
CLEAR LS_TEXT.

LS_TEXT-LINE = 'Below is the attached Smartform'.


APPEND LS_TEXT to LT_TEXT.
CLEAR LS_TEXT.

LS_TEXT-LINE = 'Thanks and Regards'.


APPEND LS_TEXT to LT_TEXT.

Email Triggering in Smartforms 13


Mob No :- +916261538504
CLEAR LS_TEXT.

LS_TEXT-LINE = 'Amrit Raj'.


APPEND LS_TEXT to LT_TEXT.
CLEAR LS_TEXT.

DATA : LO_DOCUMENT type ref to CL_DOCUMENT_BCS.

TRY.
CALL METHOD CL_DOCUMENT_BCS=>CREATE_DOCUMENT
EXPORTING
I_TYPE = 'RAW'
I_SUBJECT = 'Employee Details'
* I_LENGTH =
* I_LANGUAGE = SPACE
* I_IMPORTANCE =
* I_SENSITIVITY =
I_TEXT = LT_TEXT
* I_HEX =
* I_HEADER =
* I_SENDER =
* IV_VSI_PROFILE =
RECEIVING
RESULT = LO_DOCUMENT
.
CATCH CX_DOCUMENT_BCS.
ENDTRY.

TRY.
CALL METHOD LO_DOCUMENT->ADD_ATTACHMENT
EXPORTING
I_ATTACHMENT_TYPE = 'PDF'
I_ATTACHMENT_SUBJECT = 'Employee Details Using Smartform'
* I_ATTACHMENT_SIZE =
* I_ATTACHMENT_LANGUAGE = SPACE

Email Triggering in Smartforms 14


Mob No :- +916261538504
* I_ATT_CONTENT_TEXT =
I_ATT_CONTENT_HEX = LT_BINARY_TAB
* I_ATTACHMENT_HEADER =
* IV_VSI_PROFILE =
.
CATCH CX_DOCUMENT_BCS.
ENDTRY.

TRY.
CALL METHOD LO_BCS->SET_DOCUMENT
EXPORTING
I_DOCUMENT = LO_DOCUMENT
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

TRY.
CALL METHOD LO_BCS->SET_SEND_IMMEDIATELY
EXPORTING
I_SEND_IMMEDIATELY = 'X'
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

DATA : LV_RESULT type OS_BOOLEAN.


TRY.
CALL METHOD LO_BCS->SEND
* EXPORTING
* I_WITH_ERROR_SCREEN = SPACE
RECEIVING
RESULT = LV_RESULT
.
CATCH CX_SEND_REQ_BCS.
ENDTRY.

Email Triggering in Smartforms 15


Mob No :- +916261538504
IF LV_RESULT is NOT INITIAL.
COMMIT WORK.
MESSAGE 'Mail is Sent' TYPE 'S'.
ELSE.
MESSAGE 'Mail is not Sent' type 'E'.
ENDIF.

Output
We can go to SOST and check the contents of Mail.

Email Triggering in Smartforms 16


Mob No :- +916261538504

You might also like