Application Development and Automation 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: 
Read only

SMARTFORMS TO PDF FORMAT?

Former Member
0 Likes
2,813

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,893

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

16 REPLIES 16
Read only

Former Member
0 Likes
1,893

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.

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/8cd6adbb-0301-0010-39ba-938c601d...

Regards

Kathirvel

Read only

jayanthi_jayaraman
Active Contributor
0 Likes
1,893

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.

Read only

Former Member
0 Likes
1,894

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

Read only

0 Likes
1,893

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

Read only

anversha_s
Active Contributor
0 Likes
1,893

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_pdf

and 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

Read only

Former Member
0 Likes
1,893

use the program RSTXPDFT4

Read only

Former Member
0 Likes
1,893

JAYANTI ITS GOING IN TO SHORT DUMP SAYING "FUNCTION PARAMETER 'JOB_OUTPUT_INFO' IS UNKNOWN"..............????WAT IS TO BE DONE NEXT??

Read only

Former Member
0 Likes
1,893

&----


*& 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..................

Read only

0 Likes
1,893

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

Read only

0 Likes
1,893

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.

Read only

Former Member
0 Likes
1,893

HELLOOOOOOOOOOOOOO ANYBODY THERE????????????

Read only

0 Likes
1,893

See my answer

Max

Read only

Former Member
0 Likes
1,893

hello max bianchi

i am getting the same error............its not recognising the function parameter job_output_info.............tell me wat to do??

Read only

0 Likes
1,893

Hi

Which release are you using?

Max

Read only

Former Member
0 Likes
1,893

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.

Read only

0 Likes
1,893

Just as I said, Try to use fm CONVERT_OTF_2_PDF to convert the otf to pdf

Max