2013年1月28日 星期一

SAP : Convert ABAP List to PDF and display in PDF format

http://an-sap-consultant.blogspot.tw/2010/12/sap-convert-abap-list-to-pdf-and.html

REPORT  zrich_0001.

DATA: lv_spool LIKE tsp01-rqident.

DATA: lt_pdf TYPE TABLE OF tline.
DATA: ls_pdf LIKE LINE OF lt_pdf.

DATA: lv_url TYPE char255.
DATA: lv_buffer TYPE string.
DATA: lv_content  TYPE xstring.

DATA: lt_data TYPE STANDARD TABLE OF x255.

DATA: lo_dialog_container TYPE REF TO cl_gui_dialogbox_container.
DATA: lo_docking_container TYPE REF TO cl_gui_docking_container.
DATA: lo_html    TYPE REF TO cl_gui_html_viewer.

FIELD-SYMBOLS  TYPE x.

PARAMETERS: p_check.

AT SELECTION-SCREEN OUTPUT.

* Run the report program, in this program you need to export the
* spool id to memory.
  SUBMIT zrich_0002 TO SAP-SPOOL
       WITHOUT SPOOL DYNPRO
               DESTINATION space
               COVER TEXT ' Your Report Title'
               NEW LIST IDENTIFICATION 'X'
               IMMEDIATELY space
               AND RETURN.

* import spool number from memory
  IMPORT lv_spool = lv_spool FROM MEMORY ID 'ZRICH_0002_SPONO'.

* Convert the spool request to PDF format.
  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
    EXPORTING
      src_spoolid              = lv_spool
    TABLES
      pdf                      = lt_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.

* convert pdf to xstring string
  LOOP AT lt_pdf INTO ls_pdf.
    ASSIGN ls_pdf TO  CASTING.
    CONCATENATE lv_content  INTO lv_content IN BYTE MODE.
  ENDLOOP.

  CREATE OBJECT lo_docking_container
    EXPORTING
      repid     = sy-repid
      dynnr     = sy-dynnr
      side      = lo_docking_container->dock_at_right
      extension = 1200.

  CREATE OBJECT lo_html
    EXPORTING
      parent = lo_docking_container.

* Convert xstring to binary table to pass to the LOAD_DATA method
  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer     = lv_content
    TABLES
      binary_tab = lt_data.

* Load the HTML
  lo_html->load_data(
    EXPORTING
      type         = 'application'
      subtype      = 'pdf'
    IMPORTING
      assigned_url         = lv_url
    CHANGING
      data_table           = lt_data
    EXCEPTIONS
      dp_invalid_parameter = 1
      dp_error_general     = 2
      cntl_error           = 3
      OTHERS               = 4 ).

* Show it
  lo_html->show_url( url = lv_url  in_place = 'X' ).

REPORT  ZRICH_0002
        line-count 65
        LINE-SIZE  80.

DATA: lv_spool LIKE tsp01-rqident.
data: lv_value type i.

START-OF-SELECTION .

* Write the report.
  DO 20 TIMES.
    lv_value = sy-index * 10.
    WRITE:/ sy-index, at 20 lv_value.
  ENDDO.

* Export this spool number to memory
  lv_spool = sy-spono.
  EXPORT lv_spool = lv_spool TO MEMORY ID 'ZRICH_0002_SPONO'.

沒有留言:

張貼留言