Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

smart forms - Urgent

Former Member
0 Likes
616

Hi all,

How to send email in SMARTFORMS?

can any one tell as it is urgent requrement.

thanks

revanth

Hi all,

How to send email in SMARTFORMS?

can any one tell as it is urgent requrement.

thanks

revanth

3 REPLIES 3
Read only

Former Member
0 Likes
591

Check the code....

Summury: Converting the smartfrom to PDF is process of 3 simple steps.

Calling the Smart form, then it returns the OTF data in Return. 
Converting the OTF data into required format using the Function Module CONVERT_OTF_2_PDF. 
Download the File 
*&---------------------------------------------------------------------*
*& Report  ZTEST_NREDDY_PDF
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTEST_NREDDY_PDF.

DATA: it_otf   TYPE STANDARD TABLE OF itcoo,
      it_docs  TYPE STANDARD TABLE OF docs,
      it_lines TYPE STANDARD TABLE OF tline,
      st_job_output_info      TYPE ssfcrescl,
      st_document_output_info TYPE ssfcrespd,
      st_job_output_options   TYPE ssfcresop,
      st_output_options       TYPE ssfcompop,
      st_control_parameters   TYPE ssfctrlop,
      v_len_in                TYPE so_obj_len,
      v_language              TYPE sflangu VALUE 'E',
      v_e_devtype             TYPE rspoptype,
      v_bin_filesize          TYPE i,
      v_name                  TYPE string,
      v_path                  TYPE string,
      v_fullpath              TYPE string,
      v_filter                TYPE string,
      v_uact                  TYPE i,
      v_guiobj                TYPE REF TO cl_gui_frontend_services,
      v_filename              TYPE string,
      v_fm_name               TYPE rs38l_fnam.

CONSTANTS c_formname          TYPE tdsfname VALUE 'ZTEST'.

CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
  EXPORTING
    i_language    = v_language
    i_application = 'SAPDEFAULT'
  IMPORTING
    e_devtype     = v_e_devtype.

st_output_options-tdprinter = v_e_devtype.
*st_output_options-tdprinter = 'locl'.

st_control_parameters-no_dialog = 'X'.
st_control_parameters-getotf = 'X'.

*.................GET SMARTFORM FUNCTION MODULE NAME.................*

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname           = c_formname
  IMPORTING
    fm_name            = v_fm_name
  EXCEPTIONS
    no_form            = 1
    no_function_module = 2
    OTHERS             = 3.
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 SMARTFORM............................*

CALL FUNCTION v_fm_name
  EXPORTING
    control_parameters   = st_control_parameters
    output_options       = st_output_options
  IMPORTING
    document_output_info = st_document_output_info
    job_output_info      = st_job_output_info
    job_output_options   = st_job_output_options
  EXCEPTIONS
    formatting_error     = 1
    internal_error       = 2
    send_error           = 3
    user_canceled        = 4
    OTHERS               = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.

*.........................CONVERT TO OTF TO PDF.......................*

  CALL FUNCTION 'CONVERT_OTF_2_PDF'
    IMPORTING
      bin_filesize           = v_bin_filesize
    TABLES
      otf                    = st_job_output_info-otfdata
      doctab_archive         = it_docs
      lines                  = it_lines
    EXCEPTIONS
      err_conv_not_possible  = 1
      err_otf_mc_noendmarker = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

*........................GET THE FILE NAME TO STORE....................*

  CONCATENATE 'smrt' '.pdf' INTO v_name.

  CREATE OBJECT v_guiobj.
  CALL METHOD v_guiobj->file_save_dialog
    EXPORTING
      default_extension = 'pdf'
      default_file_name = v_name
      file_filter       = v_filter
    CHANGING
      filename          = v_name
      path              = v_path
      fullpath          = v_fullpath
      user_action       = v_uact.

  IF v_uact = v_guiobj->action_cancel.
    EXIT.
  ENDIF.

*..................................DOWNLOAD AS FILE....................*
  MOVE v_fullpath TO v_filename.

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      bin_filesize            = v_bin_filesize
      filename                = v_filename
      filetype                = 'BIN'
    TABLES
      data_tab                = it_lines
    EXCEPTIONS
      file_write_error        = 1
      no_batch                = 2
      gui_refuse_filetransfer = 3
      invalid_type            = 4
      no_authority            = 5
      unknown_error           = 6
      header_not_allowed      = 7
      separator_not_allowed   = 8
      filesize_not_allowed    = 9
      header_too_long         = 10
      dp_error_create         = 11
      dp_error_send           = 12
      dp_error_write          = 13
      unknown_dp_error        = 14
      access_denied           = 15
      dp_out_of_memory        = 16
      disk_full               = 17
      dp_timeout              = 18
      file_not_found          = 19
      dataprovider_exception  = 20
      control_flush_error     = 21
      OTHERS                  = 22.
  IF sy-subrc <> 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDIF.

