PDF aus Datenbank lesen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
28 Beiträge • Seite 1 von 2 (current) Nächste
28 Beiträge Seite 1 von 2 (current) Nächste

PDF aus Datenbank lesen

Beitrag von Kenny (ForumUser / 68 / 28 / 0 ) »
Hallo zusammen!

Nachdem ihr mir letztes mal so erfolgreich helfen konntet, wende ich mich nochmals mit einem Problem an Euch.

Aufgabenstellung:

Ich möchte einen Fuba schreiben, welcher mir anhand bestimmter Parameter aus einer Customizingtabelle ein Pdf-Dokument (bzw. den Pfad) liest und das entsprechende PDF zurückliefert.

Problemstellung:

Den Pfad bekomme ich gelesen, jedoch fehlt mir jetzt jegliche Erfahrung im Umgang mit PDF in Abap etc.

Folgendes mache ich bis jetzt:

Code: Alles auswählen.

  "ALB-Dokument_Pfad anhand Importparameter aus Customizing_Tabelle lesen
  SELECT *
    FROM ziss_alb_pdf
    INTO TABLE ta_alb_pdf
    WHERE tariftyp  EQ i_tariftyp
      AND sparte    EQ i_sparte
      AND bukrs     EQ i_bukrs.

  IF sy-subrc EQ 0.


    "Tabelle absteigend nach Datum_Ab sortieren, um aktuellesten Eintrag zu ermitteln
    SORT ta_alb_pdf DESCENDING BY datum_ab.

    "Ersten (aktuellsten) Eintrag lesen
    READ TABLE ta_alb_pdf INTO wa_alb_pdf INDEX 1.

    "PDF_Dokument aus Datenbak lesen
    IF NOT wa_alb_pdf-pfad IS INITIAL.

      CALL FUNCTION 'WS_UPLOAD'
        EXPORTING
          filename                = wa_alb_pdf-pfad
          filetype                = 'BIN'
*    IMPORTING
*      filelength              =
        TABLES
          data_tab                = li_content_bin_file
        EXCEPTIONS
          conversion_error        = 1
          file_open_error         = 2
          file_read_error         = 3
          invalid_type            = 4
          no_batch                = 5
          unknown_error           = 6
          invalid_table_width     = 7
          gui_refuse_filetransfer = 8
          customer_error          = 9
          OTHERS                  = 10.
Ich habe mich für den Fuba: 'WS_UPLOAD' entschieden, da ich dies bereits in einem anderen Programm bei uns gefunden habe. (Ich befürchte aber er ist obsolet)

Jetzt habe ich eine 'BIN' (li_content_bin_file). Das beudet, er findet schon mal was.

Aber wie ich jetzt weiter komme, sodass der Fuba daraus ein PDF erstellt und zurückliefert ist mir absolut unklar.

Ich hoffe jemand kann mir weiterhelfen und Licht ins Dunkle bringen. (Wie ihr seht fehlt mir da noch einiges an Verständnis)

Gruß

Kenny

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: PDF aus Datenbank lesen

Beitrag von black_adept (Top Expert / 4117 / 129 / 952 ) »
Hi Kenny,

deine Frage ist unklar.
Kenny hat geschrieben:Ich möchte einen Fuba schreiben, welcher mir anhand bestimmter Parameter aus einer Customizingtabelle ein Pdf-Dokument (bzw. den Pfad) liest und das entsprechende PDF zurückliefert.
Genau das hast du doch schon erledigt - was soll denn jetzt noch passieren?

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Kenny

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: PDF aus Datenbank lesen

Beitrag von Kenny (ForumUser / 68 / 28 / 0 ) »
Ich dachte ich muss mein (BIN) li_content_bin_file noch in ein PDF wandeln. Aber dies ist wohl schon das Ergebnis, richtig? Wenn ja: Juhuuu :-)

Eine Frage habe ich aber noch: Wenn ich nicht von meinem PC eine Datei auslesen möchte sondern aus einer Unix-Datenbank, wie mache ich dies bzw. gibt es dafür einen FUBA?

Re: PDF aus Datenbank lesen

