Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Smartform to PDF

Former Member
0 Kudos

hello!

I have used the functions convert_otf and gui_download function modules.

on execution, i get the message "0 bytes transferred" i.e., I don't get any data in the table LT_Lines.

Please help me fix this.

13 REPLIES 13

Former Member
0 Kudos

In exporting to Smartform set

lv_control_parameters-get_otf = 'X'.

After return set

gt_otf[] = gv_job_output_info-otfdata[].

then call convert_otf passing :

tables

otf = gt_otf.

Check for the related types from th FM.

Awrd Points if useful

Bhupal

0 Kudos

Naaa, the LINES table in 'convert_otf' function doesn't get any data.

not working.

0 Kudos

mention TYPE = 'PDF' in CONVERT_OTF FM

https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/downloadSMARTFORMoutputtoPDF+file&

use this link...

Reward if useful

Regards

ANUPAM

Former Member
0 Kudos

hi,

follow the link u may get required information

http://mailman.mit.edu/pipermail/sap-wug/2003-March/008468.html

regards,

srikanth.

Former Member
0 Kudos

https://wiki.sdn.sap.com/wiki/display/Snippets/DownloadSMARTFORMoutputtoPDF+file.

this is a sample program provided by me in wiki... check it.

Reward if useful

Regards

ANUPAM

Former Member
0 Kudos

Hi,

Please check teh code given below.

CALL FUNCTION V_FORM_NAME

EXPORTING

...

...

IMPORTING

  • DOCUMENT_OUTPUT_INFO =

JOB_OUTPUT_INFO = W_RETURN

  • JOB_OUTPUT_OPTIONS =

...

.....

I_OTF[] = W_RETURN-OTFDATA[].

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = 'PDF'

MAX_LINEWIDTH = 132

IMPORTING

BIN_FILESIZE = V_LEN_IN

TABLES

OTF = I_OTF

LINES = I_TLINE

EXCEPTIONS

ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

OTHERS = 4.

IF SY-SUBRC <> 0.

ENDIF.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

bin_filesize = V_LEN_IN

..

filename = 'D:\SMARTFORM.PDF'

filetype = 'BIN'

....

IMPORTING

FILELENGTH = w_filesize

TABLES

data_tab = I_TLINE

....

.

IF sy-subrc <> 0.

MESSAGE i003(z00) WITH 'File not downloaded succesfully'.

ELSE.

MESSAGE i003(z00) WITH 'File Test.pdf downloaded succesfully '

'under D drive'.

ENDIF.

hope this helps.

0 Kudos

I'm using almost the same code , but ' 0 bytes are transferred ' and the LINES table doesn't get any data!

0 Kudos

hi,

Can you please paste ur code ?

0 Kudos

DATA: LS_CONTROL_PARAMETERS TYPE SSFCTRLOP,

LS_OUTPUT_OPTIONS TYPE SSFCOMPOP,

LS_JOB_OUTPUT_INFO TYPE SSFCRESCL,

LT_LINES TYPE TABLE OF TLINE,

L_DEVTYPE TYPE RSPOPTYPE,

L_SAM_HAWKINS TYPE INT4,

L_DOC TYPE DOCS OCCURS 0 WITH HEADER LINE.

CALL FUNCTION FM_NAME

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

CONTROL_PARAMETERS = LS_CONTROL_PARAMETERS

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

OUTPUT_OPTIONS = LS_OUTPUT_OPTIONS

TABLES

...

DATA : DATA1 TYPE INT4.

.

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = 'PDF'

MAX_LINEWIDTH = 132

  • ARCHIVE_INDEX = ' '

  • COPYNUMBER = 0

  • ASCII_BIDI_VIS2LOG = ' '

  • PDF_DELETE_OTFTAB = ' '

IMPORTING

BIN_FILESIZE = DATA1

  • BIN_FILE =

TABLES

OTF = LS_JOB_OUTPUT_INFO-OTFDATA

LINES = LT_LINES

EXCEPTIONS

ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

ERR_BAD_OTF = 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.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

  • BIN_FILESIZE =

FILENAME = 'C:\PAYROLLSUMM.PDF'

FILETYPE = 'BIN'

  • APPEND = ' '

  • WRITE_FIELD_SEPARATOR = ' '

  • HEADER = '00'

  • TRUNC_TRAILING_BLANKS = ' '

  • WRITE_LF = 'X'

  • COL_SELECT = ' '

  • COL_SELECT_MASK = ' '

  • DAT_MODE = ' '

  • CONFIRM_OVERWRITE = ' '

  • NO_AUTH_CHECK = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • WRITE_BOM = ' '

  • TRUNC_TRAILING_BLANKS_EOL = 'X'

  • WK1_N_FORMAT = ' '

  • WK1_N_SIZE = ' '

  • WK1_T_FORMAT = ' '

  • WK1_T_SIZE = ' '

  • WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE

  • IMPORTING

  • FILELENGTH =

