abap Liste formatieren zu PDF

Getting started ... Alles für einen gelungenen Start.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

abap Liste formatieren zu PDF

Beitrag von Juri (ForumUser / 22 / 8 / 0 ) »
Hallo Community,

ich sollte mehrere Spools / vom TYP 'LIST' als PDF speichern.
hier gibt es ja das tool /report RSTXPDFT4

doch hier ist das Problem das man hier nur einen Spoolauftrag eingeben kann.
gibt es die Möglichkeit diesen zu erweitern so das mehrere Spoolaufträge eingegeben werden können ?

vorab schon mal danke

VG

Juri

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


Re: abap Liste formatieren zu PDF

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
Du könntest RSTXPDFT4 kopieren und für deine Zwecke anpassen. Bei mir hat der Report 260 Zeilen das ist recht überschaubar. Im Wesentlichen bestimmt der RSTXPDFT4 ob der Spool im Typ OTF vorliegt oder nicht. Je nachdem ruft er den Baustein CONVERT_OTFSPOOLJOB_2_PDF oder CONVERT_ABAPSPOOLJOB_2_PDF auf, um einen PDF-Strom zu erzeugen und diesen dann in der gewünschten Datei abzuspeichern.
Wenn du mehrere Spoolaufträge hast, brauchst du für die Spoolaufträge ein SELECT-OPTIONS, und selektierst dir die Aufträge aus der Tabelle TSP01. Dann solltest du einen Eingabeparameter verwenden um das Verzeichnis zu bestimmen, in dem die Dateien auf dem Frontend gespeichert werden sollen.
Dann machst du einen LOOP über deinen Arbeitsvorrat und speicherst den jeweiligen PDF-Strom in dein Verzeichnis mit einem sprechenden Dateinamen.
Sinniger Weise schaltet man für das Verzeichnis die Sicherheitsabfrage zum Speichern aus, sonst erhältst du bei jedem Schleifendurchlauf die Abfrage: "SAP will in das Verzeichnis abspeichern, wollen Sie das zulassen?".

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
Juri


Re: abap Liste formatieren zu PDF

