‎2006 Nov 27 7:42 AM
HELLO
CAN SOMEONE TELL ME AS TO HOW A SMARTFORM IS CONVERTED TO HTE PDF FORMAT..........IN A STEP TO STEP PROCEDURE...............??
THANK YOU
SUPRIYA MANIK.
‎2006 Nov 27 7:50 AM
Hi
It needs to pick the OTF format, convert it to PDF and download it:
* Call Smartform
TABLES: SSFCTRLOP, SSFCRESCL
* No out but only to get OTF format
SSFCTRLOP-GETOTF = 'X'.
CALL FUNCTION SMARTFORM
EXPORTING
CONTROL_PARAMETERS = SSFCTRLOP
...........................
IMPORTING
JOB_OUTPUT_INFO = SSFCRESCL
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.
* Convert OTF to PDF
DATA: TAB_ARCHIVE LIKE STANDARD TABLE OF DOCS,
TLINES LIKE STANDARD TABLE OF TLINE.
DATA: BIN_FILESIZE TYPE I.
CALL FUNCTION 'CONVERT_OTF_2_PDF'
* EXPORTING
* USE_OTF_MC_CMD = 'X'
* ARCHIVE_INDEX =
IMPORTING
BIN_FILESIZE = BIN_FILESIZE
TABLES
OTF = SSFCRESCL-OTFDATA[]
DOCTAB_ARCHIVE = TAB_ARCHIVE[]
LINES = TLINES[]
EXCEPTIONS
ERR_CONV_NOT_POSSIBLE = 1
ERR_OTF_MC_NOENDMARKER = 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.
* Create PDF file
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = BIN_FILESIZE
FILENAME = 'C:test.pdf'
FILETYPE = 'BIN'
TABLES
DATA_TAB = TLINES[]
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.
* Open PDF
DATA: PROGRAM LIKE SOXPC-PATH.
CALL FUNCTION 'SO_PROGNAME_GET_WITH_PATH'
EXPORTING
DOCTYPE = 'PDF'
IMPORTING
PATHNAME = PROGRAM
EXCEPTIONS
PATH_NOT_FOUND = 1
PROGRAM_NOT_FOUND = 2
NO_BATCH = 3
X_ERROR = 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_EXECUTE'
EXPORTING
COMMANDLINE = 'C:test.pdf'
PROGRAM = PROGRAM
EXCEPTIONS
FRONTEND_ERROR = 1
NO_BATCH = 2
PROG_NOT_FOUND = 3
ILLEGAL_OPTION = 4
GUI_REFUSE_EXECUTE = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.Max
Message was edited by:
max bianchi
‎2006 Nov 27 7:44 AM
Hi Supriya
Just print the smartform to spool.
Then for converting that spool to pdf here is the complete code. It can also email that too.
Regards
Kathirvel
‎2006 Nov 27 7:44 AM
Hi,
Here is the sample code.
REPORT zzz_test3 .
Internal Table declarations
DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,
i_tline TYPE TABLE OF tline WITH HEADER LINE,
i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,
i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,
Objects to send mail.
i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
Work Area declarations
w_objhead TYPE soli_tab,
w_ctrlop TYPE ssfctrlop,
w_compop TYPE ssfcompop,
w_return TYPE ssfcrescl,
w_doc_chng typE sodocchgi1,
w_data TYPE sodocchgi1,
w_buffer TYPE string,"To convert from 132 to 255
Variables declarations
v_form_name TYPE rs38l_fnam,
v_len_in LIKE sood-objlen,
v_len_out LIKE sood-objlen,
v_len_outn TYPE i,
v_lines_txt TYPE i,
v_lines_bin TYPE i.
call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = 'ZZZ_TEST2'
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.
w_ctrlop-getotf = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
CALL FUNCTION v_form_name
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
user_settings = 'X'
IMPORTING
job_output_info = w_return
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.
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.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Convert PDF from 132 to 255.
LOOP AT i_tline.
Replacing space by ~
TRANSLATE i_tline USING ' ~'.
CONCATENATE w_buffer i_tline INTO w_buffer.
ENDLOOP.
Replacing ~ by space
TRANSLATE w_buffer USING '~ '.
DO.
i_record = w_buffer.
Appending 255 characters as a record
APPEND i_record.
SHIFT w_buffer LEFT BY 255 PLACES.
IF w_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Refresh: i_reclist,
i_objtxt,
i_objbin,
i_objpack.
clear w_objhead.
Object with PDF.
i_objbin[] = i_record[].
DESCRIBE TABLE i_objbin LINES v_lines_bin.
Object with main text of the mail.
i_objtxt = 'Find attached the output of the smart form.'.
APPEND i_objtxt.
i_objtxt = 'Regards,'.
APPEND i_objtxt.
i_objtxt = 'J.Jayanthi'.
APPEND i_objtxt.
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
Document information.
w_doc_chng-obj_name = 'Smartform'.
w_doc_chng-expiry_dat = sy-datum + 10.
w_doc_chng-obj_descr = 'Smart form output'.
w_doc_chng-sensitivty = 'F'. "Functional object
w_doc_chng-doc_size = v_lines_txt * 255.
Pack to main body as RAW.
Obj. to be transported not in binary form
CLEAR i_objpack-transf_bin.
Start line of object header in transport packet
i_objpack-head_start = 1.
Number of lines of an object header in object packet
i_objpack-head_num = 0.
Start line of object contents in an object packet
i_objpack-body_start = 1.
Number of lines of the object contents in an object packet
i_objpack-body_num = v_lines_txt.
Code for document class
i_objpack-doc_type = 'RAW'.
APPEND i_objpack.
Packing as PDF.
i_objpack-transf_bin = 'X'.
i_objpack-head_start = 1.
i_objpack-head_num = 1.
i_objpack-body_start = 1.
i_objpack-body_num = v_lines_bin.
i_objpack-doc_type = 'PDF'.
i_objpack-obj_name = 'Smartform'.
CONCATENATE 'Smartform_output' '.pdf'
INTO i_objpack-obj_descr.
i_objpack-doc_size = v_lines_bin * 255.
APPEND i_objpack.
Document information.
CLEAR i_reclist.
e-mail receivers.
i_reclist-receiver = 'x@yahoo.com'.
i_reclist-express = 'X'.
i_reclist-rec_type = 'U'. "Internet address
APPEND i_reclist.
Sending mail.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_chng
put_in_outbox = 'X'
TABLES
packing_list = i_objpack
object_header = w_objhead
contents_hex = i_objbin
contents_txt = i_objtxt
receivers = i_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.
ENDIF.
‎2006 Nov 27 7:50 AM
Hi
It needs to pick the OTF format, convert it to PDF and download it:
* Call Smartform
TABLES: SSFCTRLOP, SSFCRESCL
* No out but only to get OTF format
SSFCTRLOP-GETOTF = 'X'.
CALL FUNCTION SMARTFORM
EXPORTING
CONTROL_PARAMETERS = SSFCTRLOP
...........................
IMPORTING
JOB_OUTPUT_INFO = SSFCRESCL
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.
* Convert OTF to PDF
DATA: TAB_ARCHIVE LIKE STANDARD TABLE OF DOCS,
TLINES LIKE STANDARD TABLE OF TLINE.
DATA: BIN_FILESIZE TYPE I.
CALL FUNCTION 'CONVERT_OTF_2_PDF'
* EXPORTING
* USE_OTF_MC_CMD = 'X'
* ARCHIVE_INDEX =
IMPORTING
BIN_FILESIZE = BIN_FILESIZE
TABLES
OTF = SSFCRESCL-OTFDATA[]
DOCTAB_ARCHIVE = TAB_ARCHIVE[]
LINES = TLINES[]
EXCEPTIONS
ERR_CONV_NOT_POSSIBLE = 1
ERR_OTF_MC_NOENDMARKER = 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.
* Create PDF file
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = BIN_FILESIZE
FILENAME = 'C:test.pdf'
FILETYPE = 'BIN'
TABLES
DATA_TAB = TLINES[]
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.
* Open PDF
DATA: PROGRAM LIKE SOXPC-PATH.
CALL FUNCTION 'SO_PROGNAME_GET_WITH_PATH'
EXPORTING
DOCTYPE = 'PDF'
IMPORTING
PATHNAME = PROGRAM
EXCEPTIONS
PATH_NOT_FOUND = 1
PROGRAM_NOT_FOUND = 2
NO_BATCH = 3
X_ERROR = 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_EXECUTE'
EXPORTING
COMMANDLINE = 'C:test.pdf'
PROGRAM = PROGRAM
EXCEPTIONS
FRONTEND_ERROR = 1
NO_BATCH = 2
PROG_NOT_FOUND = 3
ILLEGAL_OPTION = 4
GUI_REFUSE_EXECUTE = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.Max
Message was edited by:
max bianchi
‎2006 Nov 27 12:06 PM
hi max,
when i try to convert my smartforms into pdf , i am getting error as
OTF end command // missing in OTF data.
my code looks like :
REPORT Z243_SMARTFORMS_PRACT1.
DATA: CTRLPARAMS TYPE SSFCTRLOP.
DATA: FM_NAME TYPE RS38L_FNAM,
FNAME TYPE STRING value 'c:\report.pdf',
BIN_SIZE TYPE I,
JOBOUTPUT TYPE SSFCRESCL,
it_result like table of itcoo,"JOBOUTPUT-OTFDATA
otf like table of itcoo,
doc like table of docs,
TLINES LIKE TABLE OF TLINE.
DATA: BEGIN OF STRUCT OCCURS 0.
INCLUDE STRUCTURE SPFLI.
DATA: END OF STRUCT.
DATA: ITAB LIKE TABLE OF STRUCT WITH HEADER LINE.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZSIVA_SMARTFORMS'
*
IMPORTING
FM_NAME = FM_NAME
.
IF SY-SUBRC <> 0.
ENDIF.
CTRLPARAMS-GETOTF = 'X'.
CALL FUNCTION FM_NAME
EXPORTING
CONTROL_PARAMETERS = CTRLPARAMS
IMPORTING
JOB_OUTPUT_INFO = JOBOUTPUT
TABLES
ITAB = ITAB
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
ENDIF.
CALL FUNCTION 'CONVERT_OTF_2_PDF'
IMPORTING
BIN_FILESIZE = BIN_SIZE
TABLES
otf = otf
doctab_archive = doc
lines = TLINES
.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = BIN_SIZE
FILENAME = FNAME
FILETYPE = 'bin'
TABLES
DATA_TAB = tlines.
i dnt know where i made mistake...pls help me
shan
‎2006 Nov 27 7:51 AM
hi,
All you have to do is call your SF to get OTF and then concert it to PDF. Works like charm:
DATA: p_output_options TYPE ssfcompop,
p_control_parameters TYPE ssfctrlop.
p_control_parameters-no_dialog = 'X'.
p_control_parameters-getotf = 'X'.
CALL FUNCTION v_func_name "call your smartform
EXPORTING
output_options = p_output_options
control_parameters = p_control_parameters
IMPORTING
job_output_info = s_job_output_info.
call function 'CONVERT_OTF_2_PDF'
tables
otf = s_job_output_info-otfdata
lines = t_pdfand if u need more u can check below links also
Check the below links..
VISIT THIS LINK
PLZ REWARD POINTS IF IT HELPS YOU
rgds
Anver
‎2006 Nov 27 8:00 AM
‎2006 Nov 27 9:14 AM
JAYANTI ITS GOING IN TO SHORT DUMP SAYING "FUNCTION PARAMETER 'JOB_OUTPUT_INFO' IS UNKNOWN"..............????WAT IS TO BE DONE NEXT??
‎2006 Nov 27 9:25 AM
&----
*& Report Z_MM_RE_INVOICE
*&
&----
*&
*&
&----
REPORT ZMM_RE_INVOICE1.
----
DECLARATION OF THE TABLES *
----
TABLES : RBKP , " Document Header: Invoice Receipt
LFA1 , " Vendor Master (General Section)
LFB1 , " Vendor Master (Company Code)
EKKO , " Purchasing Document Header
EKPO , " Purchasing Document Item
MAKT , " Material Descriptions
TVZBT , " Customers: Terms of Payment Texts
BSIK . " Accounting: Secondary Index for Vendors
----
DECLARATION OF THE WORKAREAS AND INTERNAL TABLES *
----
DATA : W_RBKP TYPE RBKP ,
W_LFA1 TYPE LFA1 ,
W_LFB1 TYPE LFB1 ,
W_EKKO TYPE EKKO ,
T_EKPO TYPE STANDARD TABLE OF EKPO INITIAL SIZE 0 WITH HEADER LINE,
W_MAKT TYPE MAKT ,
W_TVZBT TYPE TVZBT ,
W_BSIK TYPE BSIK ,
G_ADRNR TYPE LFA1-ADRNR ,
G_NETPR TYPE EKPO-NETPR ,
G_MENGE TYPE EKPO-MENGE ,
G_NETVAL TYPE EKPO-NETWR,
G_SALESTAX LIKE BSIK-WMWST,
G_SUBTOT TYPE I,
G_TOTAL TYPE I.
----
DECLARATION OF THE VARIABLE FOR THE FM NAME *
----
DATA : G_FUN TYPE RS38L_FNAM .
----
DECLARATION OF THE PARAMETERS *
----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS : P_EBELN LIKE EKKO-EBELN.
SELECTION-SCREEN END OF BLOCK B1 .
----
START OF SELECTION *
----
START-OF-SELECTION .
----
DATA RETRIEVAL INTO THE WORKAREAS AND INTERNAL TABLES *
----
SELECT SINGLE *
FROM EKKO
INTO W_EKKO
WHERE EBELN EQ P_EBELN .
SELECT *
FROM EKPO
INTO TABLE T_EKPO
WHERE EBELN EQ W_EKKO-EBELN .
LOOP AT T_EKPO .
CLEAR G_NETPR .
G_MENGE = T_EKPO-MENGE.
G_NETVAL = T_EKPO-MENGE * T_EKPO-NETPR.
G_SUBTOT = G_SUBTOT + G_NETVAL.
G_SALESTAX = W_BSIK-WMWST.
G_TOTAL = G_SALESTAX + G_SUBTOT. " +FREIGHT
ENDLOOP.
SELECT SINGLE *
FROM LFA1
INTO W_LFA1
WHERE LIFNR EQ W_EKKO-LIFNR .
G_ADRNR = W_LFA1-ADRNR .
SELECT SINGLE *
FROM LFB1
INTO W_LFB1
WHERE LIFNR EQ W_EKKO-LIFNR .
SELECT SINGLE *
FROM RBKP
INTO W_RBKP
WHERE BUKRS EQ W_LFB1-BUKRS .
SELECT SINGLE *
FROM MAKT
INTO W_MAKT
WHERE MATNR EQ T_EKPO-MATNR .
SELECT SINGLE *
FROM TVZBT
INTO W_TVZBT
WHERE ZTERM EQ W_LFB1-ZTERM .
SELECT SINGLE *
FROM BSIK
INTO W_BSIK
WHERE LIFNR = W_EKKO-LIFNR .
Internal Table declarations
DATA: I_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,
I_TLINE TYPE TABLE OF TLINE WITH HEADER LINE,
I_RECEIVERS TYPE TABLE OF SOMLRECI1 WITH HEADER LINE,
I_RECORD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
Objects to send mail.
I_OBJPACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
I_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
I_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
I_RECLIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
Work Area declarations
W_OBJHEAD TYPE SOLI_TAB,
W_CTRLOP TYPE SSFCTRLOP,
W_COMPOP TYPE SSFCOMPOP,
W_RETURN TYPE SSFCRESCL,
W_DOC_CHNG TYPE SODOCCHGI1,
W_DATA TYPE SODOCCHGI1,
W_BUFFER TYPE STRING,"To convert from 132 to 255
Variables declarations
V_FORM_NAME TYPE RS38L_FNAM,
V_LEN_IN LIKE SOOD-OBJLEN,
V_LEN_OUT LIKE SOOD-OBJLEN,
V_LEN_OUTN TYPE I,
V_LINES_TXT TYPE I,
V_LINES_BIN TYPE I.
W_CTRLOP-GETOTF = 'X'.
W_CTRLOP-NO_DIALOG = 'X'.
W_COMPOP-TDNOPREV = 'X'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZMM_SF_INVOICE1'
IMPORTING
FM_NAME = G_FUN .
CALL FUNCTION '/1BCDWB/SF00000213'
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = W_CTRLOP
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS = W_COMPOP
USER_SETTINGS = 'X'
W_RBKP = W_RBKP
W_LFA1 = W_LFA1
W_LFB1 = W_LFB1
W_EKKO = W_EKKO
W_MAKT = W_MAKT
W_TVZBT = W_TVZBT
W_BSIK = W_BSIK
G_ADRNR = G_ADRNR
G_NETPR = G_NETPR
G_MENGE = G_MENGE
G_NETVAL = G_NETVAL
G_SALESTAX = G_SALESTAX
G_SUBTOT = G_SUBTOT
G_TOTAL = G_TOTAL
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = W_RETURN
JOB_OUTPUT_OPTIONS =
TABLES
T_EKPO = T_EKPO
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.
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.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Convert PDF from 132 to 255.
LOOP AT I_TLINE.
Replacing space by ~
TRANSLATE I_TLINE USING ' ~'.
CONCATENATE W_BUFFER I_TLINE INTO W_BUFFER.
ENDLOOP.
Replacing ~ by space
TRANSLATE W_BUFFER USING '~ '.
DO.
I_RECORD = W_BUFFER.
Appending 255 characters as a record
APPEND I_RECORD.
SHIFT W_BUFFER LEFT BY 255 PLACES.
IF W_BUFFER IS INITIAL.
EXIT.
ENDIF.
ENDDO.
REFRESH: I_RECLIST,
I_OBJTXT,
I_OBJBIN,
I_OBJPACK.
CLEAR W_OBJHEAD.
Object with PDF.
I_OBJBIN[] = I_RECORD[].
DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.
Object with main text of the mail.
I_OBJTXT = 'Find attached the output of the smart form.'.
APPEND I_OBJTXT.
I_OBJTXT = 'Regards,'.
APPEND I_OBJTXT.
I_OBJTXT = 'J.Jayanthi'.
APPEND I_OBJTXT.
DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.
Document information.
W_DOC_CHNG-OBJ_NAME = 'Smartform'.
W_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.
W_DOC_CHNG-OBJ_DESCR = 'Smart form output'.
W_DOC_CHNG-SENSITIVTY = 'F'. "Functional object
W_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.
Pack to main body as RAW.
Obj. to be transported not in binary form
CLEAR I_OBJPACK-TRANSF_BIN.
Start line of object header in transport packet
I_OBJPACK-HEAD_START = 1.
Number of lines of an object header in object packet
I_OBJPACK-HEAD_NUM = 0.
Start line of object contents in an object packet
I_OBJPACK-BODY_START = 1.
Number of lines of the object contents in an object packet
I_OBJPACK-BODY_NUM = V_LINES_TXT.
Code for document class
I_OBJPACK-DOC_TYPE = 'RAW'.
APPEND I_OBJPACK.
Packing as PDF.
I_OBJPACK-TRANSF_BIN = 'X'.
I_OBJPACK-HEAD_START = 1.
I_OBJPACK-HEAD_NUM = 1.
I_OBJPACK-BODY_START = 1.
I_OBJPACK-BODY_NUM = V_LINES_BIN.
I_OBJPACK-DOC_TYPE = 'PDF'.
I_OBJPACK-OBJ_NAME = 'Smartform'.
CONCATENATE 'Smartform_output' '.pdf'
INTO I_OBJPACK-OBJ_DESCR.
I_OBJPACK-DOC_SIZE = V_LINES_BIN * 255.
APPEND I_OBJPACK.
Document information.
CLEAR I_RECLIST.
e-mail receivers.
I_RECLIST-RECEIVER = 'x@yahoo.com'.
I_RECLIST-EXPRESS = 'X'.
I_RECLIST-REC_TYPE = 'U'. "Internet address
APPEND I_RECLIST.
Sending mail.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = W_DOC_CHNG
PUT_IN_OUTBOX = 'X'
TABLES
PACKING_LIST = I_OBJPACK
OBJECT_HEADER = W_OBJHEAD
CONTENTS_HEX = I_OBJBIN
CONTENTS_TXT = I_OBJTXT
RECEIVERS = I_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.
ENDIF.
THIS IS MY CODE.TELL ME WHERE I AM GOING WRONG?????'
I NEED HELP.PLEASE..................
‎2006 Nov 27 9:32 AM
Hi
Delete * from here:
CALL FUNCTION '/1BCDWB/SF00000213'
EXPORTING
................
G_TOTAL = G_TOTAL
<b>* IMPORTING <----
</b>
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = W_RETURN
I think it better simply to use the fm:
<b>CALL FUNCTION 'CONVERT_OTF_2_PDF'</b>
instead of this your part of code:
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.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Convert PDF from 132 to 255.
LOOP AT I_TLINE.
Replacing space by ~
TRANSLATE I_TLINE USING ' ~'.
CONCATENATE W_BUFFER I_TLINE INTO W_BUFFER.
ENDLOOP.
Replacing ~ by space
TRANSLATE W_BUFFER USING '~ '.
DO.
I_RECORD = W_BUFFER.
Appending 255 characters as a record
APPEND I_RECORD.
SHIFT W_BUFFER LEFT BY 255 PLACES.
IF W_BUFFER IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Max
‎2006 Nov 27 9:57 AM
Hi,
Did you uncomment the importing in the fm as Max suggested?Moreover I have used the code in 4.6c.If you are using other versions,you need to take care of the changes in the function module.
CALL FUNCTION '/1BCDWB/SF00000213'
...
<b> IMPORTING</b>* DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = W_RETURN
JOB_OUTPUT_OPTIONS =
TABLES
T_EKPO = T_EKPO
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.
‎2006 Nov 27 9:34 AM
‎2006 Nov 27 9:35 AM
‎2006 Nov 27 9:46 AM
hello max bianchi
i am getting the same error............its not recognising the function parameter job_output_info.............tell me wat to do??
‎2006 Nov 27 9:50 AM
‎2006 Nov 27 10:00 AM
MAX I AM USING 4.7EE VERSION.NOW ITS RECOGNISING THE RETURN PARAMETER BUT IT IS NOT WRITING IN TO THE PDF FILE.ITSW IS JUST OPENING THE PDF FRAME AND SHOWING THE MESSAGE CALLED 'OTF end command // missing in OTF data' AND AFTER ENTERING IN TO PDF FRAMSE IT SAYS 'ADOBE RECORDER COULD NOT OPEN THE TEST FILE BECAUSE IT IS NOT SUPPORTED FILE TYPE OD BECAUSE THE FILE HAS BEEN DAMAGED(FOR EXAMPLE \,IT WAS SENT AS AN EMAIL ATTACHMENT N WASNT DECODED PROPERLY)'.............TELL ME WAT NEXT;)
I REALLY APPRECIATE UR HELP.
THANKS.
‎2006 Nov 27 10:07 AM
Just as I said, Try to use fm CONVERT_OTF_2_PDF to convert the otf to pdf
Max