1: Call form:
  TRY .
* First get name of the generated function module
      CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
        EXPORTING
          i_name     = p_formname
        IMPORTING
          e_funcname = lv_form_name.
    CATCH cx_fp_api_repository INTO obj_root.
      wa_err-person = p_mailtab-perid.
      wa_err-desc   = obj_root->get_text( ).
      APPEND wa_err TO it_err.
      CLEAR wa_err.
  ENDTRY.
2: Set output params. open Job for processing:
* Set output parameters and open spool job
  wa_outputparams-nodialog = c_x.    " suppress printer dialog popup
  wa_outputparams-preview  = space.    " launch print preview
  wa_outputparams-getpdf = c_x.
  CALL FUNCTION 'FP_JOB_OPEN'
    CHANGING
      ie_outputparams = wa_outputparams
    EXCEPTIONS
      cancel          = 0
      usage_error     = 0
      system_error    = 0
      internal_error  = 0
      OTHERS          = 0.
* Processing should continue inspite of errors
* so made Sy-Subrc as 0
* Set form language and country (->form locale)
  wa_docparams-langu   = lc_language.
  wa_docparams-country = lc_country.
3: Call the Form. Also error from an adobe form can be caught in following way:
* Pass Data to the Form Interface
  CALL FUNCTION lv_form_name
    EXPORTING
      /1bcdwb/docparams  = wa_docparams
      t_stud_data        = wa_mailtab1
    IMPORTING
      /1bcdwb/formoutput = wa_pdfobject
    EXCEPTIONS
      usage_error        = 1
      system_error       = 2
      internal_error     = 3
      OTHERS             = 4.
  CLEAR wa_err.
* This FM captures any Error which has resulted during
* Form generation
  CALL FUNCTION 'FP_GET_LAST_ADS_ERRSTR'
    IMPORTING
      e_adserrstr = wa_err-desc.
5: Convert PDF to SOLIX:
This is most important for PDF as an attachment
* Convert PDF Object to type SOLIX
  CALL METHOD cl_document_bcs=>xstring_to_solix
    EXPORTING
      ip_xstring = wa_pdfobject-pdf
    RECEIVING
      rt_solix   = it_attachment.
6: Mail sending part:
* Initialize Mail creation
  TRY.
      obj_send_request = cl_bcs=>create_persistent( ).
* Set sender Email address
      obj_sender =
      cl_cam_address_bcs=>create_internet_address( lc_id_from ).
      obj_send_request->set_sender( i_sender = obj_sender ).
7: set email IDs:
* Get Recipient's Email IDs
      MOVE p_mailtab-email TO lv_recv_id.
      obj_recipient =
           cl_cam_address_bcs=>create_internet_address( lv_recv_id ).
      obj_send_request->add_recipient(
      i_recipient = obj_recipient
      i_express = c_x
      ).
8: Attaching the Doc and sending mail:
      " create documents
      obj_document = cl_document_bcs=>create_document(
      i_type = lc_type_raw " RAW document format
      i_text = it_contents
      i_subject = lv_subject
      ).
      obj_document->add_attachment(
      i_attachment_type = lc_type_pdf " add PDF attachment
      i_attachment_subject = 'Official Notice'(046)
      i_att_content_hex = it_attachment
      ).
      obj_send_request->set_document( obj_document ).
**********************************************************************
      " send email
      obj_send_request->set_send_immediately( c_x ).
      lv_ret = obj_send_request->send( ).                   "#EC NEEDED
    CATCH cx_bcs INTO obj_root.
      wa_err-person = p_mailtab-perid.
      wa_err-desc   = obj_root->get_text( ).
      APPEND wa_err TO it_err.
      CLEAR wa_err.
      p_return = 1.
  ENDTRY.
  COMMIT WORK.
* Close spool job
  CALL FUNCTION 'FP_JOB_CLOSE'
    EXCEPTIONS
      usage_error    = 0
      system_error   = 0
      internal_error = 0
      OTHERS         = 0.
* Should not throw Errors and processing should continue
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
 
 
 
No comments:
Post a Comment