Beitrag von JHM (Top Expert / 1201 / 1 / 197 ) »
Kenny hat geschrieben:Eine Frage habe ich aber noch: Wenn ich nicht von meinem PC eine Datei auslesen möchte sondern aus einer Unix-Datenbank, wie mache ich dies bzw. gibt es dafür einen FUBA?
Unix-Datenbank = SAP-Datenbank?
Stand-Alone-Unix-DB, die bereits über DBCO an das SAP System angebunden?
Stand-Alone-Unix-DB ohne SAP Verbindung?

Mehr Infos bitte, sonst kann man dir nicht helfen!

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
Kenny

Gruß Hendrik

Re: PDF aus Datenbank lesen

Beitrag von Kenny (ForumUser / 68 / 28 / 0 ) »
Hallo zusammen,

vielen Dank erstmal für Eure Antworten.

@JHM: Natürlich hast du recht und meine Informationen reichen nicht um helfen zu können.
Ich habe heute morgen Rücksprache gehalten und nun ist mir klarer was eigentlich gewünscht ist:

Mit der UNIX-Datenbank war nichts anderes als der Applicationsserver (SAP) gemeint. Also nicht wirklich Wildes.
Dennoch weiss ich nicht wie ich eine Datei vom Applicationsserver lese.

Gibt es einen FUBA ähnlich meinem benutztem dem ich einfach das Verzeichnis und meinen Pfad mitgebe oder wie läuft das? (Google hat mir nicht geholfen)

Re: PDF aus Datenbank lesen

Beitrag von JHM (Top Expert / 1201 / 1 / 197 ) »
Kenny hat geschrieben:Gibt es einen FUBA ähnlich meinem benutztem dem ich einfach das Verzeichnis und meinen Pfad mitgebe oder wie läuft das?
File-Arbeiten in ABAP auf dem AppServer: OPEN DATASET, TRANSFER, CLOSE DATASET (mehr dazu findest du in der F1-Hilfe).

Um sich die Files/Verzeichnisse auf dem AppServer anzuschauen kannst du die Transaktion AL11 verwenden.

Um aus ABAP heraus ein Verzeichnis einzulesen, kann der FuBa: EPS_GET_DIRECTORY_LISTING verwendet werden.

Evtl. solltest du dich auch mal mit der TA FILE aus einandersetzten. Damit kann man logische Filenamen erzeugen, die das Leben leichter machen. Hierfür solltest du aber eine Schulung bzw. ein Training von deinem AG bekommen.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
Kenny

Gruß Hendrik

Re: PDF aus Datenbank lesen

Beitrag von Kenny (ForumUser / 68 / 28 / 0 ) »
JHM hat geschrieben:
Kenny hat geschrieben:Gibt es einen FUBA ähnlich meinem benutztem dem ich einfach das Verzeichnis und meinen Pfad mitgebe oder wie läuft das?
File-Arbeiten in ABAP auf dem AppServer: OPEN DATASET, TRANSFER, CLOSE DATASET (mehr dazu findest du in der F1-Hilfe).

Um sich die Files/Verzeichnisse auf dem AppServer anzuschauen kannst du die Transaktion AL11 verwenden.

Um aus ABAP heraus ein Verzeichnis einzulesen, kann der FuBa: EPS_GET_DIRECTORY_LISTING verwendet werden.

Evtl. solltest du dich auch mal mit der TA FILE aus einandersetzten. Damit kann man logische Filenamen erzeugen, die das Leben leichter machen. Hierfür solltest du aber eine Schulung bzw. ein Training von deinem AG bekommen.

Hallo Hendrik,

vielen Dank für deine Antwort.

Bin gerade schon dabei mich einzulesen. Ich habe nur noch zwei allgemeine Fragen dazu.

1) Kann ich direkt ein PDF auf dem Applikationsserver ablegen oder muss es eine BIN sein.
2) Wenn es ein PDF ist, kann ich dann direkt mit Read Dataset die Datei lesen. Wenn ja welchen Datentyp bekomme ich dann zurückgeliefert?

Re: PDF aus Datenbank lesen

Beitrag von black_adept (Top Expert / 4117 / 129 / 952 ) »
Hallo Kenny,

