博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将SmartForms转换为PDF保存到本地
阅读量:2034 次
发布时间:2019-04-28

本文共 4702 字,大约阅读时间需要 15 分钟。

 
*&---------------------------------------------------------------------*
*& Report  ZSMARTFORMS_TO_PDF
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  ZSMARTFORMS_TO_PDF.
* Variable declarations
DATA:
W_FORM_NAME 
TYPE TDSFNAME 
VALUE 
'ZTESTSMARTFORMS',"name ofsmartforms
W_FMODULE 
TYPE RS38L_FNAM,
W_CPARAM 
TYPE SSFCTRLOP,
W_OUTOPTIONS 
TYPE SSFCOMPOP,
W_BIN_FILESIZE 
TYPE 
I,
" Binary File Size
W_FILENAME 
TYPE STRING,
W_FILE_PATH 
TYPE STRING,
W_FULL_PATH 
TYPE STRING.
* Internal tables declaration
* Internal table to hold the OTF data
DATA:
T_OTF 
TYPE ITCOO 
OCCURS 
0 
WITH 
HEADER 
LINE,
* Internal table to hold OTF data recd from the SMARTFORM
T_OTF_FROM_FM 
TYPE SSFCRESCL,
* Internal table to hold the data from the FM CONVERT_OTF
T_PDF_TAB 
LIKE TLINE 
OCCURS 
0 
WITH 
HEADER 
LINE.
* This function module call is used to retrieve the name of the Function
* module generated when the SMARTFORM is activated
              
CALL 
FUNCTION 
'SSF_FUNCTION_MODULE_NAME'
                
EXPORTING
                  FORMNAME                 = W_FORM_NAME
*                 VARIANT                  = ' '
*                 DIRECT_CALL              = ' '
                
IMPORTING
                 FM_NAME                   = W_FMODULE
              
EXCEPTIONS
                NO_FORM                  = 
1
                 NO_FUNCTION_MODULE       = 
2
                
OTHERS                   = 
3
                        .
              
IF SY-SUBRC <> 
0.
 
MESSAGE 
ID SY-MSGID 
TYPE SY-MSGTY 
NUMBER SY-MSGNO
         
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
              
ENDIF.
* Calling the SMARTFORM using the function module retrieved above
* GET_OTF parameter in the CONTROL_PARAMETERS is set to get the OTF
* format of the output
W_CPARAM-NO_DIALOG = 
'X'.
W_CPARAM-PREVIEW = SPACE. 
" Suppressing the dialog box
W_CPARAM-GETOTF = 
'X'.                                      
" for print preview
* Printer name to be used is provided in the export parameter
* OUTPUT_OPTIONS
W_OUTOPTIONS-TDDEST = 
'LP01'.
CALL 
FUNCTION W_FMODULE
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = W_CPARAM
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = W_OUTOPTIONS
* USER_SETTINGS = 'X'
IMPORTING
* DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = T_OTF_FROM_FM
* JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 
1
internal_error = 
2
send_error = 
3
user_canceled = 
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.
t_otf[] = t_otf_from_fm-otfdata[].
* Function Module CONVERT_OTF is used to convert the OTF format to PDF
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 =
TABLES
otf = T_OTF
lines = T_PDF_TAB
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.
* To display File SAVE dialog window
CALL 
METHOD cl_gui_frontend_services=>file_save_dialog
* EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILE_NAME =
* FILE_FILTER =
* INITIAL_DIRECTORY =
* WITH_ENCODING =
* PROMPT_ON_OVERWRITE = 'X'
CHANGING
filename = W_FILENAME
path = W_FILE_PATH
fullpath = W_FULL_PATH
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
CNTL_ERROR = 
1
ERROR_NO_GUI = 
2
NOT_SUPPORTED_BY_GUI = 
3
others = 
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.
* Use the FM GUI_DOWNLOAD to download the generated PDF file onto the
* presentation server
CALL 
FUNCTION 
'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = W_BIN_FILESIZE
filename = W_FULL_PATH
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 =
tables
DATA_TAB = T_PDF_TAB
* 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.

转载地址:http://yvhaf.baihongyu.com/

你可能感兴趣的文章
MyBatis 分页插件 PageHelper 使用方法
查看>>
AbstractQueuedSynchronizer 源码分析
查看>>
分布式以客户为中心的一致性
查看>>
java 注解
查看>>
CAS:乐观锁实现
查看>>
压力测试工具Apache ab
查看>>
Linux - Shell
查看>>
MySQL 如何执行关联查询
查看>>
算法运行时间n3,n2, n, nlogn对比
查看>>
java 中的suppressedException
查看>>
Rope --高效字符串处理数据结构
查看>>
Gap buffer -- 一个数据结构为可编辑的文本
查看>>
X/Open DTP模型,两阶段提交,JTA接口定义
查看>>
MySql binlog 日志
查看>>
spring 事务管理
查看>>
Redis集群
查看>>
线程中实现不可中断的任务
查看>>
世界城市时间计算
查看>>
Hessian原理分析
查看>>
WebCollector提供免费代理
查看>>