2009 Dec 31 3:45 AM
Hi All,
i am trying to send smartform output as email. i am getting the email as attachment, but when i try to open that it saying
There was an error opening this document . The file is damaged and could not be repaired.
i am using FM CONVERT_OTF to convert the data into PDF and then converting this to 255.
wa_message-line = 'This is for sending the E-mail to every vendor'.
APPEND wa_message TO it_message.
wa_message-line = 'Regards,'.
APPEND wa_message-line TO it_message.
wa_message-line = 'Sarath.'.
APPEND wa_message-line TO it_message.
gd_doc_data-obj_langu = sy-langu.
DESCRIBE TABLE it_message LINES w_cnt.
READ TABLE it_message INDEX w_cnt.
gd_doc_data-doc_size = ( w_cnt - 1 ) * 255 + STRLEN( it_message ).
gd_doc_data-obj_name = 'SAPRPT'.
gd_doc_data-obj_descr = 'Volume Incentive'.
gd_doc_data-sensitivty = 'F'.
Describe the body of the message
CLEAR wa_packing_list.
REFRESH it_packing_list.
CLEAR:wa_packing_list-transf_bin. " = space.
wa_packing_list-head_start = 1.
wa_packing_list-head_num = 0.
wa_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES wa_packing_list-body_num.
wa_packing_list-body_num = w_cnt.
DESCRIBE TABLE it_tline2 LINES wa_packing_list-body_num.
wa_packing_list-doc_type = 'RAW'.
APPEND wa_packing_list TO it_packing_list.
Describe the attachment info
wa_packing_list-transf_bin = 'X'.
wa_packing_list-head_start = 1.
wa_packing_list-head_num = 1.
wa_packing_list-body_start = 1.
DESCRIBE TABLE it_tline2 LINES wa_packing_list-body_num.
DESCRIBE TABLE it_message LINES wa_packing_list-body_num.
wa_packing_list-doc_type = 'PDF'.
wa_packing_list-obj_name = 'Volume Incentive'.
wa_packing_list-obj_descr = 'Volume Incentive'.
READ TABLE it_tline2 INTO wa_tline2 INDEX wa_packing_list-body_num.
wa_packing_list-doc_size = ( wa_packing_list-body_num - 1 ) * 255 + STRLEN( wa_tline2 ) .
APPEND wa_packing_list TO it_packing_list.
*Populating Mail Recepients
wa_receivers-receiver = i am giving the email address.
wa_receivers-rec_type = 'U'.
wa_receivers-express = 'X'.
APPEND wa_receivers TO it_receivers.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = gd_doc_data
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = it_packing_list
contents_bin = it_tline2
contents_txt = it_message
receivers = it_receivers
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 = 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
please let me know on this.
Thanks.
2009 Dec 31 4:30 AM
Attach PDF mail in ABAP Program by Mohammed Rasul.S
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = sf_name
IMPORTING
fm_name = 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 FUNCTION 'SSF_GET_DEVICE_TYPE'
EXPORTING
i_language = sy-langu
i_application = 'SAPDEFAULT'
IMPORTING
e_devtype = g_rspoptype.
Gs_ssfcompop-tdprinter = g_rspoptype.
Gs_ssfctrlop-no_dialog = 'X'.
Gs_ssfctrlop-getotf = 'X'.
CALL FUNCTION fm_name
EXPORTING
control_parameters = gs_ssfctrlop
output_options = gs_ssfcompop
p_bukrs = p_bukrs
p_belnr = p_belnr
p_budat = p_budat
p_lifnr = p_lifnr
g_text = g_text
g_qsatz = g_qsatz
g_qscod = g_qscod
IMPORTING
document_output_info = gs_ssfcrespd
job_output_info = gs_ssfcrescl
job_output_options = gs_ssfcresop
TABLES
t_pay = t_pay
t_bseg = t_bseg
t_mseg = t_mseg
t_t052u = t_t052u
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = g_bin_filesize
TABLES
otf = gs_ssfcrescl-otfdata
lines = t_lines
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc NE 0.
ENDIF.
DATA: lt_mailrecipients TYPE STANDARD TABLE OF somlrec90 WITH HEADER LINE,
lt_mailtxt TYPE STANDARD TABLE OF soli WITH HEADER LINE,
lt_attachment TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
lt_mailsubject TYPE sodocchgi1,
lt_packing_list TYPE STANDARD TABLE OF sopcklsti1 WITH HEADER LINE,
reclist TYPE STANDARD TABLE OF somlreci1 WITH HEADER LINE,
gv_cnt TYPE i.
REFRESH: lt_mailrecipients,lt_mailtxt,lt_attachment,lt_packing_list,reclist.
CLEAR: lt_mailsubject, gv_cnt.
*Convert into 255 line
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
EXPORTING
line_width_dst = 255
TABLES
content_in = t_lines
content_out = lt_attachment.
*Put in the Mail Contents
lt_mailtxt = 'Following Payment Document Detail is Attached with this mail'.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Vendor Number : ' p_lifnr INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Company Code : ' p_bukrs INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Payment Doc No : ' p_belnr INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Fiscal Year : ' p_gjahr INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
DATA: g_tprdate(10) TYPE c.
CONCATENATE p_budat6(2) p_budat4(2) p_budat+0(4) INTO g_tprdate SEPARATED BY '.'.
CONCATENATE 'Posting Date : ' g_tprdate INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
*Pack the mail contents and attachment
lt_packing_list-transf_bin = space.
Lt_packing_list-head_start = 1.
Lt_packing_list-head_num = 0.
Lt_packing_list-body_start = 1.
Lt_packing_list-body_num = LINES ( lt_mailtxt ).
Lt_packing_list-doc_type = 'RAW'.
APPEND lt_packing_list. CLEAR lt_packing_list.
*
Lt_packing_list-transf_bin = 'X'.
Lt_packing_list-head_start = 1.
Lt_packing_list-head_num = 1.
Lt_packing_list-body_start = 1.
Lt_packing_list-body_num = STRLEN( lt_attachment ).
Lt_packing_list-doc_type = 'PDF'.
You can give RAW incase if you want just a txt file.
Lt_packing_list-obj_name = 'ZIVDOC.PDF'.
Lt_packing_list-obj_descr = 'ZIVDOC.PDF'.
Lt_packing_list-doc_size = lt_packing_list-body_num * 255.
APPEND lt_packing_list. CLEAR lt_packing_list.
*
Lt_mailsubject-obj_name = 'MAILATTCH'.
Lt_mailsubject-obj_langu = sy-langu.
Lt_mailsubject-obj_expdat = sy-datum + 20.
Lt_mailsubject-obj_descr = 'You have got mail'.
Lt_mailsubject-sensitivty = 'F'.
gv_cnt = LINES( lt_attachment ).
Lt_mailsubject-doc_size = ( gv_cnt - 1 ) * 255 + STRLEN(
lt_attachment ).
CLEAR reclist.
Reclist-receiver = sy-uname.
Reclist-rec_type = ' '."If my sap inbox
APPEND reclist.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = lt_mailsubject
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = lt_packing_list
contents_bin = lt_attachment
contents_txt = lt_mailtxt
receivers = 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 'Mail Sending Failed' TYPE 'I'.
ELSE.
MESSAGE 'Mail Sent Successfully' TYPE 'I'.
ENDIF.
Regards,
Mohammed Rasul.S
Attach PDF mail in ABAP Program by Mohammed Rasul.S
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = sf_name
IMPORTING
fm_name = 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 FUNCTION 'SSF_GET_DEVICE_TYPE'
EXPORTING
i_language = sy-langu
i_application = 'SAPDEFAULT'
IMPORTING
e_devtype = g_rspoptype.
Gs_ssfcompop-tdprinter = g_rspoptype.
Gs_ssfctrlop-no_dialog = 'X'.
Gs_ssfctrlop-getotf = 'X'.
CALL FUNCTION fm_name
EXPORTING
control_parameters = gs_ssfctrlop
output_options = gs_ssfcompop
p_bukrs = p_bukrs
p_belnr = p_belnr
p_budat = p_budat
p_lifnr = p_lifnr
g_text = g_text
g_qsatz = g_qsatz
g_qscod = g_qscod
IMPORTING
document_output_info = gs_ssfcrespd
job_output_info = gs_ssfcrescl
job_output_options = gs_ssfcresop
TABLES
t_pay = t_pay
t_bseg = t_bseg
t_mseg = t_mseg
t_t052u = t_t052u
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = g_bin_filesize
TABLES
otf = gs_ssfcrescl-otfdata
lines = t_lines
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc NE 0.
ENDIF.
DATA: lt_mailrecipients TYPE STANDARD TABLE OF somlrec90 WITH HEADER LINE,
lt_mailtxt TYPE STANDARD TABLE OF soli WITH HEADER LINE,
lt_attachment TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
lt_mailsubject TYPE sodocchgi1,
lt_packing_list TYPE STANDARD TABLE OF sopcklsti1 WITH HEADER LINE,
reclist TYPE STANDARD TABLE OF somlreci1 WITH HEADER LINE,
gv_cnt TYPE i.
REFRESH: lt_mailrecipients,lt_mailtxt,lt_attachment,lt_packing_list,reclist.
CLEAR: lt_mailsubject, gv_cnt.
*Convert into 255 line
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
EXPORTING
line_width_dst = 255
TABLES
content_in = t_lines
content_out = lt_attachment.
*Put in the Mail Contents
lt_mailtxt = 'Following Payment Document Detail is Attached with this mail'.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Vendor Number : ' p_lifnr INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Company Code : ' p_bukrs INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Payment Doc No : ' p_belnr INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Fiscal Year : ' p_gjahr INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
DATA: g_tprdate(10) TYPE c.
CONCATENATE p_budat6(2) p_budat4(2) p_budat+0(4) INTO g_tprdate SEPARATED BY '.'.
CONCATENATE 'Posting Date : ' g_tprdate INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
*Pack the mail contents and attachment
lt_packing_list-transf_bin = space.
Lt_packing_list-head_start = 1.
Lt_packing_list-head_num = 0.
Lt_packing_list-body_start = 1.
Lt_packing_list-body_num = LINES ( lt_mailtxt ).
Lt_packing_list-doc_type = 'RAW'.
APPEND lt_packing_list. CLEAR lt_packing_list.
*
Lt_packing_list-transf_bin = 'X'.
Lt_packing_list-head_start = 1.
Lt_packing_list-head_num = 1.
Lt_packing_list-body_start = 1.
Lt_packing_list-body_num = STRLEN( lt_attachment ).
Lt_packing_list-doc_type = 'PDF'.
You can give RAW incase if you want just a txt file.
Lt_packing_list-obj_name = 'ZIVDOC.PDF'.
Lt_packing_list-obj_descr = 'ZIVDOC.PDF'.
Lt_packing_list-doc_size = lt_packing_list-body_num * 255.
APPEND lt_packing_list. CLEAR lt_packing_list.
*
Lt_mailsubject-obj_name = 'MAILATTCH'.
Lt_mailsubject-obj_langu = sy-langu.
Lt_mailsubject-obj_expdat = sy-datum + 20.
Lt_mailsubject-obj_descr = 'You have got mail'.
Lt_mailsubject-sensitivty = 'F'.
gv_cnt = LINES( lt_attachment ).
Lt_mailsubject-doc_size = ( gv_cnt - 1 ) * 255 + STRLEN(
lt_attachment ).
CLEAR reclist.
Reclist-receiver = sy-uname.
Reclist-rec_type = ' '."If my sap inbox
APPEND reclist.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = lt_mailsubject
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = lt_packing_list
contents_bin = lt_attachment
contents_txt = lt_mailtxt
receivers = 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 'Mail Sending Failed' TYPE 'I'.
ELSE.
MESSAGE 'Mail Sent Successfully' TYPE 'I'.
ENDIF.
Regards,
Mohammed Rasul.S
2009 Dec 31 4:08 AM
Hi;
Do one thing, after conversion, please download the PDF locally and then try to open it.
else sample code can be found http://www.sap-img.com/smartforms/conversion-of-smartform-output-to-pdf.htm
Regards
Shashi
2009 Dec 31 6:18 AM
hi Sashi,
i have done that. when i download it is getting opened.
any how i have solved the issue by using the standard program BCS_EXAMPLE_6 (Send PDF Form by E-Mail).
Thanks for the Answer.
2009 Dec 31 4:30 AM
Attach PDF mail in ABAP Program by Mohammed Rasul.S
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = sf_name
IMPORTING
fm_name = 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 FUNCTION 'SSF_GET_DEVICE_TYPE'
EXPORTING
i_language = sy-langu
i_application = 'SAPDEFAULT'
IMPORTING
e_devtype = g_rspoptype.
Gs_ssfcompop-tdprinter = g_rspoptype.
Gs_ssfctrlop-no_dialog = 'X'.
Gs_ssfctrlop-getotf = 'X'.
CALL FUNCTION fm_name
EXPORTING
control_parameters = gs_ssfctrlop
output_options = gs_ssfcompop
p_bukrs = p_bukrs
p_belnr = p_belnr
p_budat = p_budat
p_lifnr = p_lifnr
g_text = g_text
g_qsatz = g_qsatz
g_qscod = g_qscod
IMPORTING
document_output_info = gs_ssfcrespd
job_output_info = gs_ssfcrescl
job_output_options = gs_ssfcresop
TABLES
t_pay = t_pay
t_bseg = t_bseg
t_mseg = t_mseg
t_t052u = t_t052u
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = g_bin_filesize
TABLES
otf = gs_ssfcrescl-otfdata
lines = t_lines
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc NE 0.
ENDIF.
DATA: lt_mailrecipients TYPE STANDARD TABLE OF somlrec90 WITH HEADER LINE,
lt_mailtxt TYPE STANDARD TABLE OF soli WITH HEADER LINE,
lt_attachment TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
lt_mailsubject TYPE sodocchgi1,
lt_packing_list TYPE STANDARD TABLE OF sopcklsti1 WITH HEADER LINE,
reclist TYPE STANDARD TABLE OF somlreci1 WITH HEADER LINE,
gv_cnt TYPE i.
REFRESH: lt_mailrecipients,lt_mailtxt,lt_attachment,lt_packing_list,reclist.
CLEAR: lt_mailsubject, gv_cnt.
*Convert into 255 line
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
EXPORTING
line_width_dst = 255
TABLES
content_in = t_lines
content_out = lt_attachment.
*Put in the Mail Contents
lt_mailtxt = 'Following Payment Document Detail is Attached with this mail'.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Vendor Number : ' p_lifnr INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Company Code : ' p_bukrs INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Payment Doc No : ' p_belnr INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
CONCATENATE 'Fiscal Year : ' p_gjahr INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
DATA: g_tprdate(10) TYPE c.
CONCATENATE p_budat6(2) p_budat4(2) p_budat+0(4) INTO g_tprdate SEPARATED BY '.'.
CONCATENATE 'Posting Date : ' g_tprdate INTO lt_mailtxt RESPECTING BLANKS.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
*Pack the mail contents and attachment
lt_packing_list-transf_bin = space.
Lt_packing_list-head_start = 1.
Lt_packing_list-head_num = 0.
Lt_packing_list-body_start = 1.
Lt_packing_list-body_num = LINES ( lt_mailtxt ).
Lt_packing_list-doc_type = 'RAW'.
APPEND lt_packing_list. CLEAR lt_packing_list.
*
Lt_packing_list-transf_bin = 'X'.
Lt_packing_list-head_start = 1.
Lt_packing_list-head_num = 1.
Lt_packing_list-body_start = 1.
Lt_packing_list-body_num = STRLEN( lt_attachment ).
Lt_packing_list-doc_type = 'PDF'.
You can give RAW incase if you want just a txt file.
Lt_packing_list-obj_name = 'ZIVDOC.PDF'.
Lt_packing_list-obj_descr = 'ZIVDOC.PDF'.
Lt_packing_list-doc_size = lt_packing_list-body_num * 255.
APPEND lt_packing_list. CLEAR lt_packing_list.
*
Lt_mailsubject-obj_name = 'MAILATTCH'.
Lt_mailsubject-obj_langu = sy-langu.
Lt_mailsubject-obj_expdat = sy-datum + 20.
Lt_mailsubject-obj_descr = 'You have got mail'.
Lt_mailsubject-sensitivty = 'F'.
gv_cnt = LINES( lt_attachment ).
Lt_mailsubject-doc_size = ( gv_cnt - 1 ) * 255 + STRLEN(
lt_attachment ).
CLEAR reclist.
Reclist-receiver = sy-uname.
Reclist-rec_type = ' '."If my sap inbox
APPEND reclist.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = lt_mailsubject
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = lt_packing_list
contents_bin = lt_attachment
contents_txt = lt_mailtxt
receivers = 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 'Mail Sending Failed' TYPE 'I'.
ELSE.
MESSAGE 'Mail Sent Successfully' TYPE 'I'.
ENDIF.
Regards,
Mohammed Rasul.S
2009 Dec 31 6:22 AM
hi,
i have done it in the same way as you have given me. but still it is the same.
solved the issue by using the standard program BCS_EXAMPLE_6 (Send PDF Form by E-Mail).
Thanks for the Answer.
2009 Dec 31 6:25 AM
the proble has been solved using by using the standard program BCS_EXAMPLE_6 (Send PDF Form by E-Mail).
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |