Sending SmartForm as an attachment in Mail

 Program:

*&---------------------------------------------------------------------*
*& Report ZVB_ADOBE_SO
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_adobe_so1.


DATA:lv_fmname TYPE tdsfname,
     lr_ctrlop TYPE ssfctrlop,
     lr_outopt TYPE ssfcompop.

DATA:lt_otfdata TYPE ssfcrescl.

DATA:lt_pdf_data       TYPE TABLE OF tline,
     lt_binary_content TYPE solix_tab.
"Variables
DATA: lv_bin_filesize TYPE so_obj_len,
      lv_sent_to_all  TYPE os_boolean,
      lv_bin_xstr     TYPE xstring,
      lv_fname        TYPE rs38l_fnam,
      lv_string_text  TYPE string.

DATA:lv_uname     TYPE soextreci1-receiver,             "Sender
     lr_subject   TYPE sodocchgi1,
     lt_mailbody  TYPE TABLE OF solisti1,               "Mail Body
     lr_mailbody  TYPE solisti1,
     lt_mailrec   TYPE TABLE OF somlrec90,              "Mail recievers
     lr_mailrec   TYPE somlrec90,
     lr_pack_list TYPE sopcklsti1,
     lt_pack_list TYPE TABLE OF sopcklsti1.

DATA:lr_vbak TYPE zssd_vbak_01,
     lt_vbap TYPE TABLE OF zssd_vbap_01.
PARAMETERS:p_vbeln TYPE vbak-vbeln DEFAULT '0000000060'.
SELECT SINGLE vbeln,
              erdat,
              erzet,
              ernam,
              vbtyp
  FROM vbak
  INTO @lr_vbak
  WHERE vbeln = @p_vbeln.
IF sy-subrc = 0.
  SELECT vbeln,
         posnr,
         netwr,
         waerk
    FROM vbap
    INTO TABLE @lt_vbap
    WHERE vbeln = @lr_vbak-vbeln.
ENDIF.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname           = 'ZVB_SO_SF'
*   VARIANT            = ' '
*   DIRECT_CALL        = ' '
  IMPORTING
    fm_name            = lv_fmname
  EXCEPTIONS
    no_form            = 1
    no_function_module = 2
    OTHERS             = 3.

"Control Parameters
lr_ctrlop-getotf    = 'X'.
lr_ctrlop-no_dialog = 'X'.
lr_ctrlop-preview   = 'X'.

"Output Options
lr_outopt-tddest    = 'LP01'.

CALL FUNCTION lv_fmname
  EXPORTING
    control_parameters = lr_ctrlop
    output_options     = lr_outopt
    user_settings      = ' '
    p_vbeln            = p_vbeln
    lr_vbak            = lr_vbak
    lt_vbap            = lt_vbap
  IMPORTING
    job_output_info    = lt_otfdata
*   JOB_OUTPUT_OPTIONS =
  EXCEPTIONS
    formatting_error   = 1
    internal_error     = 2
    send_error         = 3
    user_canceled      = 4
    OTHERS             = 5.

DATA(lt_otf) = lt_otfdata-otfdata[].

*Covert OTF data into PDF
CALL FUNCTION 'CONVERT_OTF'
  EXPORTING
    format                = 'PDF'
  IMPORTING
    bin_filesize          = lv_bin_filesize
    bin_file              = lv_bin_xstr
  TABLES
    otf                   = lt_otf[]
    lines                 = lt_pdf_data[]
  EXCEPTIONS
    err_max_linewidth     = 1
    err_format            = 2
    err_conv_not_possible = 3
    err_bad_otf           = 4
    OTHERS                = 5.

***Xstring to binary
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  EXPORTING
    buffer     = lv_bin_xstr
  TABLES
    binary_tab = lt_binary_content.

***Sending Mail
*Mail Subject
lr_subject-obj_descr = 'Sales Order Details'.
lr_subject-sensitivty = 'F'.
lr_subject-doc_size = 1.

*Mail Body
lr_mailbody-line = 'Hi'.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.
lr_mailbody-line = ' '.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.
lr_mailbody-line = 'Please find the attached document as Sales Order Details'.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.
lr_mailbody-line = ' '.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.
lr_mailbody-line = '**This is system generated mail. Do not reply.'.
APPEND lr_mailbody TO lt_mailbody.
CLEAR:lr_mailbody.

lv_uname = sy-uname.     "Sender

*Reciever Details
lr_mailrec-receiver = 'abc@gmail.com'.
lr_mailrec-com_type = 'INT'.
lr_mailrec-rec_type = 'U'.
APPEND lr_mailrec TO lt_mailrec.

**** MAIL BODY-LENGTH
DESCRIBE TABLE lt_mailbody LINES lr_pack_list-body_num.
CLEAR lr_pack_list-transf_bin.
lr_pack_list-head_start = 1.
lr_pack_list-head_num = 0.
lr_pack_list-body_start = 1.
lr_pack_list-doc_type = 'RAW'.
APPEND lr_pack_list TO lt_pack_list.
CLEAR: lr_pack_list.

** Create attachment notification
lr_pack_list-transf_bin = 'X'.
lr_pack_list-head_start = 1.
lr_pack_list-head_num = 1.
lr_pack_list-body_start = 1.

*Attachmentt Details
DESCRIBE TABLE lt_binary_content LINES lr_pack_list-body_num.
lr_pack_list-doc_type = 'PDF'.
CONCATENATE 'Sales Order-' p_vbeln INTO lr_pack_list-obj_descr.
lr_pack_list-obj_name = 'SO Detaisl'.
lr_pack_list-doc_size = lr_pack_list-body_num * 255.
APPEND lr_pack_list TO lt_pack_list.
CLEAR:lr_pack_list.

*Send mail
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
  EXPORTING
    document_data              = lr_subject
    sender_address             = lv_uname
    sender_address_type        = 'B'
    commit_work                = 'X'
  TABLES
    packing_list               = lt_pack_list
    contents_txt               = lt_mailbody
    contents_hex               = lt_binary_content
    receivers                  = lt_mailrec
  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.

 Output: 

 

 


 

Comments

Popular posts from this blog

CDS Views: Table Functions with Example

Passing Dynamic Variables to SO10 TEXT

Adobe Form/PDF Form Introduction