在SAP项目实施过程中,画smartform、调整smartform,是最头痛的环节之一;
设置字体,设置Logo,设置格子大小,非常消耗时间、且我本人并不喜欢,因为Smartform并不Smart。
于是,可以采用OLE,直接输出PDF,代替Smartform,后续用户直接打印PDF文件就好。
优点:1. PDF与Excel相比,难以更改。
2. 输出文件与上传的Excel(Tcode:SMW0)完全相同,相当于把上传的Excel另存为PDF文件,PDF文件继承了Excel模板中的字体,字色,格式,公式。
3. 格式调整方便,业务顾问自己调整Excel模板,重新上传即可。
流程如下:
1.下载SMW0的模板到本地;
2.通过ABAP填向本地模板填值;
3.通过ABAP保存excel;
4.通过ABAP将保存好的Excel转换成PDF,并在前台显示。
5.设置excel为隐藏文件;
6.删除excel。
除了4,其技术示例及相关操作在网上相当多,这里不赘述了。下面咱们来看ABAP代码。
REPORT ZORI.
START-OF-SELECTION.
TYPE-POOLS: SOI,OLE2.
DATA: LV_COMPLETE_PATH TYPE CHAR256.
DATA: EXCEL TYPE OLE2_OBJECT,
WORKBOOK TYPE OLE2_OBJECT,
SHEET TYPE OLE2_OBJECT.
*open excel
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.
SET PROPERTY OF EXCEL 'Visible' = 0.
CALL METHOD OF EXCEL 'Workbooks' = WORKBOOK.
CALL METHOD OF WORKBOOK 'Open'
EXPORTING
#1 = 'C:\Users\Karl\Desktop\ABCD.xlsx'. "path & name of excel file
CALL METHOD OF EXCEL 'Sheets' = SHEET
EXPORTING
#1 = 1.
CALL METHOD OF SHEET 'Activate'.
* create pdf file name
DATA:LV_NAME TYPE STRING.
CONCATENATE SY-DATUM SY-UZEIT INTO LV_NAME.
* create pdf file saved path
CONCATENATE 'C:' LV_NAME INTO LV_COMPLETE_PATH.
* function of create PDF file
CALL METHOD OF SHEET 'EXPORTASFIXEDFORMAT'
EXPORTING
#1 = '0'
#2 = LV_COMPLETE_PATH.
* open PDF file
DATA DOCUMENT TYPE STRING.
DOCUMENT = LV_COMPLETE_PATH.
CONCATENATE DOCUMENT '.PDF' INTO DOCUMENT.
CL_GUI_FRONTEND_SERVICES=>EXECUTE(
EXPORTING
DOCUMENT = DOCUMENT
).
CALL METHOD OF EXCEL 'QUIT'.
FREE OBJECT SHEET.
FREE OBJECT WORKBOOK.
FREE OBJECT EXCEL.
仅仅通过49行代码,就可以轻松将Excel转成PDF,并保存到本地。
希望以后业务顾问都能答应使用PDF代替Smartform,这样开发能省好多时间。至少省去了画Form的时间。
若您有疑问也可以通过邮件联系:asdfsad_110@163.com