Sending Adobe form as PDF Attachment in mail using Classes and Methods

*&---------------------------------------------------------------------*
*& Report ZCM_ADOBE_SALES_01
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zcm_adobe_sales_email_01.

PARAMETERS p_vbeln TYPE vbeln_va.

DATA: lr_param     TYPE sfpoutputparams,
      lf_fun_mod   TYPE funcname,
      lf_res       TYPE sfpjoboutput,

      lr_pdf       TYPE fpformoutput,
      lt_pdf_tab   TYPE solix_tab,

      lo_req       TYPE REF TO cl_bcs,
      lo_sap_user  TYPE REF TO cl_sapuser_bcs,
      lo_ext_user  TYPE REF TO cl_cam_address_bcs,
      lo_ext_user1 TYPE REF TO cl_cam_address_bcs,
      lo_document  TYPE REF TO cl_document_bcs,
      lt_text      TYPE soli_tab,
      lr_text      TYPE soli,
      lv_pdf_sub   TYPE so_obj_des,
      lf_result    TYPE os_boolean.

lr_param-dest     = 'LP01'.
lr_param-nodialog = abap_true.
lr_param-preview  = abap_true.

lr_param-getpdf   = abap_true.

lr_text-line = 'Find the attachement'.
APPEND lr_text TO lt_text.
CLEAR lr_text.

CONCATENATE TEXT-006 p_vbeln INTO lv_pdf_sub.

CALL FUNCTION 'FP_JOB_OPEN'
  CHANGING
    ie_outputparams = lr_param
  EXCEPTIONS
    cancel          = 1
    usage_error     = 2
    system_error    = 3
    internal_error  = 4
    OTHERS          = 5.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
  EXPORTING
    i_name     = 'ZAF_CM_ADOBE_SO_01'
  IMPORTING
    e_funcname = lf_fun_mod
*   E_INTERFACE_TYPE           =
*   EV_FUNCNAME_INBOUND        =
  .


CALL FUNCTION lf_fun_mod
  EXPORTING
*   /1BCDWB/DOCPARAMS  =
    p_vbeln            = p_vbeln
  IMPORTING
    /1bcdwb/formoutput = lr_pdf
  EXCEPTIONS
    usage_error        = 1
    system_error       = 2
    internal_error     = 3
    OTHERS             = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  EXPORTING
    buffer     = lr_pdf-pdf
*   APPEND_TO_TABLE       = ' '
* IMPORTING
*   OUTPUT_LENGTH         =
  TABLES
    binary_tab = lt_pdf_tab.

TRY.
    CALL METHOD cl_bcs=>create_persistent
      RECEIVING
        result = lo_req.
  CATCH cx_send_req_bcs.
ENDTRY.

TRY.
    CALL METHOD cl_sapuser_bcs=>create
      EXPORTING
        i_user = 'ABAP36'
      RECEIVING
        result = lo_sap_user.
  CATCH cx_address_bcs.
ENDTRY.

*send mail With in sap
TRY.
    CALL METHOD lo_req->add_recipient
      EXPORTING
        i_recipient = lo_sap_user.
  CATCH cx_send_req_bcs.
ENDTRY.

*send mail outside sap
*Receiver mail id
TRY.
    CALL METHOD cl_cam_address_bcs=>create_internet_address
      EXPORTING
        i_address_string = 'abc@gmail.com'
      RECEIVING
        result           = lo_ext_user.
  CATCH cx_address_bcs.
ENDTRY.

*CC mail ID
TRY.
    CALL METHOD cl_cam_address_bcs=>create_internet_address
      EXPORTING
        i_address_string = 'def@gmail.com'
*       i_address_name   =
*       i_incl_sapuser   =
      RECEIVING
        result           = lo_ext_user1.
  CATCH cx_address_bcs.
ENDTRY.

*Add receiver mail id
TRY.
    CALL METHOD lo_req->add_recipient
      EXPORTING
        i_recipient = lo_ext_user.
  CATCH cx_send_req_bcs.
ENDTRY.

*Adding mail id to CC
TRY.
    CALL METHOD lo_req->add_recipient
      EXPORTING
        i_recipient = lo_ext_user1
*       i_express   =
        i_copy      = 'X'             "CC
*       i_blind_copy =                "BCC
*       i_no_forward =
      .
  CATCH cx_send_req_bcs.
ENDTRY.

*Mail Body
TRY.
    CALL METHOD cl_document_bcs=>create_document
      EXPORTING
        i_type    = 'RAW'
        i_subject = TEXT-001
        i_text    = lt_text
      RECEIVING
        result    = lo_document.
  CATCH cx_document_bcs.
ENDTRY.

*Add Attachement
TRY.
    CALL METHOD lo_document->add_attachment
      EXPORTING
        i_attachment_type    = 'PDF'
        i_attachment_subject = lv_pdf_sub
        i_att_content_hex    = lt_pdf_tab.
  CATCH cx_document_bcs.
ENDTRY.

TRY.
    CALL METHOD lo_req->set_document
      EXPORTING
        i_document = lo_document.
  CATCH cx_send_req_bcs.
ENDTRY.

TRY.
    CALL METHOD lo_req->set_send_immediately
      EXPORTING
        i_send_immediately = abap_true.
  CATCH cx_send_req_bcs.
ENDTRY.

TRY.
    CALL METHOD lo_req->send
*  EXPORTING
*    i_with_error_screen = SPACE
      RECEIVING
        result = lf_result.
  CATCH cx_send_req_bcs.
ENDTRY.

IF lf_result IS NOT INITIAL.
  COMMIT WORK.
ENDIF.

CALL FUNCTION 'FP_JOB_CLOSE'
  IMPORTING
    e_result       = lf_res
  EXCEPTIONS
    usage_error    = 1
    system_error   = 2
    internal_error = 3
    OTHERS         = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

 

Comments

Popular posts from this blog

CDS Views: Table Functions with Example

Passing Dynamic Variables to SO10 TEXT

Adobe Form/PDF Form Introduction