메뉴 건너뛰기

SAP 한국 커뮤니티



SAP SCRIPT를 PDF로 다이렉트로 저장시키는 로직.

쿵푸ㅋ 2009.05.25 14:04 조회 수 : 4156 추천:1






제가 스풀 아이디 따서 PDF 생성 프로그램에 서브밋하는 게 죽어도 안 되서


 


SDN 뒤지다가 다이렉트 저장로직 찾아내서..


 


저같은 고민하시는 분들께 조금이라도 도움이 되시라고


 


자료 첨부합니다.


 


필요하신 분 갖다쓰세요..^^


 


그리고 www.sdn.sap.com  인가


 


sdn 사이트 짱이에요


 


자료 없으면 sdn 뒤져보세요 다 나오더라고요!!!


 


화이팅 !!


 


p.s 첨부파일형식은 워드 2007 docx 파일입니다.


 


---------------------------------------------------- 파일이 이상하게 올라가서 그냥 소스복사해올립니다.


-----------sdn에서 퍼온 거예요... 나중에 저작권문제되진않겠죠? =_=;;;;


 


REPORT ZSCRIPT_TO_PDF .


DATA: BEGIN OF ITAB OCCURS 0,


CARRID TYPE SFLIGHT-CARRID,


CONNID TYPE SFLIGHT-CONNID,


PRICE TYPE SFLIGHT-PRICE,


END OF ITAB.


data: struct type itcpo.


data: datab type table of itcoo with header line.


DATA: BINFILESIZE TYPE I.


DATA: PDFTAB TYPE TABLE OF TLINE WITH HEADER LINE.


DATA: FILE_SIZE TYPE I.


struct-tddest = 'LP01'.


struct-tdnoprev = 'X'.


struct-tdgetotf = 'X'.


CALL FUNCTION 'OPEN_FORM'


EXPORTING


* APPLICATION = 'TX'


* ARCHIVE_INDEX =


* ARCHIVE_PARAMS =


DEVICE = 'PRINTER'


DIALOG = space


FORM = 'ZSCRIPT'


* LANGUAGE = SY-LANGU


OPTIONS = struct


* MAIL_SENDER =


* MAIL_RECIPIENT =


* MAIL_APPL_OBJECT =


* RAW_DATA_INTERFACE = '*'


* SPONUMIV =


* IMPORTING


* LANGUAGE =


* NEW_ARCHIVE_PARAMS =


* RESULT =


EXCEPTIONS


CANCELED = 1


DEVICE = 2


FORM = 3


OPTIONS = 4


UNCLOSED = 5


MAIL_OPTIONS = 6


ARCHIVE_ERROR = 7


INVALID_FAX_NUMBER = 8


MORE_PARAMS_NEEDED_IN_BATCH = 9


SPOOL_ERROR = 10


CODEPAGE = 11


OTHERS = 12 .


IF sy-subrc 0.


* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO


* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


ENDIF.



 


SELECT CARRID CONNID PRICE FROM SFLIGHT INTO TABLE ITAB.


LOOP AT ITAB.


 


 


CALL FUNCTION 'WRITE_FORM'


 EXPORTING ELEMENT = 'ELEM2'


FUNCTION = 'SET'


TYPE = 'BODY'


WINDOW = 'MAIN'


* IMPORTING


* PENDING_LINES =


EXCEPTIONS


ELEMENT = 1


FUNCTION = 2


TYPE = 3


UNOPENED = 4


UNSTARTED = 5


WINDOW = 6


BAD_PAGEFORMAT_FOR_PRINT = 7


SPOOL_ERROR = 8


CODEPAGE = 9


OTHERS = 10 .


IF sy-subrc 0.


 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO


* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


ENDIF.


ENDLOOP.


CALL FUNCTION 'CLOSE_FORM'


* IMPORTING


* RESULT =


 * RDI_RESULT =


TABLES


OTFDATA = datab[]


EXCEPTIONS


UNOPENED = 1


BAD_PAGEFORMAT_FOR_PRINT = 2


 SEND_ERROR = 3


 SPOOL_ERROR = 4


CODEPAGE = 5


 OTHERS = 6 .


IF sy-subrc 0.


 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO


 * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


 ENDIF.


CALL FUNCTION 'CONVERT_OTF'


 EXPORTING


 FORMAT = 'PDF'


* MAX_LINEWIDTH = 132


* ARCHIVE_INDEX = ' '


 * COPYNUMBER = 0


* ASCII_BIDI_VIS2LOG = ' '


* PDF_DELETE_OTFTAB = ' '


 IMPORTING


 BIN_FILESIZE = BINFILESIZE


 * BIN_FILE =


TABLES


 otf = DATAB[]


lines = PDFTAB[]


* EXCEPTIONS


* ERR_MAX_LINEWIDTH = 1


* ERR_FORMAT = 2


 * ERR_CONV_NOT_POSSIBLE = 3


* ERR_BAD_OTF = 4


 * OTHERS = 5 .


IF sy-subrc 0.


* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO


 * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


ENDIF.


CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING


 BIN_FILESIZE = binfilesize


 filename = 'D:myfile.pdf'


FILETYPE = 'BIN'


* APPEND = ' '


* WRITE_FIELD_SEPARATOR = ' '


* HEADER = '00'


* TRUNC_TRAILING_BLANKS = ' '


* WRITE_LF = 'X'


* COL_SELECT = ' '


* COL_SELECT_MASK = ' '


* DAT_MODE = ' '


* CONFIRM_OVERWRITE = ' '


* NO_AUTH_CHECK = ' '


* CODEPAGE = ' '


 * IGNORE_CERR = ABAP_TRUE


 * REPLACEMENT = '#'


* WRITE_BOM = ' '


 * TRUNC_TRAILING_BLANKS_EOL = 'X'


* WK1_N_FORMAT = ' '


* WK1_N_SIZE = ' '


* WK1_T_FORMAT = ' '


* WK1_T_SIZE = ' '


IMPORTING


FILELENGTH = FILE_SIZE


tables data_tab = PDFTAB[]


* FIELDNAMES =


EXCEPTIONS


FILE_WRITE_ERROR = 1


 NO_BATCH = 2


GUI_REFUSE_FILETRANSFER = 3


 INVALID_TYPE = 4


NO_AUTHORITY = 5


UNKNOWN_ERROR = 6


HEADER_NOT_ALLOWED = 7


SEPARATOR_NOT_ALLOWED = 8


FILESIZE_NOT_ALLOWED = 9


HEADER_TOO_LONG = 10


DP_ERROR_CREATE = 11


DP_ERROR_SEND = 12


DP_ERROR_WRITE = 13


UNKNOWN_DP_ERROR = 14


ACCESS_DENIED = 15


DP_OUT_OF_MEMORY = 16


DISK_FULL = 17


DP_TIMEOUT = 18


FILE_NOT_FOUND = 19


DATAPROVIDER_EXCEPTION = 20


 CONTROL_FLUSH_ERROR = 21


OTHERS = 22 .


IF sy-subrc 0.


* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO


* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


ENDIF