DATA fm_name TYPE rs38l_fnam.
*通过函数来获取Smartforms函数名
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSM_FI002' "smartforms名字
IMPORTING
fm_name = fm_name
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
DATA: l_outset TYPE ssfcompop,
ls_control_parameters TYPE ssfctrlop,
ls_job_output_info TYPE ssfcrescl.
ls_control_parameters-no_dialog = 'X'. "控制Smartforms不输出
ls_control_parameters-getotf = 'X'.
CALL FUNCTION fm_name "Smartform模块参数
EXPORTING
control_parameters = ls_control_parameters
IMPORTING
job_output_info = ls_job_output_info
TABLES "需要往smartforms里边传入数据内表
sm_itab1 = sm_itab1
sm_itab2 = sm_itab2
sm_itab3 = sm_itab3.
****************以下代码都是为PDF生成文件所设置
DATA: l_bin_filesize TYPE i.
DATA: it_otf TYPE STANDARD TABLE OF itcoo.
DATA: it_docs TYPE STANDARD TABLE OF docs.
DATA: it_lines TYPE STANDARD TABLE OF tline.
DATA: l_guiobj TYPE REF TO cl_gui_frontend_services.
DATA: l_filter TYPE string.
DATA: l_file_path TYPE string.
DATA: l_full_path TYPE string.
DATA: l_filename TYPE string.
DATA: l_pdf_name TYPE string.
DATA: l_uact TYPE i.
* convert to otf to pdf
CALL FUNCTION 'CONVERT_OTF_2_PDF'
* EXPORTING
* USE_OTF_MC_CMD = 'X'
* ARCHIVE_INDEX =
IMPORTING
bin_filesize = l_bin_filesize
TABLES
otf = ls_job_output_info-otfdata
doctab_archive = it_docs
lines = it_lines
EXCEPTIONS
err_conv_not_possible = 1
err_otf_mc_noendmarker = 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.
l_pdf_name = 'test.pdf'. "所生成的PDF文件名称
CREATE OBJECT l_guiobj.
CALL METHOD l_guiobj->file_save_dialog
EXPORTING
* window_title =
default_extension = 'pdf'
default_file_name = l_pdf_name
* with_encoding =
file_filter = l_filter
* initial_directory =
* prompt_on_overwrite = 'X'
CHANGING
filename = l_pdf_name
path = l_file_path
fullpath = l_full_path
user_action = l_uact
* 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.
IF l_uact = l_guiobj->action_cancel.
EXIT.
ENDIF.
MOVE l_full_path to l_filename.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = l_bin_filesize
filename = l_filename
FILETYPE = 'BIN'
tables
data_tab = it_lines
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.
*通过函数来获取Smartforms函数名
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSM_FI002' "smartforms名字
IMPORTING
fm_name = fm_name
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
DATA: l_outset TYPE ssfcompop,
ls_control_parameters TYPE ssfctrlop,
ls_job_output_info TYPE ssfcrescl.
ls_control_parameters-no_dialog = 'X'. "控制Smartforms不输出
ls_control_parameters-getotf = 'X'.
CALL FUNCTION fm_name "Smartform模块参数
EXPORTING
control_parameters = ls_control_parameters
IMPORTING
job_output_info = ls_job_output_info
TABLES "需要往smartforms里边传入数据内表
sm_itab1 = sm_itab1
sm_itab2 = sm_itab2
sm_itab3 = sm_itab3.
****************以下代码都是为PDF生成文件所设置
DATA: l_bin_filesize TYPE i.
DATA: it_otf TYPE STANDARD TABLE OF itcoo.
DATA: it_docs TYPE STANDARD TABLE OF docs.
DATA: it_lines TYPE STANDARD TABLE OF tline.
DATA: l_guiobj TYPE REF TO cl_gui_frontend_services.
DATA: l_filter TYPE string.
DATA: l_file_path TYPE string.
DATA: l_full_path TYPE string.
DATA: l_filename TYPE string.
DATA: l_pdf_name TYPE string.
DATA: l_uact TYPE i.
* convert to otf to pdf
CALL FUNCTION 'CONVERT_OTF_2_PDF'
* EXPORTING
* USE_OTF_MC_CMD = 'X'
* ARCHIVE_INDEX =
IMPORTING
bin_filesize = l_bin_filesize
TABLES
otf = ls_job_output_info-otfdata
doctab_archive = it_docs
lines = it_lines
EXCEPTIONS
err_conv_not_possible = 1
err_otf_mc_noendmarker = 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.
l_pdf_name = 'test.pdf'. "所生成的PDF文件名称
CREATE OBJECT l_guiobj.
CALL METHOD l_guiobj->file_save_dialog
EXPORTING
* window_title =
default_extension = 'pdf'
default_file_name = l_pdf_name
* with_encoding =
file_filter = l_filter
* initial_directory =
* prompt_on_overwrite = 'X'
CHANGING
filename = l_pdf_name
path = l_file_path
fullpath = l_full_path
user_action = l_uact
* 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.
IF l_uact = l_guiobj->action_cancel.
EXIT.
ENDIF.
MOVE l_full_path to l_filename.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = l_bin_filesize
filename = l_filename
FILETYPE = 'BIN'
tables
data_tab = it_lines
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.