메뉴 건너뛰기

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.


번호 제목 글쓴이 날짜 조회 수
287 인터널 테이블 또는 테이블 구조 확인 [2] sapjoy 2008.12.29 5078
286 튜닝교육_실무 [6] file 가보자 2007.04.12 5091
» Convert SAPScript or ABAP lists to PDF format [6] sapjoy 2007.01.30 5104
284 주민번호 체크로직 [14] 오향 2008.02.29 5104
283 New ABAP Debugger Demo Wise 멘토 2008.12.15 5108
282 요일 찾는 Function [3] Delight 2008.04.23 5109
281 Lock 걸렸을때 푸는 방법 공개합니다. [6] 양갱 2014.12.01 5143
280 바탕화면에 바로가기 생성하기 [1] 김윤승 2007.06.25 5145
279 READ_TEXT 관련 [14] file 노름마치 2007.11.15 5177
278 화면에 드롭다운 리스트 박스 추가 하기. ABCD [8] 버즈즈 2008.01.04 5177
277 엑셀로 데이터 내보내기 샘플 코드 [7] sapjoy 2007.01.26 5193
276 일/주/월/분기/년..연산가능 펑션~ [7] 초짜 2007.07.31 5208
275 변수를 메모리로 올리는 세가지 방법 [5] sapjoy 2006.12.06 5214
274 특수문자가 깨지는 문제-스마트폼 [2] sapjoy 2016.06.21 5243
273 <b>[완료]</b>netweaver 설치중 오류log 원인 아시는분 좀 알려주세요 [1] 카즈키 2008.07.19 5264
272 인덱스인터널테이블만들기 [2] 천지개벽 2009.01.29 5266
271 Report 프로그램 Application Toolbar 에 버튼추가 sapjoy 2006.12.28 5282
270 엑셀 65000 라인초과시 사용 유틸 [5] file GG 2007.08.19 5296
269 SAP에서 바코드 인쇄하기 [1] 홍성현 2007.08.09 5303
268 화면상에 입력된 parameter , selection-option 값 inter table로 담는 펑션 ㅋ [5] file bd 2008.03.25 5307