1.) Wie du eine Datei benennst ist doch völlig egal - ob sie nun .pdf oder .bin oder .hugo heißt . Selbst in Windows kann man die meisten Dateien umbenennen auf irgendetwas mehr oder weniger Sinnvolles. Wichtig ist doch der Inhalt des Files
2.) Mit open Dataset liest du den Inhalt einer Datei. Hier musst du eigentlich nur wissen ob der File dir Binärdaten zurückliefern soll oder das Ganze zeilenweise passiert. Dafür bitte die F1-Hilfe zu open dataset lesen.
3.) Auf einmal willst du die Datei nicht nur lesen sondern auch ablegen. Und das auch noch auf dem(einem) Applikationsserver. Wenn ihr über mehr als einen AppServer verfügt und das Verzeichnis auf das du schreibst nicht über alle Appserver erreichbar ist wirst du Probleme bekommen. Aber es gibt diverse Stellen im SAP wo man recht einfach Daten hin verfrachten kann. Mein Lieblingsablageort ist z.B. das Business Object Repository ( BOR) welches über die Transaktion OAER ( oder OAOR ) erreicht und auch von einem Nicht-Programmierer bestückt/eingesehen werden kann.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: PDF aus Datenbank lesen

Beitrag von Kenny (ForumUser / 68 / 28 / 0 ) »
black_adept hat geschrieben:Hallo Kenny,

1.) Wie du eine Datei benennst ist doch völlig egal - ob sie nun .pdf oder .bin oder .hugo heißt . Selbst in Windows kann man die meisten Dateien umbenennen auf irgendetwas mehr oder weniger Sinnvolles. Wichtig ist doch der Inhalt des Files
2.) Mit open Dataset liest du den Inhalt einer Datei. Hier musst du eigentlich nur wissen ob der File dir Binärdaten zurückliefern soll oder das Ganze zeilenweise passiert. Dafür bitte die F1-Hilfe zu open dataset lesen.
3.) Auf einmal willst du die Datei nicht nur lesen sondern auch ablegen. Und das auch noch auf dem(einem) Applikationsserver. Wenn ihr über mehr als einen AppServer verfügt und das Verzeichnis auf das du schreibst nicht über alle Appserver erreichbar ist wirst du Probleme bekommen. Aber es gibt diverse Stellen im SAP wo man recht einfach Daten hin verfrachten kann. Mein Lieblingsablageort ist z.B. das Business Object Repository ( BOR) welches über die Transaktion OAER ( oder OAOR ) erreicht und auch von einem Nicht-Programmierer bestückt/eingesehen werden kann.

Hey Stefan vielen Dank.

zu Punkt 3. Die Ablage auf dem AppServer war leider so gewünscht :-(

zu Punkt 2: Ich kann die doch mit OpenDataset nicht nur lesen sonder auch zum schreiben nutzen oder?
Ich schreibe mein PDF jetzt gerade so auf den Appserver:
Ist nur ein Auschnitt:

Code: Alles auswählen.



DATA:     li_content_bin_file TYPE  solix_tab,
             wa_content_bin_file LIKE LINE OF li_content_bin_file.

DATA: UX_FILE LIKE AUTHB-FILENAME Value '/home/test/testpdfgal.bin'.

      IF wa_ziss_alb_pdf-pfad IS NOT INITIAL.

      "Datei vom Präsentationsserver einlesen
        CALL FUNCTION 'WS_UPLOAD'
          EXPORTING
            filename                = wa_ziss_alb_pdf-pfad
            filetype                = 'BIN'
*    IMPORTING
*      filelength              =
          TABLES
            data_tab                = li_content_bin_file
          EXCEPTIONS
            conversion_error        = 1
            file_open_error         = 2
            file_read_error         = 3
            invalid_type            = 4
            no_batch                = 5
            unknown_error           = 6
            invalid_table_width     = 7
            gui_refuse_filetransfer = 8
            customer_error          = 9
            OTHERS                  = 10.

        IF sy-subrc EQ 0.
          "Datei auf dem Applicationsserver speichern           
          OPEN DATASET ux_file FOR OUTPUT IN BINARY MODE.

          LOOP AT li_content_bin_file INTO wa_content_bin_file.
            TRANSFER wa_content_bin_file TO ux_file.
          ENDLOOP.
          
          CLOSE DATASET ux_file.

        ELSE.
          "Datei konnte nicht hochgeladen werden
          MESSAGE text-005 TYPE 'S'.

        ENDIF.
Zumindest schreibt er was :-) Ob es richtig ist weiss ich noch nicht!

