SMARTFORM 转 PDF
SMARTFORM是可以轉(zhuǎn)化成PDF格式的文檔的,廢話就不說了,先貼一支具體的實(shí)例程序吧。本程序是本人在一上海項(xiàng)目的時(shí)候所做的一支實(shí)用程序。
?
*&---------------------------------------------------------------------*
*& Report? ZSCT003
*& T-code? 內(nèi)向交貨單箱碼打印
*&---------------------------------------------------------------------*
*&Work Request ID: DEVK902847
*&????Program ID: ZSCT003
*&Program Caption: 內(nèi)向交貨單箱碼打印
*&??????Assignee: 薛現(xiàn)軍(Xavery Hsueh)
*&???Deliver Date: 2010/04/28
*&???Created Date: 2010/04/07
*&---------------------------------------------------------------------*
REPORT? zsct003 NO STANDARD PAGEHEADING.
*&---------------------------------------------------------------------*
*&?????聲明表
*&---------------------------------------------------------------------*
TABLES:likp,
??????lips,
??????vekp.
*&---------------------------------------------------------------------*
*&????Structure and Internal Structure.
*&---------------------------------------------------------------------*
TYPES:BEGIN OF typ_result.
???????INCLUDE STRUCTURE zsscm001.
TYPES:END OF typ_result.
*&---------------------------------------------------------------------*
*&????variants
*&---------------------------------------------------------------------*
RANGES:r_exidv FOR vekp-exidv.
DATA:w_bin_filesize TYPE i,
????gt_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE.
DATA tline TYPE TABLE OF? tline WITH HEADERLINE..
DATA gt_otf TYPE itcoo OCCURS 0 WITH HEADER LINE.
DATA:f_funcname TYPE rs38l_fnam.
DATA: f_formname TYPE tdsfname VALUE 'ZSCM001',
?????control_parameters TYPE ssfctrlop,
?????w_outoptions TYPE ssfcompop,
?????errtab TYPE tsferror.
DATA: v_lifnr TYPE lifnr,
?????v_posnr TYPE posnr,
?????v_txt20 TYPE txt20,
?????v_name1 TYPE name1,
?????v_vgbel TYPE vbeln.
DATA:bin_file TYPE xstring.
DATA document_output_info TYPE ssfcrespd.
DATA job_output_info TYPE ssfcrescl.
DATA job_output_options TYPE ssfcresop.
DATA: binfilesize TYPE i,
file_name TYPE string,
file_path TYPE string,
full_path TYPE string.
*&---------------------------------------------------------------------*
*&?????聲明表
*&---------------------------------------------------------------------*
DATA:it_result TYPE TABLE OF typ_result WITH HEADERLINE.
DATA:it_vekp?? TYPE TABLE OF vekpWITH HEADER LINE.
*&---------------------------------------------------------------------*
*&?????定制選擇屏幕
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK xavery WITH FRAME TITLEtext-001.
PARAMETERS:p_vbeln TYPE vbeln_vl MATCHCODE OBJECT vmvm
????????????????????????????????OBLIGATORY.
SELECT-OPTIONS s_posnr FORlips-posnr.???????"箱碼
SELECTION-SCREEN END OF BLOCK xavery.
START-OF-SELECTION.
? PERFORMfrm_process_cond.??????????????????"處理選擇條件
? PERFORMfrm_query_data.????????????????????"查詢箱碼數(shù)據(jù)
END-OF-SELECTION.
? PERFORM frm_create_fieldcat.
? PERFORM frm_init_printer.
AT USER-COMMAND.
? CASE sy-ucomm.
??? WHEN'PRINT'.
?????PERFORM frm_printer_barcode.
??? WHENOTHERS.
? ENDCASE.
*&---------------------------------------------------------------------*
*&?????Form? FRM_QUERY_DATA
*&---------------------------------------------------------------------*
*??????取數(shù)邏輯
*----------------------------------------------------------------------*
FORM frm_query_data .
* 取交貨單數(shù)據(jù)
? CLEARlikp.
? SELECT SINGLE * FROM likp WHERE vbeln =p_vbeln.
* 取供應(yīng)商名稱
?SELECT SINGLE name1 FROM lfa1
??????INTO v_name1
??????WHERE lifnr = likp-lifnr.
* 取采購訂單號
?SELECT SINGLE vgbel FROM lips
??????INTO? v_vgbel
??????WHERE vbeln = p_vbeln.
* 取箱碼范圍
?REFRESH it_vekp.
? SELECT * FROM vekp INTO TABLE it_vekp
?????WHERE vpobjkey = p_vbeln AND
???????????exidv? IN r_exidv? AND
???????????status NE '0060'.
? CHECK sy-subrc = 0.
? LOOP AT it_vekp.
???CLEAR:it_result.
??? CONCATENATEv_vgbel p_vbeln INTO it_result-txt20 SEPARATED BY '/'.
???it_result-vbeln = p_vbeln.
???it_result-ebeln = v_vgbel.
???it_result-name1 = v_name1.
???it_result-posnr = v_posnr.
??? CALLFUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
?????EXPORTING
???????input? = it_vekp-exidv
?????IMPORTING
???????output = it_result-barco.
??? APPENDit_result.
? ENDLOOP.
ENDFORM.???????????????????" FRM_QUERY_DATA
*&---------------------------------------------------------------------*
*&?????Form? FRM_PROCESS_COND
*&---------------------------------------------------------------------*
*??????處理選擇條件
*----------------------------------------------------------------------*
FORM frm_process_cond .
? REFRESH r_exidv.
? LOOP AT s_posnr.
??? r_exidv-sign= s_posnr-sign.
???r_exidv-option = s_posnr-option.
???CONCATENATE p_vbeln s_posnr-low INTO r_exidv-low.
??? CALLFUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
?????EXPORTING
???????input? = r_exidv-low
?????IMPORTING
???????output = r_exidv-low.
??? IF NOTs_posnr-high IS INITIAL.
?????r_exidv-high = s_posnr-high.
?????CONCATENATE p_vbeln s_posnr-high INTO r_exidv-high.
?????CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
???????EXPORTING
?????????input? = r_exidv-high
???????IMPORTING
?????????output = r_exidv-high.
??? ENDIF.
??? APPENDr_exidv.
? ENDLOOP.
ENDFORM.???????????????????" FRM_PROCESS_COND
*&---------------------------------------------------------------------*
*&?????Form? FRM_INIT_PRINTER
*&---------------------------------------------------------------------*
*??????初始化打印參數(shù)
*----------------------------------------------------------------------*
FORM frm_init_printer .
? CLEAR control_parameters.
? control_parameters-no_dialog = 'X'.
?control_parameters-preview?? =''. "space.
?control_parameters-getotf???= 'X'.
*?control_parameters-no_open?? ='X'.
*? control_parameters-no_close? ='X'.
?control_parameters-langu????= sy-langu.
? w_outoptions-tddest = 'LP01'.
? w_outoptions-tdnoprint = 'X'.
? CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
???EXPORTING
?????formname = f_formname
???IMPORTING
?????fm_name? = f_funcname.
? CALL FUNCTION f_funcname
???EXPORTING
?????control_parameters?? =control_parameters
?????output_options??????= w_outoptions
?????user_settings???????= 'X'
???IMPORTING
?????document_output_info = document_output_info
?????job_output_info?????= job_output_info
?????job_output_options?? =job_output_options
??? TABLES
?????zsscm001????????????= it_result.
? gt_otf[] = job_output_info-otfdata[].
? CALL FUNCTION 'CONVERT_OTF'
???EXPORTING
?????format = 'PDF'
?????max_linewidth = 132
*?????ARCHIVE_INDEX = ' '
*?????COPYNUMBER = 0
*?????ASCII_BIDI_VIS2LOG = ' '
*?????PDF_DELETE_OTFTAB = ''
???IMPORTING
?????bin_filesize = w_bin_filesize
*?????bin_file = bin_file
* BIN_FILE=
???TABLES
????otf = gt_otf
????lines = tline
???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
*??? WITHsy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
?ENDIF.
? CALL METHODcl_gui_frontend_services=>file_save_dialog
???CHANGING
?????filename = file_name
?????path????= file_path
?????fullpath = full_path.
? CALL FUNCTION 'GUI_DOWNLOAD'
???EXPORTING
?????bin_filesize???????????= binfilesize
?????filename???????????????= full_path
?????filetype???????????????= 'BIN'
??? TABLES
?????data_tab???????????????= tline[]
???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.
ENDFORM.???????????????????" FRM_INIT_PRINTER
*&---------------------------------------------------------------------*
*&?????Form? FRM_CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*??????創(chuàng)建輸出字段格式
*----------------------------------------------------------------------*
FORM frm_create_fieldcat .
? SET PF-STATUS 'XAVERY'.
ENDFORM.???????????????????" FRM_CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*&?????Form? FRM_PRINTER_BARCODE
*&---------------------------------------------------------------------*
*??????打印條形碼
*----------------------------------------------------------------------*
FORM frm_printer_barcode .
? PERFORM frm_init_printer .
ENDFORM.???????????????????" FRM_PRINTER_BARCODE
1、SMARTFORM 轉(zhuǎn)PDF文件時(shí),只是用FUNCTION CONVERT_OTF進(jìn)行了格式轉(zhuǎn)換。
?
2、在SMARTFORM的輸出文檔中,調(diào)用FUNCTION輸出時(shí),輸出參數(shù)control_parameters-no_dialog必須設(shè)置成‘X’,同時(shí)control_parameters-getotf節(jié)設(shè)置成'X'。這樣調(diào)用 FUNCTIONCONVERT_PDF時(shí),才有輸入?yún)?shù)。
?
3、調(diào)用FUNCTIONCONVERT_PDF時(shí)須注意,如果要將PDF文件下載,必須使用轉(zhuǎn)化后的內(nèi)表數(shù)據(jù),將PDF格式的內(nèi)表下載成PDF的文件。而如果將PDF文件傳到一個(gè)第三方軟件或是提供給接口使用,則可以直接傳輸轉(zhuǎn)換后的二進(jìn)制的文件。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的SMARTFORM 转 PDF的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP配置webdynpro完全手册
- 下一篇: 一个关于VOFM的文章