Beitrag von Juri (ForumUser / 22 / 8 / 0 ) »
vielen Dank für deine Nachricht war die letzten TAGE krank deswegen die späte Antwort :(
dann schau ich mal ob ich das so umsetzen kann


VG Juri

Re: abap Liste formatieren zu PDF

Beitrag von Juri (ForumUser / 22 / 8 / 0 ) »
PeterPaletti hat geschrieben:
08.12.2021 15:04
Du könntest RSTXPDFT4 kopieren und für deine Zwecke anpassen. Bei mir hat der Report 260 Zeilen das ist recht überschaubar. Im Wesentlichen bestimmt der RSTXPDFT4 ob der Spool im Typ OTF vorliegt oder nicht. Je nachdem ruft er den Baustein CONVERT_OTFSPOOLJOB_2_PDF oder CONVERT_ABAPSPOOLJOB_2_PDF auf, um einen PDF-Strom zu erzeugen und diesen dann in der gewünschten Datei abzuspeichern.
Wenn du mehrere Spoolaufträge hast, brauchst du für die Spoolaufträge ein SELECT-OPTIONS, und selektierst dir die Aufträge aus der Tabelle TSP01. Dann solltest du einen Eingabeparameter verwenden um das Verzeichnis zu bestimmen, in dem die Dateien auf dem Frontend gespeichert werden sollen.
Dann machst du einen LOOP über deinen Arbeitsvorrat und speicherst den jeweiligen PDF-Strom in dein Verzeichnis mit einem sprechenden Dateinamen.
Sinniger Weise schaltet man für das Verzeichnis die Sicherheitsabfrage zum Speichern aus, sonst erhältst du bei jedem Schleifendurchlauf die Abfrage: "SAP will in das Verzeichnis abspeichern, wollen Sie das zulassen?".
also soweit habe ich das hinbekommen 😵

ich bekomme die Meldung das die Spools erfolgreich convertiert wurden .

aber von den selektierten Spools speichert es es mir nur immer den letzten nicht alle !! " wie bekomme ich die PDF´s zusammengefasst?

wäre wirklich toll wenn mir hier jemand helfen könnte

VG

Juri

Code: Alles auswählen.

 *kopie vom Programm RSTXPDFT4 
TABLES: TSP01.

SELECT-OPTIONS:
SPOOLNO for TSP01-RQIDENT.
PARAMETERS:
DOWNLOAD AS CHECKBOX DEFAULT 'X',
P_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\temp\file.pdf'. "#EC NOTEXT

selection-SCREEN SKIP 1.

selection-SCREEN BEGIN OF BLOCK list_width WITH FRAME TITLE TEXT-010.
  PARAMETERS: real RADIOBUTTON GROUP g1 DEFAULT 'X',
  FORMAT RADIOBUTTON GROUP g1 .
selection-SCREEN END OF BLOCK list_width.

DATA otf LIKE itcoo OCCURS 100 WITH HEADER LINE.
DATA CANCEL.
DATA PDF LIKE TLINE OCCURS 100 WITH HEADER LINE.
DATA: g_filesize TYPE i.
DATA i_tsp01 like table of tsp01 with header line.
DATA i_tsp01ges TYPE TABLE OF tsp01 with header line.
DATA DOCTAB LIKE DOCS OCCURS 1 WITH HEADER LINE.
DATA: NUMBYTES TYPE I,
      ARC_IDX LIKE TOA_DARA,
      pdfspoolid LIKE tsp01-rqident,
      jobname LIKE tbtcjob-jobname,
      jobcount LIKE tbtcjob-jobcount,
      is_otf.
DATA: CLIENT LIKE tst01-dclient,
      name LIKE tst01-dname,
      objtype LIKE rststype-TYPE,
      TYPE LIKE rststype-TYPE.
DATA: GET_SIZE_FROM_FORMAT.



SELECT * FROM tsp01 INTO i_tsp01
WHERE rqident in spoolno.

  APPEND i_tsp01.
ENDSELECT.


IF sy-subrc <> 0.
  PERFORM bd_textbox_err(rstxpdft) USING 80
        'Spoolauftrag existiert nicht'(003).
  EXIT.
ENDIF.
CLIENT = tsp01-rqclient.
name   = tsp01-rqo1name.
CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
EXPORTING
  AUTHORITY     = 'SP01'
  CLIENT        = CLIENT
  NAME          = name
  PART          = 1
IMPORTING
*           CHARCO        =
*           CREATER       =
*           CREDATE       =
*           DELDATE       =
*           MAX_CREDATE   =
*           MAX_DELDATE   =
*           NON_UNIQ      =
*           NOOF_PARTS    =
*           RECTYP        =
*           SIZE          =
*           STOTYP        =
  TYPE          = TYPE
  OBJTYPE       = objtype
EXCEPTIONS
  FB_ERROR      = 1
  FB_RSTS_OTHER = 2
  NO_OBJECT     = 3
  NO_PERMISSION = 4.

Loop AT I_tsp01.

IF objtype(3) = 'OTF'.
  is_otf = 'X'.
ELSE.
  is_otf = space.
ENDIF.
IF is_otf = 'X'.



  CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
  EXPORTING
    SRC_SPOOLID                    = I_tsp01-RQIDENT
    NO_DIALOG                      = ' '
*       DST_DEVICE                     =
*       PDF_DESTINATION                =
  IMPORTING
    PDF_BYTECOUNT                  = numbytes
    PDF_SPOOLID                    = pdfspoolid
*       OTF_PAGECOUNT                  =
    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.
    PERFORM bd_textbox_msg(rstxpdft) USING 80
          'Funktion CONVERT_OTFSPOOLJOB_2_PDF erfolgreich'(001).
  WHEN 1.
    PERFORM bd_textbox_err(rstxpdft) USING 80
          'Kein OTF- und kein ABAP-Spoolauftrag'(002).
    EXIT.
  WHEN 2.
    PERFORM bd_textbox_err(rstxpdft) USING 80
          'Spoolauftrag existiert nicht'(003).
    EXIT.
  WHEN 3.
    PERFORM bd_textbox_err(rstxpdft) USING 80
          'Keine Berechtigung zum Lesen Spoolauftrag'(004).
    EXIT.
  WHEN OTHERS.
    PERFORM bd_textbox_err(rstxpdft) USING 80
          'Fehler bei Funktion CONVERT_OTFSPOOLJOB_2_PDF'(005).
    EXIT.
  ENDCASE.
ELSE.
  IF real IS INITIAL.
    GET_SIZE_FROM_FORMAT = 'X'.
  ENDIF.
  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
  EXPORTING
    SRC_SPOOLID                    = I_tsp01-RQIDENT
    NO_DIALOG                      = ' '
*       DST_DEVICE                     =
*       PDF_DESTINATION                =
    GET_SIZE_FROM_FORMAT           = GET_SIZE_FROM_FORMAT
  IMPORTING
    PDF_BYTECOUNT                  = numbytes
    PDF_SPOOLID                    = pdfspoolid
*       LIST_PAGECOUNT                 =
    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.
    PERFORM bd_textbox_msg(rstxpdft) USING 80
          'Funktion CONVERT_ABAPSPOOLJOB_2_PDF erfolgreich'(006).
  WHEN 1.
    PERFORM bd_textbox_err(rstxpdft) USING 80
          'Kein OTF- und kein ABAP-Spoolauftrag'(002).
    EXIT.
  WHEN 2.
    PERFORM bd_textbox_err(rstxpdft) USING 80
          'Spoolauftrag existiert nicht'(003).
    EXIT.
  WHEN 3.
    PERFORM bd_textbox_err(rstxpdft) USING 80
          'Keine Berechtigung zum Lesen Spoolauftrag'(004).
    EXIT.
  WHEN OTHERS.
    PERFORM bd_textbox_err(rstxpdft) USING 80
          'Fehler bei Funktion CONVERT_ABAPSPOOLJOB_2_PDF'(007).
    EXIT.
  ENDCASE.

ENDIF.

ENDLOOP.
 



*************** download PDF file ***********

CHECK download = 'X'.



IF NOT ( jobname IS INITIAL ).
  PERFORM bd_textbox_var2_msg(rstxpdft) USING 80
        'Konvertierung per Hintergrundjob'(008)
        jobname
        jobcount.
  EXIT.
ENDIF.
PERFORM download_w_ext(RSTXPDFT) TABLES pdf
USING p_file
      '.pdf'
      'BIN'
      numbytes
      cancel.

IF cancel = space.
  DATA: s(80).
  s = numbytes. CONDENSE s.
  CONCATENATE s 'Bytes heruntergeladen in Datei'(009)
  INTO s SEPARATED BY space.
  PERFORM bd_textbox_var1_msg(RSTXPDFT) USING 80
        s
        p_file.
ENDIF.

Re: abap Liste formatieren zu PDF

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Das Hauptproblem scheint also am "Zusammenfassen" von Spoolauftägen zu liegen. Darf ich daher kurz nachfragen, wie du die Spoolaufträge erzeugst? Wäre es nicht möglich die von Haus aus beim Erstellen bereits zusammenzufassen?
viewtopic.php?t=5847

EDIT:
Ist schon etwas länger her, aber eine schnelle Suche hätte diesen alten Thread auch noch zu Tage gefördert.
viewtopic.php?t=16437
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.

ECC: 6.18
Basis: 7.50

Re: abap Liste formatieren zu PDF

Beitrag von Juri (ForumUser / 22 / 8 / 0 ) »
Danke für die Schnelle Antwort:

zum einen handelt es sich um Buchhaltungsbelege diese werden immer als einzel Spools erzeugt ! --> die Spools können ja exportiert werden in der Sp01 als PDF dann hat man halt einzelne PDF Dateien ist aber ziemlich umständlich vorallem wenn man 15-20 Dateien benötigt.

EDIT:
Ist schon etwas länger her, aber eine schnelle Suche hätte diesen alten Thread auch noch zu Tage gefördert.
viewtopic.php?t=16437

--> das Programm verarbeitet ja ausschließlich OTF- Dateien das ist ja sehr hilfreich --> kannst du mir sagen wie ich die Ausgabe vom TYP ABAP-Liste hinbekomme!

über den FB 'CONVERT_ABAPSPOOLJOB_2_PDF' oder?
bezogen auf das Beispielprogramm das du mir geschickt hast


Code: Alles auswählen.

CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
  EXPORTING
    src_spoolid                    =
*   NO_DIALOG                      =
*   DST_DEVICE                     =
*   PDF_DESTINATION                =
*   NO_BACKGROUND                  =
*   GET_SIZE_FROM_FORMAT           =
*   USE_CASCADING                  = ' '
* IMPORTING
*   PDF_BYTECOUNT                  =
*   PDF_SPOOLID                    =
*   LIST_PAGECOUNT                 =
*   BTC_JOBNAME                    =
*   BTC_JOBCOUNT                   =
*   BIN_FILE                       =
* TABLES
*   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
VG

Juri

Re: abap Liste formatieren zu PDF

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
Du könntest natürlich auch ein Verzeichnis auf dem Frontend abfragen und deine Spoolaufträge einzeln als PDF-Dateien in das Verzeichnis herunterladen.

Seite 1 von 1

Vergleichbare Themen

9
Antw.
4303
Views
Abap Liste
von mip » 12.12.2007 14:02 • Verfasst in ABAP® für Anfänger
2
Antw.
1789
Views
ABAP-Liste generieren
von chatty » 05.08.2005 13:10 • Verfasst in ABAP® Core
11
Antw.
6095
Views
ABAP Liste mit Bilder?
von MisterB » 28.06.2013 15:29 • Verfasst in ABAP® für Anfänger
0
Antw.
1250
Views
Layout ABAP Liste bei F4-Hilfe
von cali » 08.06.2006 10:16 • Verfasst in Dialogprogrammierung
3
Antw.
930
Views
ABAP-Liste in modalem Fenster
von Margolwes » 06.05.2021 06:39 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 14 Stunden von DeathAndPain gelöst 22 / 3186
Daten an Tabelle binden
vor 19 Stunden von Lukas Sanders 2 / 1051
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 621

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

Dialog-Container mit Toolbar/Status
vor 14 Stunden von DeathAndPain gelöst 22 / 3186
Daten an Tabelle binden
vor 19 Stunden von Lukas Sanders 2 / 1051
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 621

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2615
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9204