Standardtext ins PDF-Format konvertieren
Mithilfe eines Standardreports ist es möglich, einen SAP-Standardtext ins PDF-Format zu konvertieren und abzuspeichern.
Der Report RSTXPDFT konvertiert einen Standardtext ins PDF-Format. Die Datei wird auf dem Client gespeichert und kann dann mit dem AcrobatReader gelesen werden.
Mit Programm RSTXPDFT4 können Spoolaufträge ins PDF-Format kopiert werden.
Hilfreich ist auch der Funktionsbaustein “CONVERT_OTF”, dem man das Zielformat “PDF” mitgeben kann.
Folgendes kleines Programm liest alle Spoolaufträge eines Benutzers/ Datums ein und zeigt diese als Liste an. Markierte Einträge werden in als PDF-File in dem zuvor angegeben Verzeichnis gespeichert.
Programminfo
Der PF-Status muss noch angelegt werden! Machen Sie hierzu in der Zeile
SET PF-STATUS ‘LIST’.
einen Doppelklick auf den Bezeichner ‘LIST’. Folgende Funktionen müssen eingetragen werden:
- DISP um den markierten Spoolauftrag anzuzeigen
Passendes Icon: ICON_LAYOUT_CONTROL - EXPO um den markierten Spoolauftrag als PDF-Datei im angegebenen Verzeichnis zu speichern.
Passendes Icon: ICON_EXPORT - Jeweils %EX für
Ordnen Sie den Funktionen Funktionstasten Ihrer Wahl zu. [F7] steht in den meisten Standardprogrammen für “Anzeige“.
Coding
REPORT zz_convert2pdf.
TYPE-POOLS sp01r.
DATA: t_otf LIKE itcoo OCCURS 0 WITH HEADER LINE,
t_pdf LIKE tline OCCURS 0 WITH HEADER LINE,
t_buf LIKE soli OCCURS 0 WITH HEADER LINE,
pdf_size TYPE i,
rqid(10),
cb, “checkbox
t_idlist TYPE sp01r_id_list,
l_idlist TYPE sp01r_id,
t_tsp01 LIKE tsp01sys OCCURS 0 WITH HEADER LINE.
SELECT-OPTIONS:
s_owner FOR sy-uname DEFAULT sy-uname,
s_datum FOR sy-datum DEFAULT sy-datum.
PARAMETERS:
p_pfad(130) DEFAULT ‘c:temp’ LOWER CASE.
START-OF-SELECTION.
* Spoolaufträge zur Selektion lesen
CALL FUNCTION ‘RSPO_ISELECT_SPOOLREQS’
EXPORTING
rfcsystem = ‘NONE’
TABLES
s_rqowne = s_owner
s_rqcred = s_datum
result_tsp01 = t_tsp01
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc = 0.
* List-Status muss die Funktionen “DISP” und “EXPO” enthalten
SET PF-STATUS ‘LIST’.
LOOP AT t_tsp01 WHERE rqdoctype = ‘OTF’
OR rqdoctype = ‘LIST’.
WRITE: / cb AS CHECKBOX INPUT ON,
t_tsp01-rqident,
t_tsp01-rq0name,
t_tsp01-rq1name,
t_tsp01-rq2name,
t_tsp01-rqtitle.
HIDE: t_tsp01.
ENDLOOP.
CLEAR t_tsp01.
ENDIF.
END-OF-SELECTION.
* Abfrage der Funktionscodes
AT USER-COMMAND.
CASE sy-ucomm.
WHEN ‘DISP’.
* Spoolauftrag, auf dem der Cursor steht, anzeigen
CHECK t_tsp01-rqident <> space.
REFRESH t_idlist.
l_idlist-id = t_tsp01-rqident.
APPEND l_idlist TO t_idlist.
CALL FUNCTION ‘RSPO_RID_SPOOLREQ_DISP’
EXPORTING
id_list = t_idlist.
WHEN ‘EXPO’.
* Markierte Einträge als PDF exportieren
CLEAR cb.
DO.
READ LINE sy-index FIELD VALUE cb t_tsp01-rqident.
IF sy-subrc > 0.
EXIT.
ELSEif cb = ‘X’.
CASE t_tsp01-rqdoctype.
WHEN ‘OTF’.
PERFORM export_otf2pdf USING t_tsp01-rqident.
WHEN ‘LIST’.
PERFORM export_list2pdf USING t_tsp01-rqident.
ENDCASE.
ENDIF.
ENDDO.
ENDCASE.
CLEAR t_tsp01.
*———————————————————————*
* FORM export_otf2pdf *
*———————————————————————*
FORM export_otf2pdf USING value(f_rqid).
DATA file LIKE rlgrap-filename.
REFRESH: t_buf, t_otf, t_pdf.
* Spoolauftrag lesen
CALL FUNCTION ‘RSPO_RETURN_SPOOLJOB’
EXPORTING
rqident = f_rqid
desired_type = ‘OTF’
TABLES
buffer = t_buf
EXCEPTIONS
no_such_job = 1
job_contains_no_data = 2
selection_empty = 3
no_permission = 4
can_not_access = 5
read_error = 6
type_no_match = 7
OTHERS = 8.
IF sy-subrc = 0.
APPEND LINES OF t_buf TO t_otf.
* Spoolauftrag umwandeln nach PDF
CALL FUNCTION ‘CONVERT_OTF’
EXPORTING
format = ‘PDF’
max_linewidth = 132
archive_index = ‘ ‘
IMPORTING
bin_filesize = pdf_size
TABLES
otf = t_otf
lines = t_pdf
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc = 0.
* Dateinamen basteln
rqid = f_rqid.
CONCATENATE t_tsp01-rqtitle ‘(‘ rqid ‘).PDF’
INTO file separated by space.
CONDENSE file.
translate file using: ‘ _’, ‘/_’, ‘_’, ‘; ‘, ‘, ‘, ‘: ‘, ‘* ‘.
shift file right deleting trailing ‘_’.
shift file left deleting leading ‘ ‘.
CONCATENATE p_pfad ” file INTO file.
* Datei speichern
CALL FUNCTION ‘WS_DOWNLOAD’
EXPORTING
bin_filesize = pdf_size
codepage = ‘ ‘
filename = file
filetype = ‘BIN’
TABLES
data_tab = t_pdf.
IF sy-subrc = 0.
* Datei erfolgreich exportiert.
MESSAGE s131(shdi) WITH space file.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*———————————————————————*
* FORM export_list_2pdf *
*———————————————————————*
FORM export_list2pdf USING value(f_rqid).
DATA: file LIKE rlgrap-filename.
DATA: pdf_size type i.
DATA: t_pdf like tline occurs 0 with header line.
CLEAR pdf_size.
REFRESH: t_buf, t_otf, t_pdf.
* Spoolauftrag umwandeln nach PDF
call function ‘CONVERT_ABAPSPOOLJOB_2_PDF’
exporting
src_spoolid = f_rqid
no_dialog = space
importing
pdf_bytecount = pdf_size
tables
pdf = t_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
others = 12.
IF sy-subrc = 0.
* Dateinamen basteln
rqid = f_rqid.
CONCATENATE t_tsp01-rqtitle ‘(‘ rqid ‘).PDF’
INTO file separated by space.
CONDENSE file.
translate file using: ‘ _’, ‘/_’, ‘_’, ‘; ‘, ‘, ‘, ‘: ‘, ‘* ‘.
shift file right deleting trailing ‘_’.
shift file left deleting leading ‘ ‘.
CONCATENATE p_pfad ” file INTO file.
* Datei speichern
CALL FUNCTION ‘WS_DOWNLOAD’
EXPORTING
bin_filesize = pdf_size
codepage = ‘ ‘
filename = file
filetype = ‘BIN’
TABLES
data_tab = t_pdf.
IF sy-subrc = 0.
* Datei erfolgreich exportiert.
MESSAGE s131(shdi) WITH space file.
ENDIF.
ENDIF.
ENDFORM.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024