Re: PDF aus Datenbank lesen

Beitrag von black_adept (Top Expert / 4117 / 129 / 952 ) »
Ob das geklappt hat kannst du recht leicht überprüfen.

Lege die Datei die du mit open dataset wegschreibst mal auf dem üblichen Temp-Verzeichnis des Applicationservers ab ( also ohne angabe von Pfadnamen ). Dann findest du die Datei auch in der AL11.
Danach kannst du die Datei von dort mit der Transaktion CG3Y oder CG3Z ( eine ist für Upload, eine für Download ) auch wieder auf deinen eigenen Rechner ziehen. Wenn sie danach noch als PDF aufgemacht werden kann hast du alles richtig gemacht.


Und noch ein Hinweis zu Transaktion OAER. Die Daten dort werden auch im SAP abgelegt. Nur dass man dort von allen einzelnen Applikationsservern darauf zugreifen kann und es halt ein wenig offizieller ist.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Kenny

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: PDF aus Datenbank lesen

Beitrag von Kenny (ForumUser / 68 / 28 / 0 ) »
black_adept hat geschrieben:Ob das geklappt hat kannst du recht leicht überprüfen.

Lege die Datei die du mit open dataset wegschreibst mal auf dem üblichen Temp-Verzeichnis des Applicationservers ab ( also ohne angabe von Pfadnamen ). Dann findest du die Datei auch in der AL11.
Danach kannst du die Datei von dort mit der Transaktion CG3Y oder CG3Z ( eine ist für Upload, eine für Download ) auch wieder auf deinen eigenen Rechner ziehen. Wenn sie danach noch als PDF aufgemacht werden kann hast du alles richtig gemacht.


Und noch ein Hinweis zu Transaktion OAER. Die Daten dort werden auch im SAP abgelegt. Nur dass man dort von allen einzelnen Applikationsservern darauf zugreifen kann und es halt ein wenig offizieller ist.
Nein, natürlich funktioniert es nicht.

Ich bekomme eine pdf- Datei vom Desktop über den FUBA 'WS_UPLOAD' eingelesen in li_content_bin_file und schreibe die Daten wie bereits beschrieben:

Code: Alles auswählen.

OPEN DATASET ux_file FOR OUTPUT IN BINARY MODE.

          LOOP AT li_content_bin_file INTO wa_content_bin_file.
            TRANSFER wa_content_bin_file TO ux_file.
          ENDLOOP.
          
          CLOSE DATASET ux_file.
auch weg.

Er legt mir auch eine Datei auf dem Applikationsserver ab. Diese sieht aber irgendwie kryptisch aus und wenn ich sie wieder downloade kann ich sie nicht öffen-> irgendwas ist falsch.

Ich weiss bloß nicht wo ich suchen soll.

PS: Black, habe es auf deinem Weg probiert-> gleiches Ergebnis!

Re: PDF aus Datenbank lesen

Beitrag von black_adept (Top Expert / 4117 / 129 / 952 ) »
Wie hast du die Datei vom AppServer heruntergeladen?
Wie hast du die Datei genannt?
Was für eine Fehlermeldung gibt es?
Hast du mal einen Binärvergleich gemacht zw. der Original und der verarbeiteten Datei?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: PDF aus Datenbank lesen

Beitrag von Kenny (ForumUser / 68 / 28 / 0 ) »
So sieht mein vollständiges Programm aus:

Code: Alles auswählen.



DATA:     ta_ziss_alb_pdf     TYPE TABLE OF ziss_alb_pdf,
          wa_ziss_alb_pdf     LIKE LINE OF ta_ziss_alb_pdf,
          v_pfad              TYPE localfile,
          tab TYPE TABLE OF tab_type, "löschen prüfen
          wa_tab like line of tab,
          v_file2 type string. "löschen prüfen


