[SAP] Adobe Forms Administration

Transaktionen

SFP (Form Builder)
SM59 (RFC Destinations (Display/Edit))

  1. HTTP-Verbindungen zu ext. Server
  2. Doppelklick auf ADS
  3. Button “Verbindungstest”

SICF (Pflege des HTTP-Service-Baums)

  1. Hierarchietyp SERVICE
  2. Button “Ausführen”
  3. default_host/sap/bc/fp und default_host/sap/bc/fpads

Reports

FP_CHECK_DESTINATION_SERVICE (Testprogramm, ob der Destination-Service für Templates funktioniert)

  1. This report checks the configuration of the destination service and the ICF service sap/bc/fp

FP_CHECK_HTTP_DATA_TRANSFER (Test Program for HTTP Communication)

  1. This report checks the configuration of the destination service and the ICF service sap/bc/fpads
  2. You only need this service, if AS ABAP and AS Java (with ADS) are installed in different systems

RSPO_TEST_MERGE_PDF_FILES (Beispielreport zum Aufruf des PDF-Merge ABAP-Interfaces)
FP_TEST_00 (Form Processing – Zentrales Testprogramm)
FP_TEST_01 (Form Processing – Zentrales Testprogramm mit Archivierung)
FP_PDF_TEST_00 (Versionsinformation (nur zur Analyse))
FP_PDF_TEST_01 (PDF Erzeugung)

Funktionsbausteine

FP_FUNCTION_MODULE_NAME (Namen des Funktionsbausteins für ein Formular bestimmen)
FP_JOB_OPEN (Formularprozessierung: Job beginnen)
FP_JOB_CLOSE (Formularprozessierung: Job beenden)
FP_GET_LAST_ADS_ERRSTR (Letzten Fehlerstring der Adobe-Dokument-Services/SOAP ermitteln)
ADS_SR_OPEN (Öffnen eines ADS Spoolauftrags zum Schreiben)
ADS_SR_CLOSE (Schliessen eines ADS Spoolauftrags)
ADS_GET_PATH (Liefert Speicherort für ADS Spoolaufträge)
ADS_SR_CONFIRM (Schreiben einer Zeile in einen offenen ADS Spoolauftrag)

Tabellen

FPCONTEXT (Formularobjekte: Kontext)
FPCONTEXTI (Formularobjekte: Kontext – interne Informationen)
FPCONTEXTR (Formularobjekte: Kontext – Laufzeitobjekte)
FPCONTEXTT (Formularobjekte: Kontext – textuelle Beschreibung)
FPINTERFACE (Formularobjekte: Schnittstelle)
FPINTERFACET (Formularobjekte: Schnittstelle – textuelle Beschreibung)
FPLAYOUT (Formularobjekte: Layout)
FPLAYOUTT (Formularobjekte: Layout – textuelle Beschreibung)
FPNUMBERLEVEL (Formularobjekte: Nummernstand)

Klassen

CL_RSPO_PDF_MERGE (PDF merger)

Links

[ABAP] PDFs mittels Klasse CL_RSPO_PDF_MERGE zusammenfügen (mergen)

* siehe auch RSPO_TEST_MERGE_PDF_FILES (Beispielreport zum Aufruf des PDF-Merge ABAP-Interfaces)
* benötigt KEIN ADS (Adobe Document Service)
TRY.
    DATA: lv_rc TYPE i.
    DATA: it_files TYPE filetable.
    DATA: lv_action TYPE i.

* FileOpen-Dialog aufrufen
    cl_gui_frontend_services=>file_open_dialog( EXPORTING
                                                  file_filter    = |pdf (*.pdf)\|*.pdf\|{ cl_gui_frontend_services=>filetype_all }|
                                                  multiselection = abap_true
                                                CHANGING
                                                  file_table  = it_files
                                                  rc          = lv_rc
                                                  user_action = lv_action ).

    IF lv_action = cl_gui_frontend_services=>action_ok.
* wenn mind. zwei Dateien ausgewählt worden sind
      IF lines( it_files ) > 1.
* PDF-Merge Objekt
        DATA(o_pdf_merger) = NEW cl_rspo_pdf_merge( ).

* Dateiliste durchgehen
        LOOP AT it_files ASSIGNING FIELD-SYMBOL(<f>).

          DATA(lv_filesize) = CONV w3param-cont_len( '0' ).
          DATA(it_bin_data) = VALUE w3mimetabtype( ).

* Datei auf Appl. Server hochladen (binary)
          cl_gui_frontend_services=>gui_upload( EXPORTING
                                                  filename   = |{ it_files[ sy-tabix ]-filename }|
                                                  filetype   = 'BIN'
                                                IMPORTING
                                                  filelength = lv_filesize
                                                CHANGING
                                                  data_tab   = it_bin_data ).

* solix -> xstring
          DATA(lv_bin_data) = cl_bcs_convert=>solix_to_xstring( it_solix = it_bin_data ).

* Binärdaten der PDF-Datei als xstring zum Merger-Objekt hinzufügen
          o_pdf_merger->add_document( lv_bin_data ).

          WRITE: / |Hinzugefügt: { it_files[ sy-tabix ]-filename } ({ lv_filesize } Bytes)|.
        ENDLOOP.

* PDF-Dokumente mergen
        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     " Dateiname
                                                        path              = lv_path         " Pfad
                                                        fullpath          = lv_fullpath     " Pfad + Dateiname
                                                        user_action       = lv_action ).    " Benutzeraktion

          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 ).

* Datei lokal speichern
            cl_gui_frontend_services=>gui_download( EXPORTING
                                                      filename                = lv_fullpath
                                                      filetype                = 'BIN'
                                                      bin_filesize            = lv_size_merged
                                                    CHANGING
                                                      data_tab                = it_bin_data_merged ).

            WRITE: / |Gespeichert: { lv_fullpath } ({ lv_size_merged } Bytes)|.

          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.
  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

Links