Ist jetzt ohne FuBa sondern über eine Klasse gelöst, aber sollte dein Problem lösen. Das ganze ist aus einem 6.4 Release, in kleineren Releases wird es wahrscheinlich Probleme machen. Fehlerhandling ist nicht programmiert:nkuhn hat geschrieben:Hast du ein Code Beispiel dazu? Zum Beispiel indem sy-datum, sy-time schon eingebunden ist?
Code: Alles auswählen.
REPORT  z_db_to_file.
* Für den Dynamischen DB-Zugriff
FIELD-SYMBOLS: <table> TYPE ANY TABLE.
* Dynamische Daten
DATA: gr_table TYPE REF TO   data.
* Für den GUI-Download
DATA:  g_file TYPE string.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_table      TYPE tabname,             "Tabelle die gelesen wird
            p_count      TYPE i DEFAULT 100,       "Anzahl Datensätze
            p_path(1024) TYPE c DEFAULT 'c:\temp\',"Source
            p_file(1024) TYPE c DEFAULT 'test'.    "Dateiname ohne Dateiendung
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
* Erstmal Data dynamisch erzeugen
  CREATE DATA gr_table TYPE TABLE OF (p_table).
* Um auf die Daten zu zugreifen die Referenz auf ein Feldsymbole umswitchen
  ASSIGN gr_table->* TO <table>.
* Daten von DB lesen
  SELECT *
  FROM (p_table)
  INTO TABLE <table>
  UP TO p_count ROWS.
* Daten in Datei schreiben
* Pfad / Dateiname basteln
  CONCATENATE p_path
              p_file
              '_'
              sy-datum
              '_'
              sy-uzeit
              '.CSV'
              INTO g_file.
* Leerzeichen löschen
  CONDENSE g_file.
  CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
*    BIN_FILESIZE              =
      filename                  = g_file
*    FILETYPE                  = 'ASC'
*    APPEND                    = SPACE
       write_field_separator     = 'X'              "kommagetrennt
*    HEADER                    = '00'
*    TRUNC_TRAILING_BLANKS     = SPACE
*    WRITE_LF                  = 'X'
*    COL_SELECT                = SPACE
*    COL_SELECT_MASK           = SPACE
*    DAT_MODE                  = SPACE
*    CONFIRM_OVERWRITE         = SPACE
*    NO_AUTH_CHECK             = SPACE
*    CODEPAGE                  = SPACE
*    IGNORE_CERR               = ABAP_TRUE
*    REPLACEMENT               = '#'
*    WRITE_BOM                 = SPACE
*    TRUNC_TRAILING_BLANKS_EOL = 'X'
*    WK1_N_FORMAT              = SPACE
*    WK1_N_SIZE                = SPACE
*    WK1_T_FORMAT              = SPACE
*    WK1_T_SIZE                = SPACE
*  IMPORTING
*    FILELENGTH                =
    CHANGING
      data_tab                  = <table>
*  EXCEPTIONS
*    FILE_WRITE_ERROR          = 1
*    NO_BATCH                  = 2
*    GUI_REFUSE_FILETRANSFER   = 3
*    INVALID_TYPE              = 4
*    NO_AUTHORITY              = 5
*    UNKNOWN_ERROR             = 6
*    HEADER_NOT_ALLOWED        = 7
*    SEPARATOR_NOT_ALLOWED     = 8
*    FILESIZE_NOT_ALLOWED      = 9
*    HEADER_TOO_LONG           = 10
*    DP_ERROR_CREATE           = 11
*    DP_ERROR_SEND             = 12
*    DP_ERROR_WRITE            = 13
*    UNKNOWN_DP_ERROR          = 14
*    ACCESS_DENIED             = 15
*    DP_OUT_OF_MEMORY          = 16
*    DISK_FULL                 = 17
*    DP_TIMEOUT                = 18
*    FILE_NOT_FOUND            = 19
*    DATAPROVIDER_EXCEPTION    = 20
*    CONTROL_FLUSH_ERROR       = 21
*    NOT_SUPPORTED_BY_GUI      = 22
*    ERROR_NO_GUI              = 23
*    others                    = 24
          .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.