DATA:     li_content_bin_file TYPE  solix_tab,
          wa_content_bin_file LIKE LINE OF li_content_bin_file.

*Data:     ux_file like authb-filename.

DATA:     t_imex LIKE bifmimex.


*&---------------------------------------------------------------------*
" Definition Selektionbild
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-010.

PARAMETERS:     p_ttyp     TYPE tariftyp,   "Tariftyp
                p_sparte   TYPE sparte,    "Sparte
                p_bukrs    TYPE bukrs.     "Buchungskreis

PARAMETERS:     p_date     TYPE date.      "AB_Datum
PARAMETERS:     p_dname    TYPE string.    "Dateiname


SELECTION-SCREEN END OF BLOCK 1.
SELECTION-SCREEN BEGIN OF BLOCK 4 WITH FRAME TITLE text-040.
PARAMETERS p_file  LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK 4.

SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE text-020.
PARAMETERS:     p_appli     TYPE authb-filename OBLIGATORY DEFAULT '/HOME/T61FILES/'.
SELECTION-SCREEN END OF BLOCK 2.

SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE text-030.
PARAMETERS:     p_check    AS CHECKBOX DEFAULT 'X'.       "Prüfen gegen Customizing
SELECTION-SCREEN END OF BLOCK 3.


"F4-Hilfe Dateiauswahl

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = p_file.

START-OF-SELECTION.


  v_pfad = p_appli.
  TRANSLATE v_pfad TO UPPER CASE.
  "Pfad erstellen
  CONCATENATE v_pfad p_dname '.PDF' INTO v_pfad.

*&---------------------------------------------------------------------*
*Prüfung gegen Customizing
*&---------------------------------------------------------------------*

  "ALB-Dokument_Pfad anhand Importparameter aus Customizing_Tabelle lesen
  SELECT *
    FROM ziss_alb_pdf
    INTO TABLE ta_ziss_alb_pdf
    WHERE tariftyp  EQ p_ttyp
      AND sparte    EQ p_sparte
      AND bukrs     EQ p_bukrs
      AND datum_ab  EQ p_date
      AND dateiname EQ p_dname
      AND pfad EQ v_pfad.

  IF sy-subrc <> 0.
    "Eintrag noch nicht im Customizing Tabelle: ZISS_
    MESSAGE text-001 TYPE 'S'.

  ELSE.
    "Prüfen, ob Testmodus
    IF p_check EQ 'X'.
      "Nur Testen, Meldung ausgeben, dass gespeichert werden kann
      MESSAGE text-002 TYPE 'I'.
    ELSE.
      "Kein Testmodus, Datei auf dem Applikationsserver speichern
      IF p_file IS NOT INITIAL.



        "Datei vom Präsentationsserver einlesen
        CALL FUNCTION 'WS_UPLOAD'
          EXPORTING
            filename                = p_file
            filetype                = 'BIN'
*    IMPORTING
*      filelength              =
          TABLES
            data_tab                = li_content_bin_file
          EXCEPTIONS
            conversion_error        = 1
            file_open_error         = 2
            file_read_error         = 3
            invalid_type            = 4
            no_batch                = 5
            unknown_error           = 6
            invalid_table_width     = 7
            gui_refuse_filetransfer = 8
            customer_error          = 9
            OTHERS                  = 10.

        IF sy-subrc EQ 0.

          "Pfad erstellen
*           TRANSLATE v_pfad to LOWER CASE.


          DATA: ux_file LIKE authb-filename VALUE '/home/t61files/testdatei.bin'.

          ux_file = v_pfad.

          "Datei auf dem Applicationsserver speichern
          OPEN DATASET ux_file FOR OUTPUT IN BINARY MODE.

