Adobeforms PDF merge example in one file

Hi, there is a class called cl_rspo_pdf_merge. With the help of this class, you can combine pdfs into a single file.

Below is sample code.

*&---------------------------------------------------------------------*
*& Report ZTEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest2.

DATA: lv_rc TYPE i.
DATA: it_files TYPE filetable.
DATA: lv_action TYPE i.

SELECT *
  FROM ekko
  INTO TABLE @DATA(lt_ekko)
  UP TO 10 ROWS.

DATA: fp_outputparams  TYPE sfpoutputparams,
      lf_formname      TYPE fpname,
      ls_function      TYPE funcname,
      fp_interfacetype TYPE fpinterfacetype,
      fp_docparams     TYPE sfpdocparams,
      os_formout       TYPE fpformoutput.

lf_formname = 'ZZ_MM_TEKLIFTALEBI_TR_F'.

fp_outputparams-getpdf = 'X'.
fp_outputparams-getpdl = 'X'.
fp_outputparams-getxml = 'X'.
fp_outputparams-nodialog = 'X'.

CALL FUNCTION 'FP_JOB_OPEN'
  CHANGING
    ie_outputparams = fp_outputparams
  EXCEPTIONS
    cancel          = 1
    usage_error     = 2
    system_error    = 3
    internal_error  = 4
    OTHERS          = 5.

CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
  EXPORTING
    i_name           = lf_formname
  IMPORTING
    e_funcname       = ls_function
    e_interface_type = fp_interfacetype.

DATA(o_pdf_merger) = NEW cl_rspo_pdf_merge( ).

LOOP AT lt_ekko INTO DATA(ls_ekko).

  CALL FUNCTION ls_function
    EXPORTING
      /1bcdwb/docparams  = fp_docparams
      is_ekko            = ls_ekko
    IMPORTING
      /1bcdwb/formoutput = os_formout
    EXCEPTIONS
      usage_error        = 1
      system_error       = 2
      internal_error     = 3
      OTHERS             = 4.

  o_pdf_merger->add_document( os_formout-pdf ).

ENDLOOP.
o_pdf_merger->merge_documents( IMPORTING merged_document = DATA(lv_merged_pdf)
                                         rc              = lv_rc ).
IF lv_rc = 0.
  DATA: lv_filename TYPE string.
  DATA: lv_fullpath TYPE string.
  DATA: lv_path TYPE string.

* SaveDialog
  cl_gui_frontend_services=>file_save_dialog( EXPORTING
                                                default_extension   = 'pdf'
                                                default_file_name   = 'merged.pdf'
                                                file_filter         = |pdf (*.pdf)\|*.pdf\|{ cl_gui_frontend_services=>filetype_all }|
                                                prompt_on_overwrite = abap_true
                                              CHANGING
                                                filename          = lv_filename     " dosya adı
                                                path              = lv_path         " dosya yolu
                                                fullpath          = lv_fullpath     " dosya yolu + dosya adı
                                                user_action       = lv_action ).    " sy-ucomm gibi

  IF lv_action EQ cl_gui_frontend_services=>action_ok.
* xstring -> solix
    DATA(it_bin_data_merged) = cl_bcs_convert=>xstring_to_solix( lv_merged_pdf ).

    DATA(lv_size_merged) = xstrlen( lv_merged_pdf ).

* dosyayı bilgisayara indir
    cl_gui_frontend_services=>gui_download( EXPORTING
                                              filename                = lv_fullpath
                                              filetype                = 'BIN'
                                              bin_filesize            = lv_size_merged
                                            CHANGING
                                              data_tab                = it_bin_data_merged ).

  ENDIF.
ENDIF.

CALL FUNCTION 'FP_JOB_CLOSE'
  EXCEPTIONS
    usage_error    = 1
    system_error   = 2
    internal_error = 3
    OTHERS         = 4.

Leave a Reply

Your email address will not be published. Required fields are marked *