使用PDF代替SAP Smartform

在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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值