Internal table to PDF

本文介绍如何使用ABAP从内表生成PDF文件。主要通过SmartForms生成OTF文件再转换为PDF,或者直接生成OTF后转PDF。文章提供了具体代码示例,包括获取数据、生成SmartForm、转换为PDF及下载等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何将内表生成PDF格式的输出:

主要有两种方法:

1)使用中间构件,例如SmartForm借助于生成OTF文件,然后将OTF文件转换成PDF,最终下载下来,涉及的主要函数CONVERT_OTF,

2)直接生成OTF,然后转成PDF

3)可以直接将数据发送到SPOOL(未研究,原理有点像)


*--------------------------------------------------------------------*
* data declereration
*--------------------------------------------------------------------*
DATA:
      lt_flight TYPE   zsflight_t WITH HEADER LINE.
DATA:
      funname TYPE rs38l_fnam.

DATA:l_outset TYPE ssfcompop.

DATA:
      w_form_name TYPE tdsfname VALUE 'Z_SFLIGHT',
      w_cparam TYPE ssfctrlop,
      w_bin_filesize TYPE i," Binary File Size
      w_filename TYPE string,
      w_file_path TYPE string,
      w_full_path TYPE string.

* Internal table to hold otf data
DATA:
t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,

* Internal table to hold data read from the smartform
t_otf_from_fm TYPE ssfcrescl,

* Internal table to hold data from FM Convert_OTF
t_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE.

*--------------------------------------------------------------------*
* get data from the table
*--------------------------------------------------------------------*
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_flight
  FROM sflight AS a JOIN scarr AS b
  ON   a~carrid = b~carrid.

*--------------------------------------------------------------------*
* delete duplicated lines
*--------------------------------------------------------------------*

SORT lt_flight BY carrid ASCENDING.
"DELETE ADJACENT DUPLICATES FROM lt_flight.

* call function to generate smartforms name
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname           = w_form_name
*   VARIANT            = ' '
*   DIRECT_CALL        = ' '
  IMPORTING
    fm_name            = funname
  EXCEPTIONS
    no_form            = 1
    no_function_module = 2
    OTHERS             = 3.

IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

* GET_OTF parameter in the CONTROL_PARAMETERS is set to get the OTF
*formata of the output
"w_cparam-no_dialog = 'X'.
w_cparam-preview = space. " Suppressing the dialog box

w_cparam-getotf = 'X'.

* setting for printing
l_outset-tddest = 'sddfsd'.
l_outset-tdnoprev = ''.
l_outset-tdimmed = 'X'.
l_outset-tdarmod = 1.
* call function
CALL FUNCTION funname
  EXPORTING
    output_options     = l_outset
    control_parameters = w_cparam
  IMPORTING
    job_output_info    = t_otf_from_fm.

* Convey the data
t_otf[] = t_otf_from_fm-otfdata[].

* Call Function to convert the otf to pdf
CALL FUNCTION 'CONVERT_OTF'
  EXPORTING
    format        = 'PDF'
    max_linewidth = 132
  IMPORTING
    bin_filesize  = w_bin_filesize
*   BIN_FILE      =
  TABLES
    otf           = t_otf
    lines         = t_pdf_tab.

* To display the save dialog window
CALL METHOD cl_gui_frontend_services=>file_save_dialog
  CHANGING
    filename = w_filename
    path     = w_file_path
    fullpath = w_full_path.


* set the file format
CONCATENATE w_file_path '.PDF' INTO w_file_path.
CONCATENATE w_full_path '.PDF' INTO w_full_path.

* download the PDF file to server
CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
    bin_filesize = w_bin_filesize
    filename     = w_full_path
    filetype     = 'BIN'
  TABLES
    data_tab     = t_pdf_tab.


例2(转载)

REPORT  z_test_pdf00.
DATA: filesize TYPE i.
DATA header LIKE thead.
DATA options LIKE itcpo.
DATA result LIKE itcpp.

DATA:
      gs_sflight TYPE sflight,
      gt_sflight TYPE TABLE OF sflight.

DATA otf LIKE itcoo OCCURS 1000 WITH HEADER LINE.
DATA lines LIKE tline OCCURS 100 WITH HEADER LINE.

PARAMETERS p_file LIKE rlgrap-filename DEFAULT 'C:\Documents and Settings\lkong\Desktop\IPMSG\123.PDF'.

SELECT * INTO TABLE gt_sflight FROM sflight.

* Do some operatiion to the table
LOOP AT gt_sflight INTO gs_sflight.
  CLEAR lines.
  "CONCATENATE gs_sflight-carrid gs_sflight-connid gs_sflight-fldate INTO lines-tdline SEPARATED BY '
  lines-tdline =   gs_sflight-carrid.
  APPEND lines.
  lines-tdline =   gs_sflight-connid.
  APPEND lines.
  CLEAR lines.
  lines-tdline =   gs_sflight-connid.
  APPEND lines.
  CLEAR lines.
  lines-tdline = gs_sflight-fldate.
  APPEND lines.
ENDLOOP.

options-tddest = 'LP01'.
options-tdnewid = 'X'.
options-tdgetotf = 'X'.
CALL FUNCTION 'PRINT_TEXT'
  EXPORTING
    device        = 'PRINTER'
    dialog        = ' '
    header        = header
    OPTIONS       = options
  IMPORTING
    RESULT        = RESULT
  tables
    lines         = lines
    otfdata       = otf
  EXCEPTIONS
    canceled      = 01
    device        = 02
    form          = 03
    OPTIONS       = 04
    unclosed      = 05
    unknown       = 06
    format        = 07
    textformat    = 08
    communication = 09.

* convert to PDF
CALL FUNCTION 'CONVERT_OTF'
  EXPORTING
    format                = 'PDF'
  IMPORTING
    bin_filesize          = filesize
  TABLES
    otf                   = otf
    lines                 = lines
  EXCEPTIONS
    err_conv_not_possible = 1.


CALL FUNCTION 'DOWNLOAD'
  EXPORTING
    bin_filesize = filesize
    filename     = p_file
    filetype     = 'BIN'
  TABLES
    data_tab     = lines.


内容概要:该PPT详细介绍了企业架构设计的方法论,涵盖业务架构、数据架构、应用架构和技术架构四大核心模块。首先分析了企业架构现状,包括业务、数据、应用和技术四大架构的内容和关系,明确了企业架构设计的重要性。接着,阐述了新版企业架构总体框架(CSG-EAF 2.0)的形成过程,强调其融合了传统架构设计(TOGAF)和领域驱动设计(DDD)的优势,以适应数字化转型需求。业务架构部分通过梳理企业级和专业级价值流,细化业务能力、流程和对象,确保业务战略的有效落地。数据架构部分则遵循五大原则,确保数据的准确、一致和高效使用。应用架构方面,提出了分层解耦和服务化的设计原则,以提高灵活性和响应速度。最后,技术架构部分围绕技术框架、组件、平台和部署节点进行了详细设计,确保技术架构的稳定性和扩展性。 适合人群:适用于具有一定企业架构设计经验的IT架构师、项目经理和业务分析师,特别是那些希望深入了解如何将企业架构设计与数字化转型相结合的专业人士。 使用场景及目标:①帮助企业和组织梳理业务流程,优化业务能力,实现战略目标;②指导数据管理和应用开发,确保数据的一致性和应用的高效性;③为技术选型和系统部署提供科学依据,确保技术架构的稳定性和扩展性。 阅读建议:此资源内容详尽,涵盖企业架构设计的各个方面。建议读者在学习过程中,结合实际案例进行理解和实践,重点关注各架构模块之间的关联和协同,以便更好地应用于实际工作中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值