also check the link below.

Cheers

VJ

Read only

Former Member
0 Likes
591

Hi,

Use 'SO_NEW_DOCUMENT_SEND_API1 F.M

Please go through the code.

data declaration

-


c_u(1) VALUE 'U', "Value U

c_int(3) VALUE 'INT', "Value Int

c_saprpt(6) VALUE 'SAPRPT', "Heading

c_f(1) VALUE 'F', "Value F

c_raw(3) VALUE 'RAW'. "Doc Type

-


getting the data from TVARV

-


CONCATENATE 'CBSI_FILE_NAME' '0227' INTO l_var_name SEPARATED BY '_'.

CALL FUNCTION 'Z_GET_TVARV_ENTRIES'

EXPORTING

i_name = l_var_name

i_type = 'P'

  • I_MSGTY =

IMPORTING

e_parameter = l_file.

  • TABLES

  • t_tvarv =

p_file = l_file .

-


  • Sending email

-


PERFORM send_file_as_email_attachment

USING v_email

'SM0003 Control Total Data'

'SM0003 Control Total Data'

' '.

&----


  • Send email

----


  • -->P_GV_EMAIL Email id

  • -->P_TEXT_003 Subject

  • -->P_TEXT_003 Subject

  • -->P_6200 text

----


FORM send_file_as_email_attachment

USING p_email TYPE somlreci1-receiver

p_mtitle TYPE sodocchgi1-obj_descr

p_filename TYPE so_obj_des

p_attdescription TYPE so_obj_nam.

*

*Local varibales

DATA: lv_mtitle TYPE sodocchgi1-obj_descr,

lv_email TYPE somlreci1-receiver,

lv_attdescription TYPE so_obj_nam ,

lv_attfilename TYPE so_obj_des ,

lv_sent_all TYPE sonv-flag.

*move values

it_attach[] = it_output[].

lv_sent_all = c_x.

lv_email = p_email.

lv_mtitle = p_mtitle.

lv_attdescription = p_attdescription.

lv_attfilename = p_filename.

  • Fill the document data.

it_docchange-doc_size = 1.

  • Populate the subject/generic message attributes

it_docchange-obj_langu = sy-langu.

it_docchange-obj_name = c_saprpt.

it_docchange-obj_descr = lv_mtitle .

it_docchange-sensitivty = c_f.

  • Fill the document data and get size of attachment

READ TABLE it_attach

INDEX v_chr_entries

TRANSPORTING NO FIELDS.

it_docchange-doc_size =

( v_chr_entries - 1 ) * 255 + STRLEN( it_attach ).

it_docchange-obj_langu = sy-langu.

it_docchange-obj_name = c_saprpt.

it_docchange-obj_descr = lv_mtitle.

it_docchange-sensitivty = c_f.

  • Describe the body of the message

CLEAR wa_objpack.

REFRESH it_objpack.

wa_objpack-transf_bin = space.

wa_objpack-head_start = 1.

wa_objpack-head_num = 0.

wa_objpack-body_start = 1.

DESCRIBE TABLE it_message LINES v_objpackbody.

wa_objpack-doc_type = c_raw.

APPEND wa_objpack

TO it_objpack.

  • Create attachment notification

wa_objpack-transf_bin = c_x.

wa_objpack-head_start = 1.

wa_objpack-head_num = 1.

wa_objpack-body_start = 1.

DESCRIBE TABLE it_attach LINES v_objpackbody.

wa_objpack-obj_descr = lv_attdescription.

wa_objpack-obj_name = lv_attfilename.

wa_objpack-doc_size = wa_objpack-body_num * 255.

APPEND wa_objpack

TO it_objpack.

  • Add the recipients email address

REFRESH it_reclist.

LOOP AT it_mailid .

wa_reclist-receiver = it_mailid-low.

wa_reclist-rec_type = c_u.

wa_reclist-com_type = c_int.

wa_reclist-notif_del = c_x.

wa_reclist-notif_ndel = c_x.

APPEND wa_reclist

TO it_reclist.

CLEAR wa_reclist.

ENDLOOP.

IF 1 = 2.

ENDIF.

CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'

EXPORTING

document_data = it_docchange

document_type = c_raw

put_in_outbox = c_x

  • commit_work = c_x

IMPORTING

sent_to_all = lv_sent_all

TABLES

object_content = it_attach

receivers = it_reclist

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.

IF sy-subrc NE 0.

MESSAGE e114 ."Unable to send An Email with Session Log.

ENDIF. "IF sy-subrc NE 0.

ENDFORM. "send_file_as_email_attachment

Thanks,

Sudhakar

Read only

Former Member
0 Likes
591

Hi,

refer this threads:

<u>

<u>

Thanks

Mahesh