[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.