Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Printing ALV output to PDF using Custom GUI button?

0 Kudos
Hi guys

In an ALV report I made 2 custom GUI buttons (PDF & Mail).

After output is displayed, if I click PDF button the report should be downloaded as PDF.

Can I not Generate and Pass SPOOL to FMs without scheduling a job.

How do I generate SPOOL and pass to FMs when PDF button pressed.

Thanks.

FORM display_alv .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     i_callback_program                = 'ZALV_PDF_MAIL'
     is_layout                         = wa_layout
     it_fieldcat                       = it_fldcat
     IT_EVENTS                         = it_event
    TABLES
      t_outtab                          = it_final
   EXCEPTIONS
     PROGRAM_ERROR                     = 1
     OTHERS                            = 2
          .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.
ENDFORM.                    " DISPLAY_ALV
*&---------------------------------------------------------------------*
*&      Form  F_PF_STATUS
*&---------------------------------------------------------------------*
FORM f_pf_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'NEWGUI'.
ENDFORM.                    " F_PF_STSTUS
*&---------------------------------------------------------------------*
*&     Form  F_USER_CMD
*&---------------------------------------------------------------------*
FORM f_user_cmd USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
  CASE r_ucomm.
    WHEN 'PDF'.
      PERFORM get_pdf.
    WHEN 'MAIL'.
      PERFORM send_mail.
  ENDCASE.
ENDFORM.                    " F_USER_CMD
*&---------------------------------------------------------------------*
*&      Form  GET_PDF
*&---------------------------------------------------------------------*
FORM get_pdf .
  DATA: l_params TYPE pri_params,
        l_valid TYPE c,
        it_pdf TYPE TABLE OF tline,
        l_spool type tsp01-rqident.

  CALL FUNCTION 'GET_PRINT_PARAMETERS'
       EXPORTING
*         ARCHIVE_ID                     = C_CHAR_UNKNOWN
*         ARCHIVE_INFO                   = C_CHAR_UNKNOWN
*         ARCHIVE_MODE                   = C_CHAR_UNKNOWN
*         ARCHIVE_TEXT                   = C_CHAR_UNKNOWN
*         AR_OBJECT                      = C_CHAR_UNKNOWN
*         ARCHIVE_REPORT                 = C_CHAR_UNKNOWN
*         AUTHORITY                      = C_CHAR_UNKNOWN
*         COPIES                         = C_NUM3_UNKNOWN
*         COVER_PAGE                     = C_CHAR_UNKNOWN
*         IN_ARCHIVE_PARAMETERS          = ' '
*         IN_PARAMETERS                  = l_params
*         LAYOUT                         = C_CHAR_UNKNOWN
*         LINE_COUNT                     = C_INT_UNKNOWN
*         LINE_SIZE                      = C_INT_UNKNOWN
*         LIST_NAME                      = C_CHAR_UNKNOWN
*         LIST_TEXT                      = C_CHAR_UNKNOWN
*         MODE                           = ' '
*         NEW_LIST_ID                    = C_CHAR_UNKNOWN
*         PROTECT_LIST                   = C_CHAR_UNKNOWN
         no_dialog                      = 'X'
       IMPORTING
*         OUT_ARCHIVE_PARAMETERS         =
         out_parameters                 = l_params
         valid                          = l_valid
*         VALID_FOR_SPOOL_CREATION       =
.

 NEW-PAGE PRINT ON PARAMETERS l_params NO DIALOG.
 perform display_alv.
 NEW-PAGE PRINT OFF.

  l_spool = sy-spono.

  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
    EXPORTING
      src_spoolid                    = l_spool
      no_dialog                      = 'X'
*     DST_DEVICE                     =
*     PDF_DESTINATION                =
*     NO_BACKGROUND                  =
*     GET_SIZE_FROM_FORMAT           =
*     USE_CASCADING                  = ' '
*   IMPORTING
*     PDF_BYTECOUNT                  =
*     PDF_SPOOLID                    =
*     LIST_PAGECOUNT                 =
*     BTC_JOBNAME                    =
*     BTC_JOBCOUNT                   =
*     BIN_FILE                       =
   TABLES
     pdf                            = it_pdf
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
*     BIN_FILESIZE                    =
      filename                        = 'C:\Users\David\Desktop\ZALV_PDF_MAIL.pdf'
     FILETYPE                        = 'PDF'
*     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
*     VIRUS_SCAN_PROFILE              = '/SCET/GUI_DOWNLOAD'
*   IMPORTING
*     FILELENGTH                      =
    tables
      data_tab                        = it_pdf
*     FIELDNAMES                      =
*   EXCEPTIONS
*     FILE_WRITE_ERROR                = 1
*     OTHERS                          = 22
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.
ENDFORM.                    " GET_PDF

*&---------------------------------------------------------------------*
*&      Form  SEND_MAIL
*&---------------------------------------------------------------------*
FORM send_mail .

ENDFORM.                    " SEND_MAIL
0 REPLIES 0