메뉴 건너뛰기

SAP 한국 커뮤니티

Convert SAPScript or ABAP lists to PDF format

sapjoy 2007.01.30 19:24 조회 수 : 5104 추천:41

Convert SAPScript or ABAP lists to PDF format
Mani Ramakrishnan
09.26.2002
Rating: -2.14- (out of 5)


SAP has provided a standard program in 4.6C, RSTXPDFT4, which you can use to convert any Spool request or ABAP Lists to a PDF File.

This proved to be quite useful as we can save reports and other printouts in read-only format (PDF).

This could be a temporary solution for many reports/formats which need to be communicated beyond company's boundaries - like vendors/customers/partners/legal advisors and so on. The program is tested in 4.6C, but will probably work with earlier versions as well.



Code



REPORT RSTXPDFT4 line-size 80.
*
* Read spool job contents (OTF or ABAP list) and convert
* to PDF, download PDF
*
PARAMETERS:
  SPOOLNO LIKE TSP01-RQIDENT,
  DOWNLOAD AS CHECKBOX DEFAULT 'X',
  P_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:tempfile.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.
data: client 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.
  WRITE: / 'Spoolauftrag existiert nicht'(003)
          COLOR COL_negative.
  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.
    WRITE: / 'Funktion CONVERT_OTFSPOOLJOB_2_PDF erfolgreich'(001)
          COLOR COL_POSITIVE.
  when 1.
    WRITE: / 'Kein OTF- und kein ABAP-Spoolauftrag'(002)
          COLOR COL_negative.
    exit.
  when 2.
    WRITE: / 'Spoolauftrag existiert nicht'(003)
          COLOR COL_negative.
    exit.
  when 3.
    WRITE: / 'Keine Berechtigung zum Lesen Spoolauftrag'(004)
          COLOR COL_negative.
    exit.
  when others.
    WRITE: / 'Fehler bei Funktion CONVERT_OTFSPOOLJOB_2_PDF'(005)
              COLOR COL_negative.
    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.
    WRITE: / 'Funktion CONVERT_ABAPSPOOLJOB_2_PDF erfolgreich'(006)
          COLOR COL_POSITIVE.
  when 1.
    WRITE: / 'Kein OTF- und kein ABAP-Spoolauftrag'(002)
          COLOR COL_negative.
    exit.
  when 2.
    WRITE: / 'Spoolauftrag existiert nicht'(003)
          COLOR COL_negative.
    exit.
  when 3.
    WRITE: / 'Keine Berechtigung zum Lesen Spoolauftrag'(004)
          COLOR COL_negative.
    exit.
  when others.
    WRITE: / 'Fehler bei Funktion CONVERT_ABAPSPOOLJOB_2_PDF'(007)
              COLOR COL_negative.
    exit.
  endcase.
endif.
*************** download PDF file ***********
check download = 'X'.
if not ( jobname is initial ).
  WRITE: / 'Konvertierung per Hintergrundjob'(008)
            COLOR COL_normal,
            jobname, jobcount.
  exit.
endif.
CALL FUNCTION 'DOWNLOAD'
     EXPORTING
          BIN_FILESIZE            = NUMBYTES
          FILENAME                = P_FILE
          FILETYPE                = 'BIN'
     IMPORTING
          ACT_FILENAME            = P_FILE
          FILESIZE                = NUMBYTES
          CANCEL                  = CANCEL
     TABLES
          DATA_TAB                = PDF.
if cancel = space.
  WRITE: / NUMBYTES, 'Bytes heruntergeladen in Datei'(009), P_FILE.
endif.


번호 제목 글쓴이 날짜 조회 수
547 ABAP TUNNING sapjoy 2012.03.12 234723
546 New function vs Old function(obsolete) sapjoy 2014.03.31 127807
545 테이블Active시 (Warnings Occurred During Activation) 안나오게하는방법 [6] 양키 2012.03.29 99710
544 자주 사용하는 String 조작 명령어 [7] 양키(이경환) 2015.01.13 35009
543 collect 구문 [4] sapjoy 2006.12.03 27038
542 사용자 패스워드 변경 함수, 창 [11] sapjoy 2009.12.21 25838
541 R/3 용어 정의 Definitions [4] sapjoy 2007.01.23 23899
540 BAPI_PR_CREATE 구매요청 생성시에 사용하세요 [2] 노름마치 2007.12.10 23708
539 SELECT statement D.Y.Kim 2007.07.20 23647
538 문자열에 있는 값이 숫자만으로 되어있는지 문자가 포함됐는지 체크하는 함수 [3] 꿀단지 2011.10.11 19912
537 LIKE와 TYPE의 차이 [13] sapjoy 2006.12.06 19724
536 숫자입력 체크(Numeric character check) [1] 양키(이경환) 2014.01.28 19641
535 SDN -> SCN 변경되면서 Contents별로 바뀐 LINK 모음 [13] Wise 멘토 2012.07.06 19045
534 ALV LIST 진행시 LAYOUT 속성값 [18] kwon09 2007.04.11 17369
533 ABAP 핵심정리 [23] SARA 2007.03.14 17342
532 인터널 테이블 라인수 lines [8] sapjoy 2014.01.20 17283
531 ABAP 구문 총정리 [39] file Wise 멘토 2008.11.24 17172
530 FOR ALL ENTRIES IN 구문 사용시 select 필드 선택시 주의사항. [7] 나침반친구 2007.03.13 17042
529 SYST 시스템 변수 정리 [5] 아밥뽀 2014.08.23 17026
528 프로그램 정보(프로그램 리스트, PROGRAM LIST, PROGRAM TABLE) [3] sapjoy 2007.02.23 16857