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.