其实打印到pdf完全不需要程序,只要你装了pdf打印生成软件,打印的时候选择pdf也就行了。

本文的程序非我所做,不过也不知道从哪里拿到的了。在不经意间看到了,于是在机器上测试下,发现有些地方需要更正。改好了,测试好了,放上来分享给大家。

程序源代码如下:

*-- Enhancements: only allow to be run with variant.  Then called
*-- program will be transparent to users
*-- TABLES
TABLES:
  TSP01.
*-- STRUCTURES
DATA:
  MSTR_PRINT_PARMS LIKE PRI_PARAMS,
  MC_VALID(1)      TYPE C,
  MI_BYTECOUNT     TYPE I,
  MI_LENGTH        TYPE I,
  MI_RQIDENT       LIKE TSP01-RQIDENT.
*-- INTERNAL TABLES
DATA:
  MTAB_PDF    LIKE TLINE OCCURS 0 WITH HEADER LINE,
  MC_FILENAME LIKE RLGRAP-FILENAME.
*-- SELECTION SCREEN
PARAMETERS:
  P_REPID LIKE SY-REPID, " Report to execute
  P_LINSZ LIKE SY-LINSZ DEFAULT 132, " Line size
  P_PAART LIKE SY-PAART DEFAULT 'X_65_132'.  " Paper Format

START-OF-SELECTION.
  CONCATENATE 'd:\'
              P_REPID
              '.pdf'
    INTO MC_FILENAME.
*-- Setup the Print Parmaters
  CALL FUNCTION 'GET_PRINT_PARAMETERS'
    EXPORTING
      COPIES                 = '1'
      NEW_LIST_ID            = 'X'
      NO_DIALOG              = 'X'
      USER                   = SY-UNAME
    IMPORTING
      OUT_PARAMETERS         = MSTR_PRINT_PARMS
      VALID                  = MC_VALID
    EXCEPTIONS
      ARCHIVE_INFO_NOT_FOUND = 1
      INVALID_PRINT_PARAMS   = 2
      INVALID_ARCHIVE_PARAMS = 3
      OTHERS                 = 4.
*-- Make sure that a printer destination has been set up
*-- If this is not done the PDF function module ABENDS
  IF MSTR_PRINT_PARMS-PDEST = SPACE.
    MSTR_PRINT_PARMS-PDEST = 'LOCL'.
  ENDIF.
*-- Explicitly set line width, and output format so that
*-- the PDF conversion comes out OK
  MSTR_PRINT_PARMS-LINSZ = P_LINSZ.
  MSTR_PRINT_PARMS-PAART = P_PAART.
  SUBMIT (P_REPID) TO SAP-SPOOL WITHOUT SPOOL DYNPRO
                   SPOOL PARAMETERS MSTR_PRINT_PARMS
                   VIA SELECTION-SCREEN
                   AND RETURN.
*-- Find out what the spool number is that was just created
  PERFORM GET_SPOOL_NUMBER USING SY-REPID
             SY-UNAME
    CHANGING MI_RQIDENT.
*-- Convert Spool to PDF
  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
    EXPORTING
      SRC_SPOOLID              = MI_RQIDENT
      NO_DIALOG                = SPACE
      DST_DEVICE               = MSTR_PRINT_PARMS-PDEST
    IMPORTING
      PDF_BYTECOUNT            = MI_BYTECOUNT
    TABLES
      PDF                      = MTAB_PDF
    EXCEPTIONS
      ERR_NO_ABAP_SPOOLJOB     = 1
      ERR_NO_SPOOLJOB          = 2
      ERR_NO_PERMISSION        = 3
      ERR_CONV_NOT_POSSIBLE    = 4
      ERR_BAD_DESTDEVICE       = 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.
  DATA: LF TYPE STRING.
  LF = MC_FILENAME.
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
*     BIN_FILESIZE            =
      FILENAME                = LF
      FILETYPE                = 'BIN'
*     APPEND                  = ' '
*     WRITE_FIELD_SEPARATOR   = ' '
*     HEADER                  = '00'
*     TRUNC_TRAILING_BLANKS   = ' '
*     WRITE_LF                = 'X'
*     COL_SELECT              = ' '
*     COL_SELECT_MASK         = ' '
*     DAT_MODE                = ' '
*     CONFIRM_OVERWRITE       = ' '
*     NO_AUTH_CHECK           = ' '
*     CODEPAGE                = ' '
*     IGNORE_CERR             = ABAP_TRUE
*     REPLACEMENT             = '#'
*     WRITE_BOM               = ' '
*     TRUNC_TRAILING_BLANKS_EOL       = 'X'
*     WK1_N_FORMAT            = ' '
*     WK1_N_SIZE              = ' '
*     WK1_T_FORMAT            = ' '
*     WK1_T_SIZE              = ' '
*     WRITE_LF_AFTER_LAST_LINE        = ABAP_TRUE
*     SHOW_TRANSFER_STATUS    = ABAP_TRUE
* IMPORTING
*     FILELENGTH              =
    TABLES
      DATA_TAB                = MTAB_PDF
*     FIELDNAMES              =
    EXCEPTIONS
      FILE_WRITE_ERROR        = 1
      NO_BATCH                = 2
      GUI_REFUSE_FILETRANSFER = 3
      INVALID_TYPE            = 4
      NO_AUTHORITY            = 5
      UNKNOWN_ERROR           = 6
      HEADER_NOT_ALLOWED      = 7
      SEPARATOR_NOT_ALLOWED   = 8
      FILESIZE_NOT_ALLOWED    = 9
      HEADER_TOO_LONG         = 10
      DP_ERROR_CREATE         = 11
      DP_ERROR_SEND           = 12
      DP_ERROR_WRITE          = 13
      UNKNOWN_DP_ERROR        = 14
      ACCESS_DENIED           = 15
      DP_OUT_OF_MEMORY        = 16
      DISK_FULL               = 17
      DP_TIMEOUT              = 18
      FILE_NOT_FOUND          = 19
      DATAPROVIDER_EXCEPTION  = 20
      CONTROL_FLUSH_ERROR     = 21
      OTHERS                  = 22.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

