CLEAR F_FORMNAME .
F_FORMNAME = P_F_NAME.
CLEAR F_FUNCNAME .
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = F_FORMNAME
IMPORTING
FM_NAME = F_FUNCNAME.
CLEAR:OUTPUT,CONTROL_PARAMETERS.
- CONTROL_PARAMETERS-NO_OPEN = 'X'.
- CONTROL_PARAMETERS-NO_CLOSE = 'X'.
CONTROL_PARAMETERS-GETOTF = 'X'.
CONTROL_PARAMETERS-preview = ' '. "不打印预览
CONTROL_PARAMETERS-no_open = 'X'. "没有新的假脱机请求
CONTROL_PARAMETERS-no_close = 'X'. "不关闭假脱机请求
CONTROL_PARAMETERS-no_dialog = 'X'. "没有对话窗口打开
EXPORT GT_HEAD GT_ITEM TO MEMORY ID 'ZSM002_2'.
CALL FUNCTION 'SSF_OPEN'
EXPORTING
CONTROL_PARAMETERS = CONTROL_PARAMETERS
OUTPUT_OPTIONS = OUTPUT
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
CALL FUNCTION F_FUNCNAME
EXPORTING
CONTROL_PARAMETERS = CONTROL_PARAMETERS
OUTPUT_OPTIONS = OUTPUT
GS_HEAD = WA_HEAD
I_NUM = 5
TABLES
T_HEAD = GT_HEAD
T_ITEM = GT_ITEM
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4.
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,
lv_xstring type xstring,
l_data type string,
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: binary_tab TYPE STANDARD TABLE OF x255.
REFRESH L_BINARY_TAB.
CALL FUNCTION 'SSF_CLOSE'
IMPORTING
JOB_OUTPUT_INFO = w_return "LW_SSFCRESCL
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
OTHERS = 4.
-
CALL FUNCTION 'SSF_READ_ERRORS'
-
IMPORTING
ERRORTAB = ERRTAB.
-
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.
-
PERFORM SMARTFORM_END.
CALL FUNCTION 'CONVERT_OTF' "转换otf数据为二进制PDF文件
EXPORTING
format = 'PDF'
IMPORTING
bin_file = lv_xstring
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.
-
data:lv_encoding type ABAP_ENCOD.
-
lv_encoding = '8450'.
-
CALL FUNCTION 'HR_KR_XSTRING_TO_STRING'
-
EXPORTING
from_codepage = lv_encoding "lv_codepage_numc "lv_encoding
in_xstring = lv_xstring
-
IMPORTING
out_string = l_data.
"方案二 直接推送PDF
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_xstring
IMPORTING
OUTPUT_LENGTH = L_OUTPUT_LENGTH
TABLES
binary_tab = L_BINARY_TAB."binary_tab. "
P_FSIZE = L_OUTPUT_LENGTH.
*
CALL FUNCTION 'SCMS_BINARY_TO_STRING'
EXPORTING
INPUT_LENGTH = L_OUTPUT_LENGTH
ENCODING = lv_encoding
IMPORTING
TEXT_BUFFER = l_data
*
OUTPUT_LENGTH = len
TABLES
BINARY_TAB = L_BINARY_TAB. "binary_tab.
*
-
CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_CHAR'
-
EXPORTING
data = l_data
-
IMPORTING
hash = P_FMD5
-
EXCEPTIONS
internal_error = 1
OTHERS = 2.
CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_RAW'
EXPORTING
length = L_OUTPUT_LENGTH
IMPORTING
hash = P_FMD5
TABLES
data_tab = L_BINARY_TAB "binary_tab
EXCEPTIONS
internal_error = 1
OTHERS = 2 .
TRANSLATE P_FMD5 to LOWER CASE .