将ALV直接输出成PDF格式

REPORT  ZPDFDIS.
DATA:
i_T100 TYPE T100 OCCURS 0,
pdf LIKE tline OCCURS 0.
DATA:
g_spool TYPE tsp01-rqident,
g_program TYPE sy-repid VALUE sy-repid.

TYPE-POOLS:slis.
DATA: w_print TYPE slis_print_alv.
DATA: p_file TYPE string.
p_file 'C:\itab_to_pdf1.pdf'.
"START-OF-SELECTION.
START-OF-SELECTION.
SELECT FROM T100 INTO TABLE i_T100 UP TO 100 ROWS.
w_print-print 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program g_program
i_structure_name 'T100'
is_print w_print
TABLES
t_outtab i_T100.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
g_spool sy-spono.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid g_spool
TABLES
pdf pdf.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename p_file
filetype 'BIN'
TABLES
data_tab pdf.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program g_program
i_structure_name 'T100'
TABLES
t_outtab i_T100. "is_print = w_print
ENDIF.
ENDIF.
ENDIF.

*---PDF预览

  DATA fm_name TYPE rs38l_fnam.

*通过函数来获取Smartforms函数名
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           'ZHRRPA009'
    IMPORTING
      fm_name            fm_name
    EXCEPTIONS
      no_form            1
      no_function_module 2
      OTHERS             3.

  DATA: l_outset TYPE ssfcompop,
         ls_control_parameters TYPE ssfctrlop,
         ls_job_output_info TYPE ssfcrescl.

  ls_control_parameters-no_dialog   'X'.  "控制Smartforms不输出
  ls_control_parameters-getotf      'X'.

  CALL   FUNCTION fm_name                 "Smartform模块参数
  EXPORTING
    control_parameters   =  ls_control_parameters
  IMPORTING
    job_output_info      =  ls_job_output_info
  TABLES
       sm_itab                  it_main.


CALL FUNCTION 'SSFCOMP_PDF_PREVIEW'
  EXPORTING
    i_otf                          ls_job_output_info-otfdata[]
 EXCEPTIONS
   CONVERT_OTF_TO_PDF_ERROR       1
   CNTL_ERROR                     2
   OTHERS                         3.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将XML文件解析为内表,并在ALV中显示输出,你可以使用以下步骤: 1. 创建ABAP结构:首先,你需要创建一个与XML文件中的数据结构相对应的ABAP结构。确保结构字段与XML元素或属性名称匹配。 2. 定义内表:创建一个内表,使用上一步创建的ABAP结构作为表行类型。 3. 使用XML解析器解析XML文件:使用`cl_xml_document`类创建一个XML文档对象,并使用`load`方法加载XML文件。 ```abap DATA: lo_xml_document TYPE REF TO if_ixml_document, lv_file_path TYPE string. lv_file_path = '<XML_FILE_PATH>'. "替换为你的XML文件路径 CREATE OBJECT lo_xml_document. lo_xml_document->load( lv_file_path ). ``` 4. 获取根节点:通过调用`get_root_node`方法获取XML文档的根节点。 ```abap DATA: lo_root_node TYPE REF TO if_ixml_node. lo_root_node = lo_xml_document->get_root_node( ). ``` 5. 遍历XML节点并解析数据:使用循环遍历子节点,并使用`get_attribute_value`方法获取节点属性值,使用`get_text`方法获取节点文本内容。将解析后的数据填充到内表中。 ```abap DATA: lt_data TYPE TABLE OF your_structure, ls_data TYPE your_structure, lo_child_node TYPE REF TO if_ixml_node. lo_child_node = lo_root_node->get_child_nodes( 'NodeName' ). "替换为你的节点名称 WHILE lo_child_node IS BOUND. ls_data-field1 = lo_child_node->get_attribute_value( 'AttributeName' ). "替换为你的属性名称 ls_data-field2 = lo_child_node->get_text( ). APPEND ls_data TO lt_data. lo_child_node = lo_child_node->get_next_sibling( ). ENDWHILE. ``` 6. 显示数据在ALV中:使用ALV控制台类(`cl_salv_table`)创建一个ALV对象,并使用`set_table`方法将内表数据传递给ALV对象。 ```abap DATA: lo_alv_table TYPE REF TO cl_salv_table. CREATE OBJECT lo_alv_table. lo_alv_table->set_table( lt_data ). ``` 7. 显示ALV表格:使用`display`方法显示ALV表格。 ```abap lo_alv_table->display( ). ``` 这样,你就可以将XML文件解析为内表,并在ALV中显示输出。请根据实际情况修改上述代码,并确保ABAP结构与XML文件的结构匹配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值