Sapscript 导出PDF问题,急!!!
导出内容含有中文时显示乱码,output device 试过很多种,SAPScript FORM也有中文版本. 怎么试都不行. 向大虾求助,十万火急
由于代码过万行,不能全部上传.
FORM FORM_CLOSE.
DATA L_CNT TYPE I. "ANDY 2006.12.20
***** DOWNLOAD PDF : BEGIN *******************************************
*ATA otf like itcoo occurs 100 with header line.
DATA CANCEL.
DATA PDF LIKE TLINE OCCURS 100 WITH HEADER LINE.
DATA DOCTAB LIKE DOCS OCCURS 1 WITH HEADER LINE.
DATA: NUMBYTES TYPE I,
ARC_IDX LIKE TOA_DARA.
"******************Added By Michael Chow 2008.05.06***********************
TYPES:
abap_encoding TYPE abap_encod.
DATA: cncode type CPCODEPAGE ,
CNCODEN(4) TYPE C.
**--------end of adding***************************************************
****** DOWNLOAD PDF : END *********************************************
CASE FINAA-NACHA.
WHEN 'I'.
PERFORM CLOSE_INTERNET.
WHEN OTHERS.
IF XOPEN = 'Y'.
REFRESH HOTFDATA.
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT = ITCPP
TABLES
OTFDATA = HOTFDATA
EXCEPTIONS
UNOPENED = 3.
IF SY-SUBRC = 3.
MESSAGE E403.
ENDIF.
DESCRIBE TABLE HOTFDATA LINES L_CNT. "ANDY 2006.12.20
IF L_CNT > 1. "ANDY 2006.12.20
CALL FUNCTION 'CONVERT_OTF_2_PDF'
EXPORTING
ARCHIVE_INDEX = ARC_IDX
IMPORTING
BIN_FILESIZE = NUMBYTES
TABLES
OTF = HOTFDATA[]
DOCTAB_ARCHIVE = DOCTAB[]
LINES = PDF[].
IF SY-SUBRC <> 0.
ENDIF.
CHECK DOWNLOAD = 'X'.
P_FILE = P_FILE_BK. "'C:......_YYYYMMDD_9999999999_cusc_COMP.
"pdf'
REPLACE 'YYYYMMDD' WITH BUDAT01 INTO P_FILE.
REPLACE '9999999999' WITH KNA1-KUNNR INTO P_FILE.
** CY 20051114
REPLACE 'COMP' WITH SP_BUKRS-LOW INTO P_FILE.
**************
CUSTCODE = KNA1-SORTL.
REPLACE 'cusc' WITH CUSTCODE INTO P_FILE.
CONDENSE P_FILE NO-GAPS.
"********Added by Michael Chow 2008.05.06 Get current chinese code page
CALL FUNCTION 'NLS_GET_FRONTEND_CP'
EXPORTING
langu = '1'
IMPORTING
frontend_codepage = cncode
EXCEPTIONS
illegal_syst_codepage = 21
no_frontend_cp_found = 23
internal_or_db_error = 25.
MOVE CNCODE TO CNCODEN .
"**********end of adding************************************************
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = NUMBYTES
FILENAME = P_FILE
FILETYPE = 'BIN'
* DAT_MODE = 'X'
* WRITE_FIELD_SEPARATOR = 'X'
codepage = cncoden "Added by michael 2008.05.06
* IMPORTING
* FILELENGTH = NUMBYTES
TABLES
DATA_TAB = PDF
.
IF SY-SUBRC <> 0.
ENDIF.
IF NOT ITCPP-TDDEVICE IS INITIAL
AND ( NOT ITCPP-TDSPOOLID IS INITIAL
OR NOT ITCPP-TDFAXID IS INITIAL ) .
CLEAR PROT_AUSGABE.
PROT_AUSGABE-BUKRS = SAVE_BUKRS.
PROT_AUSGABE-EVENT = SAVE_EVENT.
PROT_AUSGABE-REPID = SAVE_REPID.
IF XSPID IS INITIAL.
PROT_AUSGABE-TDSPOOLID = ITCPP-TDSPOOLID.
ENDIF.
PROT_AUSGABE-TDFAXID = ITCPP-TDFAXID.
PROT_AUSGABE-TDDEVICE = ITCPP-TDDEVICE.
PROT_AUSGABE-TDPREVIEW = ITCPP-TDPREVIEW.
PROT_AUSGABE-TDDATASET = ITCPP-TDDATASET.
PROT_AUSGABE-TDSUFFIX1 = ITCPP-TDSUFFIX1.
PROT_AUSGABE-TDSUFFIX2 = ITCPP-TDSUFFIX2.
PROT_AUSGABE-COUNTP = ITCPP-TDPAGES.
PROT_AUSGABE-TDTELELAND = ITCPP-TDTELELAND.
PROT_AUSGABE-TDTELENUM = ITCPP-TDTELENUM.
IF FINAA-NACHA = '1'.
IF XPRIIM IS INITIAL.
PROT_AUSGABE-TDIMMED = SAVE_RIMMD.
IF SAVE_RIMMD IS INITIAL.
IF PRINT IS INITIAL
OR ( SY-BATCH IS INITIAL
AND SAVE_RXTSUB IS INITIAL ).
IF NOT PRI_PARAMS-PRIMM IS INITIAL.
PROT_AUSGABE-TDIMMED = 'X'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
COLLECT PROT_AUSGABE.
ELSE.
IF FINAA-NACHA = '1'.
LOOP AT PROT_AUSGABE
WHERE BUKRS = SAVE_BUKRS
AND EVENT = SAVE_EVENT
AND REPID = SAVE_REPID
AND TDDEVICE = 'PRINTER'.
EXIT.
ENDLOOP.
IF SY-SUBRC NE 0.
IF NOT XKNID IS INITIAL.
CLEAR XKNID.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF. "ANDY 2006.12.20
ELSE.
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT = ITCPP
EXCEPTIONS
UNOPENED = 3.
ENDIF.
ENDCASE.
ENDFORM. "FORM_CLOSE
|