SAP 打印自动导出PDF本地文件(自己做的例子)
smartforms导出PDF:
常用函数有;
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。convert_otf
convert_otfspooljob_2_pdf
convert_abapspooljob_2_pdf
CONVERT_OTF_2_PDF;
SX_OBJECT_CONVER_OTF_PDF;
HRHAP_DOC_CONVERT_SMF_TO_PDF
实例:
FORM export_pdf.
DATA:zsmart_name TYPE rs38l_fnam.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZLE_SHIP_BMEPR'
IMPORTING
fm_name = zsmart_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
DATA: w_ctrlop TYPE ssfctrlop, "Smart Forms: 控制结构 "W_CONTROL
w_compop TYPE ssfcompop, "SAP Smart Forms: 智能写作器 (传输) 选项"W_OUTPUT.
w_return TYPE ssfcrescl. "Smart Forms: 表格打印结束时返回值
DATA: len TYPE i,
w_filesize TYPE i,
g_pdf_xstring TYPE xstring,
l_lines TYPE TABLE OF tline WITH HEADER LINE.
DATA doctab TYPE TABLE OF docs WITH HEADER LINE.
DATA itab LIKE tline OCCURS 0 WITH HEADER LINE DATA: file_name TYPE string,
fullpath TYPE string,
path TYPE string,
p_sefile LIKE rlgrap-filename VALUE 'D:\'. "'/usr/sap/tmp/'.
w_ctrlop-getotf = 'X'."OTF 表的返回
w_ctrlop-no_dialog = 'X'."关闭打印对话框
* W_CTRLOP-NO_OPEN = 'X'."no dialog box
* W_CTRLOP-NO_CLOSE = 'X'."no
*&W_COMPOP-TDNOPRINT = 'X'.
w_compop-tdnoprev = 'X'."没有打印预览
"W_COMPOP用来设置打印参数弹出对话框中的值,下面这几个参数不必要
* W_COMPOP-TDNEWID = 'X'. "New Spool
w_compop-tdimmed = 'X'.
w_compop-tddelete = ''. "Delete Spool After Print
w_compop-tdfinal = 'X'.
w_compop-tdiexit = 'X'. "Exit after printing in print preview
w_compop-tddest = 'LP02'. "设备名称
w_compop-xdf2outdev = 'LP02'.
w_compop-tdarmod = '1'.
*&smartforms打印 ,将打印的值输入到W_RETURN-OTFDATA[]中
CALL FUNCTION zsmart_name
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
* totalpages = totalpages
* zbukrs = p_bukrs
* zcb = cb
gth_header = gth_alv_sel
IMPORTING
job_output_info = w_return
TABLES
gtd_item = gtd_item
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
*"CONVERT_OTF函数取不到lines的返回值,所以注释掉,用CONVERT_OTF_2_PDF
* CALL FUNCTION 'CONVERT_OTF'
* EXPORTING
* format = 'PDF'
* IMPORTING
* bin_filesize = len
* bin_file = g_pdf_xstring
* TABLES
* otf = w_return-otfdata[]
* lines = itab
* EXCEPTIONS
* err_max_linewidth = 1
* err_format = 2
* err_conv_not_possible = 3
* err_bad_otf = 4
* OTHERS = 5.
CALL FUNCTION 'CONVERT_OTF_2_PDF' "转换otf数据为二进制PDF文件
* EXPORTING
* use_otf_mc_cmd = 'X'
* archive_index = archive_index
IMPORTING
bin_filesize = len
TABLES
otf = w_return-otfdata[]
doctab_archive = doctab
lines = l_lines[]
EXCEPTIONS
err_conv_not_possible = 1
err_otf_mc_noendmarker = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno