导出到PDF例子

来源:互联网 发布:caxa制造工程师软件 编辑:程序博客网 时间:2024/05/16 14:52
REPORT RSTXPDFT4 line-size 80.
*
* Read spool job contents (OTF or ABAP list) and convert
* to PDF, download PDF
* B20K8A0IKH replace WS_DOWNLOAD with GUI_DOWNLOAD
*
PARAMETERS:
  SPOOLNO LIKE TSP01-RQIDENT,
  DOWNLOAD AS CHECKBOX DEFAULT 'X',
  P_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\temp\file.pdf'"#EC NOTEXT
DATA 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,
      pdfspoolid like tsp01-rqident,
      jobname like tbtcjob-jobname,
      jobcount like tbtcjob-jobcount,
      is_otf.
dataclient like tst01-dclient,
      name like tst01-dname,
      objtype like rststype-type,
      type like rststype-type.
tables: tsp01.

select single * from tsp01 where rqident = spoolno.
if sy-subrc <> 0.
  perform bd_textbox_err(rstxpdft) using 80
   'Spoolauftrag existiert nicht'(003).
  exit.
endif.
client = tsp01-rqclient.
name   = tsp01-rqo1name.
CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
       EXPORTING
            AUTHORITY     = 'SP01'
            CLIENT        = client
            NAME          = name
            PART          = 1
       IMPORTING
*           CHARCO        =
*           CREATER       =
*           CREDATE       =
*           DELDATE       =
*           MAX_CREDATE   =
*           MAX_DELDATE   =
*           NON_UNIQ      =
*           NOOF_PARTS    =
*           RECTYP        =
*           SIZE          =
*           STOTYP        =
            TYPE          = type
            OBJTYPE       = objtype
       EXCEPTIONS
            FB_ERROR      = 1
            FB_RSTS_OTHER = 2
            NO_OBJECT     = 3
            NO_PERMISSION = 4.
if objtype(3) = 'OTF'.
  is_otf = 'X'.
else.
  is_otf = space.
endif.
if is_otf = 'X'.
  CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
      EXPORTING
        SRC_SPOOLID                    = spoolno
        NO_DIALOG                      = ' '
*       DST_DEVICE                     =
*       PDF_DESTINATION                =
      IMPORTING
        PDF_BYTECOUNT                  = numbytes
        PDF_SPOOLID                    = pdfspoolid
*       OTF_PAGECOUNT                  =
        BTC_JOBNAME                    = jobname
        BTC_JOBCOUNT                   = jobcount
      TABLES
        PDF                            = pdf
      EXCEPTIONS
        ERR_NO_OTF_SPOOLJOB            = 1
        ERR_NO_SPOOLJOB                = 2
        ERR_NO_PERMISSION              = 3
        ERR_CONV_NOT_POSSIBLE          = 4
        ERR_BAD_DSTDEVICE              = 5
        USER_CANCELLED                 = 6
        ERR_SPOOLERROR                 = 7
        ERR_TEMSEERROR                 = 8
        ERR_BTCJOB_OPEN_FAILED         = 9
        ERR_BTCJOB_SUBMIT_FAILED       = 10
        ERR_BTCJOB_CLOSE_FAILED        = 11.
  case sy-subrc.
  when 0.
    perform bd_textbox_msg(rstxpdft) using 80
     'Funktion CONVERT_OTFSPOOLJOB_2_PDF erfolgreich'(001).
  when 1.
    perform bd_textbox_err(rstxpdft) using 80
     'Kein OTF- und kein ABAP-Spoolauftrag'(002).
    exit.
  when 2.
    perform bd_textbox_err(rstxpdft) using 80
     'Spoolauftrag existiert nicht'(003).
    exit.
  when 3.
    perform bd_textbox_err(rstxpdft) using 80
     'Keine Berechtigung zum Lesen Spoolauftrag'(004).
    exit.
  when others.
    perform bd_textbox_err(rstxpdft) using 80
     'Fehler bei Funktion CONVERT_OTFSPOOLJOB_2_PDF'(005).
    exit.
  endcase.
else.
  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
      EXPORTING
        SRC_SPOOLID                    = spoolno
        NO_DIALOG                      = ' '
*       DST_DEVICE                     =
*       PDF_DESTINATION                =
      IMPORTING
        PDF_BYTECOUNT                  = numbytes
        PDF_SPOOLID                    = pdfspoolid
*       LIST_PAGECOUNT                 =
        BTC_JOBNAME                    = jobname
        BTC_JOBCOUNT                   = jobcount
      TABLES
        PDF                            = pdf
      EXCEPTIONS
        ERR_NO_ABAP_SPOOLJOB           = 1
        ERR_NO_SPOOLJOB                = 2
        ERR_NO_PERMISSION              = 3
        ERR_CONV_NOT_POSSIBLE          = 4
        ERR_BAD_DESTDEVICE             = 5
        USER_CANCELLED                 = 6
        ERR_SPOOLERROR                 = 7
        ERR_TEMSEERROR                 = 8
        ERR_BTCJOB_OPEN_FAILED         = 9
        ERR_BTCJOB_SUBMIT_FAILED       = 10
        ERR_BTCJOB_CLOSE_FAILED        = 11.
  case sy-subrc.
  when 0.
    perform bd_textbox_msg(rstxpdft) using 80
     'Funktion CONVERT_ABAPSPOOLJOB_2_PDF erfolgreich'(006).
  when 1.
    perform bd_textbox_err(rstxpdft) using 80
     'Kein OTF- und kein ABAP-Spoolauftrag'(002).
    exit.
  when 2.
    perform bd_textbox_err(rstxpdft) using 80
     'Spoolauftrag existiert nicht'(003).
    exit.
  when 3.
    perform bd_textbox_err(rstxpdft) using 80
     'Keine Berechtigung zum Lesen Spoolauftrag'(004).
    exit.
  when others.
    perform bd_textbox_err(rstxpdft) using 80
     'Fehler bei Funktion CONVERT_ABAPSPOOLJOB_2_PDF'(007).
    exit.
  endcase.
endif.
*************** download PDF file ***********
check download = 'X'.
if not ( jobname is initial ).
  perform bd_textbox_var2_msg(rstxpdft) using 80
   'Konvertierung per Hintergrundjob'(008)
   jobname
   jobcount.
  exit.
endif.
perform download_w_ext(RSTXPDFT) tables pdf
                                 using p_file
                                       '.pdf'
                                       'BIN'
                                       numbytes
                                       cancel.
if cancel = space.
  data: s(80).
  s = numbytes. condense s.
  concatenate s 'Bytes heruntergeladen in Datei'(009)
    into s separated by space.
  perform bd_textbox_var1_msg(RSTXPDFT) using 80
                                    s
                                    p_file.
endif.
原创粉丝点击