1、把SAP打印函数输出PDF文件(网上例子比较多在此简单列举)
SmartForms生成PDF文件
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = name
* VARIANT = ' '
direct_call = 'X'
IMPORTING
fm_name = lv_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
* 获取OTF数据
IF sy-subrc = 0.
CALL FUNCTION lv_fm_name
EXPORTING
control_parameters = ls_ctrl_form
output_options = ls_output_opt
user_settings = lv_user_settings
IMPORTING
job_output_info = ls_job_output_info
TABLES
i_tab = gt_data
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4.
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
IMPORTING
bin_filesize = lv_pdf_len
TABLES
otf = ls_job_output_info-otfdata[]
lines = lt_pdf_lines
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.
"初始化文件名"
lv_filename = 'benlen_' && sy-datum && sy-uzeit && '.PDF'.
2、链接回票系统下载到本地电脑(http下载在此不在列举,每个公司回票下载不一样)
3、后台自动调用打印机打印(本地电脑必须提前按照好PDF标准插件和OFD插件)
实现代码如下:
FUNCTION ZFI_FM_PDF_PRINT.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(IV_PATH) TYPE STRING OPTIONAL
*" VALUE(IV_TYPE) TYPE CHAR3 OPTIONAL
*" EXPORTING
*" VALUE(EV_MSG) TYPE STRING
*"----------------------------------------------------------------------
DATA: LV_PARAMETER TYPE STRING.
TRANSLATE IV_TYPE TO UPPER CASE.
IF IV_TYPE EQ 'PDF'."PDF
CONCATENATE '/p /h '"P = Print, h = Hide Window
IV_PATH
INTO LV_PARAMETER
SEPARATED BY SPACE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
EXPORTING
APPLICATION = 'AcroRd32.exe'
PARAMETER = LV_PARAMETER
MINIMIZED = 'X'
* synchronous = ' '
* operation = 'PRINT'
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
BAD_PARAMETER = 3
FILE_NOT_FOUND = 4
PATH_NOT_FOUND = 5
FILE_EXTENSION_UNKNOWN = 6
ERROR_EXECUTE_FAILED = 7
SYNCHRONOUS_FAILED = 8
NOT_SUPPORTED_BY_GUI = 9
OTHERS = 10 .
IF SY-SUBRC NE 0.
EV_MSG = '打印错误 请检查是否安装PDF浏览器(AcroRd32)'.
ENDIF.
ELSE."OFD
CONCATENATE
IV_PATH
'/p [readervisible="false";exitafterprint="true"]'
INTO LV_PARAMETER SEPARATED BY SPACE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
EXPORTING
APPLICATION = 'SuwellReader.exe' "OFD
PARAMETER = LV_PARAMETER
MINIMIZED = 'X'
* synchronous = ' '
* operation = 'PRINT'
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
BAD_PARAMETER = 3
FILE_NOT_FOUND = 4
PATH_NOT_FOUND = 5
FILE_EXTENSION_UNKNOWN = 6
ERROR_EXECUTE_FAILED = 7
SYNCHRONOUS_FAILED = 8
NOT_SUPPORTED_BY_GUI = 9
OTHERS = 10 .
IF SY-SUBRC NE 0.
EV_MSG = '打印错误 请检查是否安装OFD浏览器'.
ENDIF.
ENDIF.
ENDFUNCTION.