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
Post a Comment