*          LOOP AT li_content_bin_file INTO wa_content_bin_file.
*            TRANSFER wa_content_bin_file TO ux_file.
*          ENDLOOP.

          LOOP AT tab INTO wa_tab.
            TRANSFER wa_tab TO ux_file.
          ENDLOOP.

          CLOSE DATASET ux_file.

          IF sy-subrc <> 0.
            MESSAGE text-003 TYPE 'I'.
          ENDIF.

        ELSE.
          "Datei konnte nicht hochgeladen werden
          MESSAGE text-005 TYPE 'S'.

        ENDIF.


      ENDIF.   "Ende Prüfung, ob Tabelle in WA gelsen werden konnte

    ENDIF.  "Ende Prüfung, ob Testmodus

  ENDIF.  "Ende Prüfung, ob Customizing Eintrag vorhande

Zu deinen Fragen:

1) Ich lade ja nicht vom Server herunter sondern speichere eine Datei dort welche ich auf dem Präsentationsserver habe und im Selektionsbild auswähle
2) Die Datei heisst : testdatei.bin (Pfad und Name sind im oberen Code hart vergeben: Dies aber nur zu Testzwecken
3) Ich sehe die gespeicherte Datei (testdatei.bin) auf dem AppServer. Downloade diese auf den Desktop, gebe den Namen an: Testdatei.pdf, Datenformat: ASC (zusätzlich zweite als Datenformat: BIN)
Ich habe zwei Arten von Fehlern:
- 3a: Fehler1: Ein PDF kann zwar geöffnet werden, man sieht aber nur die erste Zeile und dann kommt der Fehler: Nicht genügend Daten für BILD (Fehlermeldung im Adobe Reader)
- 3b: Fehler2: Versuch mit einem anderem PDF: Beim öffnen: Fehler beim öffnen, Datei ist beschädfigt.

