ITPUB??ì3
ITPUB论坛 » SAP R/3 » 系统开发及跨应用设置 » Sapscript 导出PDF问题,急!!!

标题: Sapscript 导出PDF问题,急!!!
离线 Winkchow
Michael Chow


精华贴数 0
个人空间 0
技术积分 210 (9278)
社区积分 7 (13061)
注册日期 2007-2-11
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-5-16 10:45 
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


__________________
Nothing just happens. It is all part of a plan!
只看该作者    顶部
离线 Winkchow
Michael Chow


精华贴数 0
个人空间 0
技术积分 210 (9278)
社区积分 7 (13061)
注册日期 2007-2-11
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-5-21 17:11 
问题我已解决,谢谢各位


__________________
Nothing just happens. It is all part of a plan!
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问