*  CALL FUNCTION 'DOWNLOAD'
*    EXPORTING
*      bin_filesize = mi_bytecount
*      filename     = mc_filename
*      filetype     = 'BIN'
*    IMPORTING
*      act_filename = mc_filename
*    TABLES
*      data_tab     = mtab_pdf.
*-------------------------------------------------------------------*
*       FORM get_spool_number *
*-------------------------------------------------------------------*
*       Get the most recent spool created by user/report              *
*-------------------------------------------------------------------*
*  -->  F_REPID               *
*  -->  F_UNAME               *
*  -->  F_RQIDENT             *
*-------------------------------------------------------------------*
FORM GET_SPOOL_NUMBER USING F_REPID
     F_UNAME
                CHANGING F_RQIDENT.
  DATA:
    LC_RQ2NAME LIKE TSP01-RQ2NAME.
  CONCATENATE F_REPID+0(9)
              F_UNAME+0(3)
    INTO LC_RQ2NAME.
  SELECT * FROM TSP01 WHERE  RQ2NAME = LC_RQ2NAME
  ORDER BY RQCRETIME DESCENDING.
    F_RQIDENT = TSP01-RQIDENT.
    EXIT.
  ENDSELECT.
  IF SY-SUBRC NE 0.
    CLEAR F_RQIDENT.
  ENDIF.
ENDFORM." get_spool_number

ABAP程序打印Spool Request到PDF相关推荐

  1. 在SAP云平台ABAP编程环境上编写第一段ABAP程序

    距2017年秋季的SAP TechEd大会上一位大佬Björn Goerke,SAP's Chief Technology Officer宣布了SAP Cloud Platform即将支持ABAP至今 ...

  2. java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板

    最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...

  3. java实现保存合同模板_java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板...

    最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...

  4. ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍

    很多 ABAP 初学者通过各种社交平台向我提出这个问题: ABAP初学者如何系统地学习ABAP编程? 所以我专门写了一篇同名的文章来回答. 文章里提到,我的 ABAP 学习之路,其实并没有阅读过中文的 ...

  5. ABAP面试题系列:写一组会出现死锁(Deadlock)的ABAP程序

    我们在计算机操作系统这门专业课上,学过死锁(Deadlock)的概念:两个或两个以上的进程(或线程)在执行过程中,由于竞争资源而造成的一种阻塞的现象,称为死锁.若无外力干预,这些处于死锁状态的进程将永 ...

  6. Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式)

    目录 一.Java的打印简介 二.Java打印实现 2.1 JPG图片文件格式打印实现 2.2 PDF文件格式打印实现 2.3 Word文件格式打印实现 2.3.1 Word文件采用jacob插件进行 ...

  7. ABAP 程序完成EXCEL文件的导入导出,OLE技术的应用

    今天主要学习了使用微软的OLE技术,用ABAP程序完成excel文件的导入导出处理. (一)常用的OLE函数: CALL METHOD  ,  CALL OBJECT ,   FREE OBJECT ...

  8. SAP SmartForms PDF Preview Test 打印预览生成PDF文件

    SAP SmartForms PDF Preview Test 打印预览生成PDF文件 *&-------------------------------------------------- ...

  9. ABAP 辨析ON INPUT|REQUEST|CHAIN-INPUT|CHAIN-REQUEST

    1.逻辑流 在屏幕开发中,存在如下逻辑流: PBO(Process Before Output):屏幕输出之前触发 PAI(Process After Input):用户在屏幕中执行操作触发 POH( ...

最新文章

  1. [iOS]关于零基础学习iOS开发的学习方法总结
  2. JavaScript学习笔记(2)
  3. The import android cannot be resolved”错误解决方法
  4. python怎么在官网下载pygame_Python中pip以及Pygame的下载与安装
  5. leetcode刷题:除自身以外数组的乘积
  6. postgresql是如何求年龄的_负债累累如何度过难关?她依靠此法三年还清300多万债务!...
  7. shell 编写脚本批量ping ip
  8. cmd从网站上下载指定文件
  9. 有些CAD通过Arcgis程序读取后,发现面积不对
  10. 如何撰写一份好的市场调查报告
  11. python response_python修改微信和支付宝步数
  12. EventBus原理源码分析和使用
  13. php上传后门,PHP图片后门藏匿攻略
  14. Java基础 DAY16
  15. 可动平行平板电容建模策略
  16. windows系统各个端口作用
  17. 推荐《悲惨世界》[BD-RMVB.720p.中英双字][2012年最新大片]
  18. android 海拔高度_gps-Android:如何获取准确的海拔高度?
  19. 揭秘深度强化学习-6状态空间过大之神经网络来帮忙
  20. [学习笔记] “付款到多重签名” 和 “付款到脚本哈希”

热门文章

  1. 投缘帮CTO熊建洲:引起创业者们共鸣的14个问题
  2. 简易版用户画像,你需要掌握这3个数据处理方法
  3. 【pmcaff】2014年中国移动支付用户报告
  4. Vue父子组件通信小总结
  5. Python OpenCV实例:图像直方图均衡化(数学公式简单实现)
  6. App Store应用脱壳
  7. 安装ESXI 5.1
  8. MGM Resorts和NRG Energy在美国完成最大屋顶光伏阵列的安装
  9. P2837 晚餐队列安排
  10. ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.