Allgemein sehen die Datein auf der AppServer auch echt unterschiedlich aus (Wie gesagt, ich teste mein Report mit zwei unterschiedlichen PDF's):
Auszug Test mit dem ersten PDF:

%PDF-1.3#
%âãÏÓ#
%RSTXPDF3 Parameters:#
2 0 obj#
<<#
/Type /FontDescriptor#
/Ascent 720#
/CapHeight 660#
/Descent -270#
/Flags 32#
/FontBBox [-177 -269 1123 866]
/FontName /Helvetica#
/ItalicAngle 0#
/StemV 105#
>>#
endobj#
3 0 obj#
/WinAnsiEncoding#
endobj#
4 0 obj#


*****************

Auszug Test mit dem zweitem PDF:

Inhalt der Datei: /home/t61files/test.pdf
%PDF-1.5#%âãÏÓ#
10 0 obj#<</Linearized 1/L 20534/O 12/E 16015/N 1/T 20232/H [ 476
23 0 obj#<</DecodeParms<</Columns 4/Predictor 12>>/Filter/FlateDec
hÞbbd#``b`Ê###~@#q'#`###l½@#5#ÄÒ##ìÿ@,-#X##ð#qc#Ä#L#&F## ###I#þ3#ÿ
##
endstream#endobj#startxref#
0#
%%EOF#
#
35 0 obj#<</Filter/FlateDecode/I 97/L 81/Length 75/S 38>>stream#
hÞb``àf``Òb##ëc#¨###Y#8##Ÿ¡##a'###Ól_#Yáf®î"#=E#ÌÙ#ÓV#

Re: PDF aus Datenbank lesen

Beitrag von black_adept (Top Expert / 4117 / 129 / 952 ) »
Hi Kenny,

bevor ich mir das jetzt im Detail anschaue hier einfach ein Minimalprogramm, welches funktioniert.

Code: Alles auswählen.

REPORT.

*----------------------------------------------------------------------*
*       CLASS lcl_demo DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_demo DEFINITION.
  PUBLIC SECTION.
    METHODS: upload_from_frontend  IMPORTING iv_filename_frontend TYPE clike,
             save_to_backend       IMPORTING iv_filename_backend  TYPE clike.

    DATA:    gt_binary_data        TYPE solix_tab,
             gv_binary_data_length TYPE i.
ENDCLASS.                    "lcl_demo DEFINITION

DATA: go_demo TYPE REF TO lcl_demo.


PARAMETERS: p_file TYPE string OBLIGATORY DEFAULT 'c:\temp\test.pdf' LOWER CASE.


END-OF-SELECTION.
  CREATE OBJECT go_demo.
  go_demo->upload_from_frontend( p_file ).
  go_demo->save_to_backend( 'Demo_to_backend.pdf' ).


*----------------------------------------------------------------------*
*       CLASS lcl_demo IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_demo IMPLEMENTATION.
  METHOD upload_from_frontend.
    DATA: lv_filename TYPE string.

    lv_filename = iv_filename_frontend.
    cl_gui_frontend_services=>gui_upload(
      EXPORTING
        filename                = lv_filename
        filetype                = 'BIN'
      IMPORTING
        filelength              = me->gv_binary_data_length
      CHANGING
        data_tab                = me->gt_binary_data
      EXCEPTIONS
        file_open_error         = 1
        file_read_error         = 2
        no_batch                = 3
        gui_refuse_filetransfer = 4
        invalid_type            = 5
        no_authority            = 6
        unknown_error           = 7
        bad_data_format         = 8
        header_not_allowed      = 9
        separator_not_allowed   = 10
        header_too_long         = 11
        unknown_dp_error        = 12
        access_denied           = 13
        dp_out_of_memory        = 14
        disk_full               = 15
        dp_timeout              = 16
        not_supported_by_gui    = 17
        error_no_gui            = 18
        OTHERS                  = 19  ).

  ENDMETHOD.                    "upload_file

  METHOD save_to_backend.
    DATA: lv_remaining_bytes TYPE i.
    FIELD-SYMBOLS: <binary_data> TYPE solix.

    OPEN DATASET iv_filename_backend FOR OUTPUT IN BINARY MODE.
    CHECK sy-subrc = 0.

    lv_remaining_bytes = me->gv_binary_data_length .

    LOOP AT me->gt_binary_data ASSIGNING <binary_data>.
      IF lv_remaining_bytes >= 255.
        TRANSFER <binary_data>-line TO iv_filename_backend.
      ELSE.
        TRANSFER <binary_data>-line(lv_remaining_bytes) TO iv_filename_backend.
      ENDIF.
      SUBTRACT 255 FROM lv_remaining_bytes.
    ENDLOOP.

    CLOSE DATASET iv_filename_backend.
  ENDMETHOD.                    "save_to_backend
ENDCLASS.                    "lcl_demo IMPLEMENTATION

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Kenny

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: PDF aus Datenbank lesen

Beitrag von Kenny (ForumUser / 68 / 28 / 0 ) »
Wow, hast du das jetzt extra für mich gemacht? Tausend dank!

Ich schaue es mir mal an. Danke danke

Vergleichbare Themen

5
Antw.
4855
Views
1
Antw.
8083
Views
Unterschied: Sequentielles lesen, direktes lesen
von MarkusW » 07.08.2008 16:46 • Verfasst in ABAP® für Anfänger
4
Antw.
3277
Views
Datenbank PNP(CE)
von Michael Weyland » 17.03.2016 15:39 • Verfasst in Human Resources
3
Antw.
1484
Views
Beschleunigen Datenbank ADA
von Der Mühlviertler » 19.06.2006 17:38 • Verfasst in Financials
6
Antw.
3474
Views
Datenbank modell
von kostonstyle » 18.09.2008 08:59 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Feldwerte vergleichen
vor 10 Stunden von wreichelt 2 / 30
Workflow-Datenfluss mit Multi-Line-Container
vor 12 Stunden von ewx gelöst 2 / 92
Mahnung erstellen
vor 16 Stunden von Sebastian82 4 / 123
Absprung VA02 Position
vor 2 Tagen von gs3rr4 gelöst 3 / 119

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Feldwerte vergleichen
vor 10 Stunden von wreichelt 2 / 30
Workflow-Datenfluss mit Multi-Line-Container
vor 12 Stunden von ewx gelöst 2 / 92
Mahnung erstellen
vor 16 Stunden von Sebastian82 4 / 123
Absprung VA02 Position
vor 2 Tagen von gs3rr4 gelöst 3 / 119

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
vor 2 Tagen von Manfred K. 1 / 82
Export von Spools in XLSX
vor einer Woche von abapamateur 1 / 832
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 1439