TABLES

DATA_TAB = LT_LINES

  • FIELDNAMES =

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

OTHERS = 22

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

0 Kudos

SORRY GUYS..

i fixed it.. I had forgotten to import job_output_info in SF function.

former_member402443
Contributor
0 Kudos

Hi Arun,

Check this code.

This convert the smartform into a pdf file and save the file on local drive(presentation server).

TABLES: SCUSTOM, SBOOK, SPFLI.

SELECT-OPTIONS: S_ID FOR SCUSTOM-ID DEFAULT 1 TO 1,

S_FLI FOR SBOOK-CARRID DEFAULT 'LH' TO 'LH'.

DATA CUSTOMERS LIKE SCUSTOM OCCURS 100

WITH HEADER LINE.

DATA BOOKINGS LIKE SBOOK OCCURS 1000

WITH HEADER LINE.

DATA CONNECTIONS LIKE SPFLI OCCURS 1000

WITH HEADER LINE.

DATA: BEGIN OF SUMS OCCURS 10,

FORCURAM LIKE SBOOK-FORCURAM,

FORCURKEY LIKE SBOOK-FORCURKEY,

END OF SUMS.

DATA: cparam TYPE ssfctrlop,

outop TYPE ssfcompop,

fm_name TYPE rs38l_fnam,

my_tabix TYPE sy-tabix,

file_size TYPE i,

bin_filesize TYPE i.

DATA: tab_otf_data TYPE ssfcrescl,

pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE,

*itab LIKE TABLE OF zshail_t1 WITH HEADER LINE,

*otab TYPE TABLE OF sflight WITH HEADER LINE,

V_FORM_NAME TYPE RS38L_FNAM,

tab_otf_final TYPE itcoo OCCURS 0 WITH HEADER LINE.

start-of-selection.

                                  • suppressing the dialog box****************************

outop-tddest = 'LP01'.

cparam-no_dialog = 'X'.

cparam-preview = space.

cparam-getotf = 'X'.

SELECT * FROM SCUSTOM INTO TABLE CUSTOMERS

WHERE ID IN S_ID

ORDER BY PRIMARY KEY.

SELECT * FROM SBOOK INTO TABLE BOOKINGS

WHERE CUSTOMID IN S_ID AND CARRID IN S_FLI

ORDER BY PRIMARY KEY.

SELECT * FROM SPFLI INTO TABLE CONNECTIONS

FOR ALL ENTRIES IN BOOKINGS

WHERE CARRID = BOOKINGS-CARRID

AND CONNID = BOOKINGS-CONNID

ORDER BY PRIMARY KEY.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZMAN_FLIGHTFORMCOPY'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

FM_NAME = V_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.

CALL FUNCTION V_FORM_NAME

EXPORTING

CONTROL_PARAMETERS = cparam

OUTPUT_OPTIONS = outop

USER_SETTINGS = space

IMPORTING

JOB_OUTPUT_INFO = tab_otf_data

TABLES

IT_ITAB = CUSTOMERS

IT_ITAB1 = BOOKINGS

IT_ITAB2 = CONNECTIONS

IT_TEMP = BOOKINGS

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.

*********appending the otf data into the final table

*********************

tab_otf_final[] = tab_otf_data-otfdata[].

*removing the initial and final markers from the OTF data*********

DELETE tab_otf_data-otfdata WHERE tdprintcom = '//'.

                                • searching for the end-of-page in OTF

table***********

READ TABLE tab_otf_final WITH KEY tdprintcom = 'EP'.

my_tabix = sy-tabix + 1.

                      • appending the modified OTF table to the final OTF

table***

*INSERT LINES OF tab_otf_data-otfdata INTO tab_otf_final INDEX my_tabix

.

                      • converting OTF data into pdf

  • data**************************

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = 'PDF'

max_linewidth = 132

  • ARCHIVE_INDEX = ' '

  • COPYNUMBER = 0

  • ASCII_BIDI_VIS2LOG = ' '

IMPORTING

bin_filesize = bin_filesize

  • BIN_FILE =

TABLES

otf = tab_otf_final

lines = pdf_tab

EXCEPTIONS

err_max_linewidth = 1

err_format = 2

err_conv_not_possible = 3

err_bad_otf = 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.

************downloading the converted PDF data to your local

PC*******

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

bin_filesize = bin_filesize

filename = 'C:\TEST.PDF'

