如何将SAP Script转换成PDF并上传到SAP服务器[CONVERT_OTFSPOOLJOB_2_PDF]

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。

以上。

posted @ 2019-08-30 10:41  真的是很难  阅读(1007)  评论(0编辑  收藏  举报