[ABAP] SALV: Druckausgabe eines SALV-Gitters in SAP-Spool (SP01)

Druckausgabe per ABAP-Code anschieben

SELECT * INTO TABLE @DATA(it_ispfli) FROM spfli UP TO 50 ROWS.

IF sy-subrc = 0.
  TRY.
      DATA: o_salv TYPE REF TO cl_salv_table.

      cl_salv_table=>factory( IMPORTING r_salv_table = o_salv
                              CHANGING  t_table      = it_ispfli ).

      DATA: lv_print_params TYPE pri_params.

* Druckparameter holen
      CALL FUNCTION 'GET_PRINT_PARAMETERS'
        EXPORTING
          no_dialog              = abap_true
        IMPORTING
          out_parameters         = lv_print_params
        EXCEPTIONS
          archive_info_not_found = 1
          invalid_print_params   = 2
          invalid_archive_params = 3
          OTHERS                 = 4.

      IF sy-subrc = 0.
* nur Drucken in Spool, keine Anzeige des ALV-Grids

* Name eines Geräts
        lv_print_params-pdest = 'LOCL'.
* Beschreibungstext
        lv_print_params-prtxt = |{ sy-datum } { sy-uzeit }|.

* Druckparameter setzen
        DATA(o_print) = o_salv->get_print( ).
        DATA(lv_print_ctrl) = o_print->get_print_control( ).
        lv_print_ctrl-pri_params = lv_print_params.

        o_print->set_print_control( lv_print_ctrl ).
        o_print->set_print_only( abap_true ).

* SALV-Grid anzeigen
        o_salv->display( ).
      ENDIF.

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

Druckausgabe im Batchmodus

SELECT * INTO TABLE @DATA(it_ispfli) FROM spfli UP TO 50 ROWS.

IF sy-subrc = 0.
* Wenn Batchmodus aktiv, dann nur SALV-Objekt erzeugen und per display( ) ausgeben.
* Das SALV-Grid erzeugt automatisch eine Listausgabe der Tabelle in die Spool.
  IF sy-batch = abap_true.
    TRY.
        DATA: o_salv TYPE REF TO cl_salv_table.

        cl_salv_table=>factory( IMPORTING r_salv_table = o_salv
                                CHANGING  t_table      = it_ispfli ).

* Tabelle im Spool ausgeben
        o_salv->display( ).

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

[SAP] Drucker und Spool administrieren

Transaktionen

SPAD (Spool-Administration)

  • Drucker, Zeichensätze, Gerätetypen

SPOOL (Übersicht Spool-Reports)
SP01 (Ausgabesteuerung)

  • Spool-Aufträge zu einem Ausgabegerät (Drucker) anzeigen

SP02 (Anzeigen von Spool-Aufträgen)

Tabellen

TSP01 (Spool Requests)
TSP02 (Spool: Druck-Auftraege)
TSP02A (Spool: Dyn. Attribute zu Spoolaufträgen und Ausgabeauftr.)
TSP03 (Spool: Drucker-Deklaration)
TSP03D (Spool: Gerätebeschreibung (neues Format))
TST01 (TemSe Liste aller Objekte und Teile)
TST03 (TemSe Daten)

Reports

RSPO_FIND_DELETED_PRINTERS (Gelöschte Drucker in Anwendungstabellen finden)

Funktionsbausteine

RSPO_SR_OPEN (Spool: Öffnen eines Spoolauftrags zum Schreiben)
RSPO_SR_WRITE (Spool: Schreiben einer Zeile in einen offenen Spoolauftrag)
RSPO_SR_CLOSE (Spool: Schliessen eines Spoolrequests)
RSPO_OUTPUT_SPOOL_REQUEST (Erzeuge einen Ausgabeauftrag zu einem Spool-Auftrag)
RSPO_RETURN_SPOOLJOB (Liefert einen Spooljob als interne Tabelle zurück (ALI,RAW,OTF,PDF))
RSPO_FIND_SPOOL_REQUESTS (Wähle Spool-Aufträge aus)

Links

[SAP] Report manuell im Hintergrund ausführen und Ausführung überwachen

Vorteil: sehr lang laufende Programme brechen nicht mit Timeout ab

SE80 (oder Transaktionscode für Programmstart)

  • erst den Report starten -> Selektionsbild erscheint
  • Menü -> Programm -> Im Hintergrund ausführen (F9)
  • Ausgabegerät: Irgendein beliebiger Drucker
  • Exemplare: 1
  • Seitenbereich: Alles
  • Ausgabezeitpunkt: Zunächst nur SAP-Spool
  • Weiter (grüner Haken)
  • Startterminwerte
  • Button „Sofort“ klicken
  • Klick auf Speichern (blaue Diskette)
  • Job wurde nun angelegt und Programmausführung im Hintergrund gestartet, Listenausgabe im Spool (SP01)

SM37 (Überwachung des (noch laufenden) Hintergrundjobs)

  • Jobname: *
  • Benutzername:
  • Jobstatus: Haken setzen
  • Jobstartbedingung: heutiges Datum
  • Button „Ausführen“ klicken -> Jobübersicht
  • Jobname == Programmname
  • Spoolliste: Doppelklick -> SP01
  • Jobersteller
  • Status: aktiv
  • Dauer
  • Button Aktualisieren klicken für Forschritt

SM51 (Workprozess für die Ausführung des Jobs anzeigen)

  • Doppelklick auf Servernamen (SM50)
  • Klick auf Button „Aktive Workprozesse“