on 10-09-2013 5:54 AM
Hi Experts ,
i am working on script , which i want to convert into pdf .
i am using the following coding.
*To specify Printername*
struct-tddest = 'LP'.
*To specify no Print Preview*
struct-tdnoprev = 'X'.
*To access the SAP Script output in OTF format*
struct-tdgetotf = 'X'.
PERFORM open_form .
*******************
CALL FUNCTION 'OPEN_FORM'
EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX =
* ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
DIALOG = 'SPACE'
FORM = 'ZEXCISEINVPRN'
LANGUAGE = SY-LANGU
OPTIONS = STRUCT
* MAIL_SENDER =
* MAIL_RECIPIENT =
* MAIL_APPL_OBJECT =
* RAW_DATA_INTERFACE = '*'
* SPONUMIV =
IMPORTING
LANGUAGE = sy-langu
* NEW_ARCHIVE_PARAMS =
RESULT = IT_CONT
EXCEPTIONS
********************
PERFORM close_form .
******************************
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
* RESULT =
* RDI_RESULT =
TABLES
OTFDATA = DATAB[]
********************************
PERFORM CONVERT_PDF.
******************************
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
** MAX_LINEWIDTH = 132
** ARCHIVE_INDEX = ' '
** COPYNUMBER = 0
** ASCII_BIDI_VIS2LOG = ' '
** PDF_DELETE_OTFTAB = ' '
** PDF_USERNAME = ' '
* IMPORTING
BIN_FILESIZE = BINFILESIZE
** BIN_FILE =
* TABLES
otf = DATAB[]
lines = PDFTAB[] ( chines like char , laguage pass to fm is "E" )
CALL METHOD cl_gui_frontend_services=>file_save_dialog
* EXPORTING
* window_title =
* default_extension =
* default_file_name =
* with_encoding =
* file_filter =
* initial_directory =
* prompt_on_overwrite = 'X'
CHANGING
filename = FILE_NAME
path = FILE_PATH
fullpath = FULL_PATH
* user_action =
* file_encoding =
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 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.
concatenate FULL_PATH '.pdf' into full_path.
****DOWNLOAD
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = BINFILESIZE
filename = FULL_PATH "FILE_NAME " 'D:\T1.pdf'
FILETYPE = 'BIN'
* APPEND = 'X'
* 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
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* IMPORTING
* FILELENGTH =
tables
data_tab = PDFTAB[]
* FIELDNAMES =
EXCEPTIONS
**********************************
currently using ECC6
1. in debugger when we check the "convert_pdf " function module
the output table show chines like character in pdftab[].
2. The pdf format is generated but no values dispaly in the pdf file.
only text which are defined in the script like " delivery no" "date " etc.
shows but no data .
kindly help to solve the problem.
with thanks and regards,
vikas
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI VIkas,
you have to include the FM WRITE_FORM , you must first pass the value using this method for getting the values in the output.
Make sure to Have the write_form function module. search out for how to implement it. there are lots of answers for it.
Refer:SAP script WRITE_FORM | SCN
Regards,
Sivaganesh
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI vikas,
I have worked on your requirement and its working fine for me. I have attached my sample program to download the sapscript to pdf . check the program out.
TABLES vbak.
TYPES:BEGIN OF ty_vbak,
vbeln TYPE VBELN_VA,
AUART TYPE AUART,
VKORG TYPE VKORG,
NETWR TYPE NETWR_AK,
WAERK TYPE WAERK,
END OF ty_vbak.
TYPES:Begin of ty_vbap,
POSNR TYPE POSNR_VA,
MATNR TYPE MATNR,
ARKTX TYPE ARKTX,
KWMENG TYPE KWMENG,
VRKME TYPE VRKME,
END OF ty_vbap.
DATA: x_vbak TYPE ty_vbak,
t_vbap TYPE TABLE OF ty_vbap,
x_vbap TYPE ty_vbap.
DATA: struct TYPE ITCPO.
DATA: PDFTAB TYPE TABLE OF TLINE WITH HEADER LINE,
DATAB TYPE TABLE OF ITCOO WITH HEADER LINE.
DATA: BINFILESIZE TYPE I,
FILE_NAME TYPE STRING,
FILE_PATH TYPE STRING,
FULL_PATH TYPE STRING.
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS p_vbeln TYPE VBELN_VA MATCHCODE OBJECT ZHELP.
SELECTION-SCREEN end of BLOCK b1.
START-OF-SELECTION.
struct-tddest = 'LP01'.
*To specify no Print Preview*
struct-tdnoprev = 'X'.
*To access the SAP Script output in OTF format*
struct-tdgetotf = 'X'.
PERFORM open.
SELECT SINGLE vbeln
auart
vkorg
netwr
waerk FROM vbak INTO x_vbak
WHERE vbeln EQ p_vbeln.
select POSNR
MATNR
ARKTX
KWMENG
VRKME FROM vbap INTO TABLE t_vbap WHERE vbeln EQ p_vbeln.
PERFORM write USING space 'HEADER' .
PERFORM write USING space 'TABLE' .
PERFORM write USING 'MAIN' 'SALES'.
LOOP AT t_vbap INTO x_vbap.
PERFORM write USING 'MAIN' 'SALES ITEM'.
ENDLOOP.
PERFORM close.
*&---------------------------------------------------------------------*
*& Form OPEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form OPEN .
CALL FUNCTION 'OPEN_FORM'
EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX =
* ARCHIVE_PARAMS =
* DEVICE = 'PRINTER'
DIALOG = space
FORM = 'Z02FORM'
* LANGUAGE = SY-LANGU
OPTIONS = struct
* MAIL_SENDER =
* MAIL_RECIPIENT =
* MAIL_APPL_OBJECT =
* RAW_DATA_INTERFACE = '*'
* SPONUMIV =
* IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
* RESULT =
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
OTHERS = 12
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
endform. " OPEN
*&---------------------------------------------------------------------*
*& Form WRITE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form WRITE USING VALUE(p_window)
VALUE(p_element) .
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = p_element
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = p_window
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
endform. " WRITE
*&---------------------------------------------------------------------*
*& Form CLOSE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form CLOSE .
CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
* RESULT =
* RDI_RESULT =
TABLES
OTFDATA = DATAB[]
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
CODEPAGE = 5
OTHERS = 6
.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
* MAX_LINEWIDTH = 132
* ARCHIVE_INDEX = ' '
*© 2006 SAP AG 9
* COPYNUMBER = 0
* ASCII_BIDI_VIS2LOG = ' '
* PDF_DELETE_OTFTAB = ' '
IMPORTING
BIN_FILESIZE = BINFILESIZE
* BIN_FILE =
TABLES
otf = DATAB[]
lines = PDFTAB[]
* 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.
*****************TAKING THE DOWNLOAD FILE PATH AS USER INPUT*************************
CALL METHOD cl_gui_frontend_services=>file_save_dialog
* EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILE_NAME =
* FILE_FILTER =
* INITIAL_DIRECTORY =
* WITH_ENCODING =
* PROMPT_ON_OVERWRITE = 'X'
CHANGING
*© 2006 SAP AG 10
filename = FILE_NAME
path = FILE_PATH
fullpath = FULL_PATH
* USER_ACTION =
* FILE_ENCODING =
* EXCEPTIONS
* CNTL_ERROR = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 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.
****************************DOWNLOADING THE PDF DATA**********************************
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = binfilesize
FILENAME = full_path
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 = ' '
*© 2006 SAP AG 11
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* IMPORTING
* FILELENGTH =
tables
data_tab = PDFTAB[]
* 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.
* Implement suitable error handling here
endform. " CLOSE
Hope this Helps
Regards,
Sivaganesh.
User | Count |
---|---|
90 | |
10 | |
10 | |
10 | |
7 | |
7 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.