filetype = 'BIN'

  • APPEND = ' '

  • WRITE_FIELD_SEPARATOR = ' '

  • HEADER = '00'

  • TRUNC_TRAILING_BLANKS = ' '

  • WRITE_LF = 'X'

  • COL_SELECT = ' '

  • COL_SELECT_MASK = ' '

  • DAT_MODE = ' '

  • CONFIRM_OVERWRITE = ' '

  • NO_AUTH_CHECK = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • WRITE_BOM = ' '

  • TRUNC_TRAILING_BLANKS_EOL = 'X'

IMPORTING

filelength = file_size

TABLES

data_tab = pdf_tab

  • FIELDNAMES =

EXCEPTIONS

file_write_error = 1

no_batch = 2

gui_refuse_filetransfer = 3

invalid_type = 4

no_authority = 5

unknown_error = 6

header_not_allowed = 7

separator_not_allowed = 8

filesize_not_allowed = 9

header_too_long = 10

dp_error_create = 11

dp_error_send = 12

dp_error_write = 13

unknown_dp_error = 14

access_denied = 15

dp_out_of_memory = 16

disk_full = 17

dp_timeout = 18

file_not_found = 19

dataprovider_exception = 20

control_flush_error = 21

OTHERS = 22.

Reward Points, if useful.

Regards,

Manoj Kumar

Former Member
0 Kudos

hi Arun,

There is a way to download smartform in PDF format.

Please do the following:

1. Print the smartform to the spool.

2. Note the spool number.

3. Download a PDF file (Acrobat Reader) version of the spool by running Program RSTXPDFT4 and entering the

noted spool number.

Reward if useful

thanks,

swaroop

Former Member
0 Kudos

Hi Arun,

i think this can help u,just hv a look on that.

DATA: FM_NAME TYPE RS38L_FNAM.

DATA: WA_CTRLOP TYPE SSFCTRLOP, "Smartform control structure

WA_OUTOPT TYPE SSFCOMPOP, "Smart Composer Options

T_OTFDATA TYPE SSFCRESCL, "Return value at end of form printing

T_PDF_TAB LIKE TLINE OCCURS 0 WITH HEADER LINE. "SAP Acripts: Text lines

DATA: T_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE, "OTF Structure

W_FILESIZE TYPE I,

W_BIN_FILESIZE TYPE I.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZCS_FORM6'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

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.

WA_CTRLOP-GETOTF = 'X'. "Return of OTF Table.No printing,display,or faxing

WA_CTRLOP-NO_DIALOG = 'X'. "SAP Smartform: General indicator

WA_OUTOPT-TDNOPREV = 'X'. "No print preview

CALL FUNCTION FM_NAME " '/1BCDWB/SF00000699'

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

CONTROL_PARAMETERS = WA_CTRLOP

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

OUTPUT_OPTIONS = WA_OUTOPT

USER_SETTINGS = 'X'

IMPORTING

  • DOCUMENT_OUTPUT_INFO =

JOB_OUTPUT_INFO = T_OTFDATA

  • JOB_OUTPUT_OPTIONS =

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.

T_OTF[] = T_OTFDATA-OTFDATA[].

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = 'PDF'

MAX_LINEWIDTH = 132

  • ARCHIVE_INDEX = ' '

  • COPYNUMBER = 0

  • ASCII_BIDI_VIS2LOG = ' '

  • PDF_DELETE_OTFTAB = ' '

IMPORTING

BIN_FILESIZE = W_BIN_FILESIZE

  • BIN_FILE =

TABLES

OTF = T_OTF

LINES = T_PDF_TAB

EXCEPTIONS

ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

ERR_BAD_OTF = 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.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

BIN_FILESIZE = W_BIN_FILESIZE

  • CODEPAGE = ' '

FILENAME = 'D:\TEST11.PDF'

FILETYPE = 'BIN'

  • MODE = ' '

  • WK1_N_FORMAT = ' '

  • WK1_N_SIZE = ' '

  • WK1_T_FORMAT = ' '

  • WK1_T_SIZE = ' '

  • COL_SELECT = ' '

  • COL_SELECTMASK = ' '

  • NO_AUTH_CHECK = ' '

IMPORTING

FILELENGTH = W_FILESIZE

TABLES

DATA_TAB = T_PDF_TAB

  • FIELDNAMES =

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

INVALID_FILESIZE = 3

INVALID_TYPE = 4

NO_BATCH = 5

UNKNOWN_ERROR = 6

INVALID_TABLE_WIDTH = 7

GUI_REFUSE_FILETRANSFER = 8

CUSTOMER_ERROR = 9

NO_AUTHORITY = 10

OTHERS = 11

.

IF SY-SUBRC = 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

WRITE:/ 'THE PDF FILE IS SUCCESSFULLY CONVERTED'.

ENDIF.

if u hv any doubts regarding this fell free to ask.

if it is useful reward points.

Thank you

chandu