cancel
Showing results for 
Search instead for 
Did you mean: 

Pdf image is scattered when i received pdf as attachment

Former Member
0 Kudos

Hi,

Thanks for replies in my last two threads.

No i am able to send pdf as e-mail attachment. And receiver side it successfully receives it but my image in pdf is completly scattered. I can understand how this is happed . i also check in lower version of adobe reader but resule is same.

Can any one suggest me what problem in this ?

Please i need some special comment about this.

Help will be rewarded.

Regards,

Gurprit bhatia

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

If you are working with smartforms please check the below code for emailing the pdf

*********Variable Declarations *****************************

DATA: gv_form_name TYPE rs38l_fnam, " Used to store the function module generated by Smartform

gv_bin_filesize TYPE i, " Store the file size

gv_pos TYPE i,

gv_len TYPE i,

gv_tab_lines TYPE i.

********Constants *******************************************

Data : gc_text(11) type c value 'Form Output',

gc_tst(3) type c value 'TST',

gc_testing(7) type c value 'Testing'.

*********Work Area Declarations *****************************

DATA: gs_docdata TYPE sodocchgi1, " Data of an object which can be changed

gs_ctrlop TYPE ssfctrlop, " Smart Forms: Control structure

gs_outopt TYPE ssfcompop, " SAP Smart Forms: Smart Composer (transfer) options

gs_otfdata TYPE ssfcrescl, " Smart Forms: Return value at end of form printing

gs_reclist TYPE somlreci1, " SAPoffice: Structure of the API Recipient List

gs_pdf_tab TYPE tline, " Workarea for SAP Script Text Lines

gs_objbin TYPE solisti1, " SAPoffice: Single List with Column Length 255

gs_objpack TYPE sopcklsti1. " SAPoffice: Description of Imported Object Components

*********Internal tables Declarations *****************************

DATA: gt_reclist TYPE TABLE OF somlreci1, " SAPoffice: Structure of the API Recipient List

gt_pdf_tab TYPE TABLE OF tline, " SAPscript: Text Lines

gt_otf TYPE TABLE OF itcoo, " OTF Structure

gt_objbin TYPE TABLE OF solisti1, " SAPoffice: Single List with Column Length 255

gt_objpack TYPE TABLE OF sopcklsti1. " SAPoffice: Description of Imported Object Components

CLEAR : gv_form_name,

gs_ctrlop,

gs_outopt,

gs_otfdata,

gv_bin_filesize,

gv_pos,

gv_len,

gv_tab_lines.

START-OF-SELECTION.

  • Generate Function Module name

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = 'ZPDF_G'

IMPORTING

fm_name = gv_form_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.

  • Assigning values to Form Control Structure and Form Composer

gs_ctrlop-getotf = 'X'.

gs_ctrlop-no_dialog = 'X'.

gs_outopt-tdnoprev = 'X'.

  • Getting the OTFDATA

CALL FUNCTION gv_form_name

EXPORTING

control_parameters = gs_ctrlop

output_options = gs_outopt

user_settings = 'X'

IMPORTING

job_output_info = gs_otfdata

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

  • Assigning the OTFDATA to OTF Structure table

CLEAR gt_otf.

gt_otf[] = gs_otfdata-otfdata[].

  • Convert the OTF DATA to SAP Script Text lines

CLEAR gt_pdf_tab.

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = 'PDF'

max_linewidth = 132

IMPORTING

bin_filesize = gv_bin_filesize

TABLES

otf = gt_otf

lines = gt_pdf_tab

EXCEPTIONS

err_max_linewidth = 1

err_format = 2

err_conv_not_possible = 3

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

  • Assigning the Description of the object sent in the mail

CLEAR gs_docdata.

gs_docdata-obj_name = gc_tst.

gs_docdata-obj_descr = gc_testing.

  • Assigning the email id to Structure of the API Recipient List table

CLEAR : gt_reclist, gs_reclist.

gs_reclist-receiver = 'minal.nampalliwar@wipro.com'.

gs_reclist-rec_type = 'U'.

APPEND gs_reclist TO gt_reclist.

  • Passing the SAP Script text lines to SAPoffice: Single List with Column Length 255 table

CLEAR : gs_objbin, gs_pdf_tab.

LOOP AT gt_pdf_tab INTO gs_pdf_tab.

gv_pos = 255 - gv_len.

IF gv_pos > 134. "length of pdf_table

gv_pos = 134.

ENDIF.

gs_objbin+gv_len = gs_pdf_tab(gv_pos).

gv_len = gv_len + gv_pos.

IF gv_len = 255. "length of out (contents_bin)

APPEND gs_objbin TO gt_objbin.

CLEAR: gs_objbin, gv_len.

IF gv_pos < 134.

gs_objbin = gs_pdf_tab+gv_pos.

gv_len = 134 - gv_pos.

ENDIF.

ENDIF.

ENDLOOP.

IF gv_len > 0.

APPEND gs_objbin TO gt_objbin.

ENDIF.

  • Filling the details in SAPoffice: Description of Imported Object Components table

DESCRIBE TABLE gt_objbin LINES gv_tab_lines.

CLEAR gs_objbin.

READ TABLE gt_objbin INTO gs_objbin INDEX gv_tab_lines.

IF sy-subrc = 0.

gs_objpack-doc_size = ( gv_tab_lines - 1 ) * 255 + STRLEN( gs_objbin ).

gs_objpack-transf_bin = 'X'.

gs_objpack-head_start = 1.

gs_objpack-head_num = 0.

gs_objpack-body_start = 1.

gs_objpack-body_num = gv_tab_lines.

gs_objpack-doc_type = 'PDF'.

gs_objpack-obj_name = 'ATTACHMENT'.

gs_objpack-obj_descr = 'test'.

APPEND gs_objpack TO gt_objpack.

ENDIF.

  • Sending the Form Output in the PDF format to email

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = gs_docdata

put_in_outbox = 'X'

commit_work = 'X'

TABLES

packing_list = gt_objpack

contents_bin = gt_objbin

receivers = gt_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 <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

WRITE 'Sent Successfully'.

ENDIF.

SUBMIT rsconn01

WITH mode EQ 'INT'

AND RETURN.

END-OF-SELECTION.