1, CONVERT_OTFSPOOLJOB_2_PDF
无论是SAP script还是smartform,要想转换成PDF其实就是通过Spool list中的Spool ID转换的。
可以用于PDF转换的函数有几个,这里介绍 CONVERT_OTFSPOOLJOB_2_PDF.
SE37中可以看到只有输入参数SRC_SPOOLID是必输项。
2, 例子代码
这里分享一段代码,代码不是完整可运行的,仅贴出来PDF转换以及下载PDF到sap 服务器目录相关代码,供大家参考。
其中上载PDF文件到SAP服务器是通过DATASET实现的。
FORM frm_down_pdf USING i_fname i_tdspoolid. DATA:lit_pdf_file TYPE STANDARD TABLE OF tline, lwa_pdf_file LIKE LINE OF lit_pdf_file, l_pdf_file_size TYPE i, l_pdf_file_name TYPE string. CLEAR :l_pdf_file_size. REFRESH:lit_pdf_file. CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF' EXPORTING src_spoolid = i_tdspoolid "spool ID no_dialog = ' ' IMPORTING pdf_bytecount = l_pdf_file_size TABLES pdf = lit_pdf_file[] "转换后的PDF保存在此内表中 EXCEPTIONS err_no_otf_spooljob = 1 err_no_spooljob = 2 err_no_permission = 3 err_conv_not_possible = 4 err_bad_dstdevice = 5 user_cancelled = 6 err_spoolerror = 7 err_temseerror = 8 err_btcjob_open_failed = 9 err_btcjob_submit_failed = 10 err_btcjob_close_failed = 11 OTHERS = 12. " 通过DATASET 将PDF上载到SAP server中指定的目录中 OPEN DATASET i_fname FOR OUTPUT IN BINARY MODE. IF sy-subrc = 0. LOOP AT lit_pdf_file INTO lwa_pdf_file. TRANSFER lwa_pdf_file-tdformat TO i_fname. TRANSFER lwa_pdf_file-tdline TO i_fname. ENDLOOP. CLOSE DATASET i_fname. ENDIF. ENDFORM.
3, 其他
Spool可以通过tcode :SP01或SP02进入。
左侧红框内的Spool no.就是spool id
sap 服务器路径,以及PDF上载后的结果可以通过tcode AL11查看:
双击上图中的路径就可以看到其中保存的文件了。
下载sap 服务器目录中的文件可以通过tcode:CG3Y。
以上。