Hallo,
ich habe folgendes Problem: Die aus einem ABAP-Report erstellten PDF-Dateien sind zu groß (34 MB) um sie über SAP per E-Mail zu verschicken.
Wenn ich die Datei mit pdf-create auf dem lokalen Rechner erstelle ist die Datei nur 2 MB groß.
Wir verwenden zur Erstellung der PDF die beiden Funktionsbausteine „CONVERT_OTFSPOOLJOB_2_PDF“ und „CONVERT_ABAPSPOOLJOB_2_PDF”.
Ich habe keine anderen Funktionsbausteine gefunden.
Da der Report als Job läuft scheidet leider auch die Möglichkeit aus die Datei auf dem Client abzulegen und „METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE“ ein entsprechendes Programm auf den Client zu starten.
Ich hatte auch noch geschaut ob ich das PDF nicht zippen kann. Da habe ich die „CL_ABAP_GZIP“ gefunden. Wenn ich es aber richtig gelesen habe, funktionier bei dem Baustein nur das Entpacken aber nicht das Packen.
Hat jemand eine Idee?
Vielen Dank und Gruß.
Thomas
Hier der Quelltextauszug
if is_otf = 'X'.
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = spoolid
NO_DIALOG = ' '
IMPORTING
PDF_BYTECOUNT = numbytes
PDF_SPOOLID = pdfspoolid
BTC_JOBNAME = jobname
BTC_JOBCOUNT = jobcount
TABLES
PDF = pdf
EXCEPTIONS
ERR_NO_OTF_SPOOLJOB = 1
ERR_NO_SPOOLJOB = 2
ERR_NO_PERMISSION = 3
ERR_CONV_NOT_POSSIBLE = 4
ERR_BAD_DSTDEVICE = 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.
case sy-subrc.
when 0.
clear rc.
when 1.
msgno = '703'.
perform applog-message using
'E' '/SDV/HA_I' msgno space space space space.
exit.
when 2.
msgno = '704'.
perform applog-message using
'E' '/SDV/HA_I' msgno sidc space space space.
exit.
when 3.
msgno = '705'.
perform applog-message using
'E' '/SDV/HA_I' msgno space space space space.
exit.
when others.
msgno = '706'.
perform applog-message using
'E' '/SDV/HA_I' msgno space space space space.
exit.
endcase.
else.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = spoolid
NO_DIALOG = ' '
IMPORTING
PDF_BYTECOUNT = numbytes
PDF_SPOOLID = pdfspoolid
BTC_JOBNAME = jobname
BTC_JOBCOUNT = jobcount
TABLES
PDF = 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.
case sy-subrc.
when 0.
clear rc.
when 1.
msgno = '703'.
perform applog-message using
'E' '/SDV/HA_I' msgno space space space space.
exit.
when 2.
msgno = '704'.
perform applog-message using
'E' '/SDV/HA_I' msgno sidc space space space.
exit.
when 3.
msgno = '705'.
perform applog-message using
'E' '/SDV/HA_I' msgno space space space space.
exit.
when others.
msgno = '706'.
perform applog-message using
'E' '/SDV/HA_I' msgno space space space space.
exit.
endcase.
ENDIF.
Anfänger hat geschrieben:
Der Fachbereich möchte übrigens nicht, dass die Datei als zip verschickt wird.
Sorry musste gerade kurz Lachen, solch Fachbereich-Fachkapazitäten kenne ich auch.
zu blöd ein zip zu öffnen aber ne grosse Fresse haben. ach ja und wichtig sind die immer .... ganz schlimm
so jetzt zu dem Problem, kannst du nicht den FUBA CONVERT_OTF_2_PDF nehmen ?
Wir hatten dasselbe Problem.
Sofern es möglich ist zusätzliche Software auf dem Appl.Server zu installieren würde ich Ghostscript empfehlen.
Damit kann man recht viel in Bezug auf PDFs machen z.B. auch für bestimmte "Ausgabemedien" aufbereiten.
Wir haben uns mit dem "Fachbereich" auf "Screen" geeignet. d.h. Alle Bilder im PDF werden auf 72 dpi runtergerechnet.
Damit konnte wir 30 MB auf angenehme 1 MB runterdampfen. Mit dem Nachteil, dass man die Dinger nur am Bildschirm anzeigen kann.
Ausdruck ist so nicht mehr möglich.
Dadurch, das man die Software am Appl.Server hat funktioniert das Ganze auch im Batch-Modus.
PDF am Appl.Server im Filesystem ablegen
Ghostscript mit Betriebssystem-Kommando aufrufen
Neues PDF wieder einlesen.
lg
ADT
P.S.: CL_ABAP_GZIP kann sowohl komprimieren als auch entpacken.
P.P.S.: Zusätzlich zu Ghostscript würde ich auch die xPDF-Library empfehlen. Damit kann man PDFs z.B. in Textdateien umwandeln (Funktioniert weit besser als OTF_TO_TEXT)
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
vieln Dank für eure Antworten. Ich werde den Hinweis mit dem Appl.Server verfolgen.
Wenn ich es richtig sehe ist Ghostscript ein "Windows-Programm" wir haben aber Linux.
Ich werde einmal schauen, ob es auch ein ähnliches Programm für Linux finde.
Wenn ich weitere Erkenntnisse habe melde ich mich wieder.
Sowohl Ghostscript als auch das erwähnte xPDF stammen ursprünglich aus der Unix/Linux Welt und mussten erst aufwändig nach Windof portiert werden
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.