Hallo,Abapsocke hat geschrieben:Hallo, ich suche nach einer Möglichkeit eine Tabelle in eine CSV.Datei umzuwandeln. Ich bin auf mehrere Funktionsbausteine gestoßen, die leider bei uns nicht installiert sind. Es gibt aber die Klasse CL_RSDA_CSV_CONVERTER.
Ich weiß nur nicht, wie ich nicht nur einen einzigen Eintrag in eine Datei abspeichere, sondern gleich die ganze Tabelle
Codebeispiele die ich im Internet dazu gefunden habe, sind leider unvollständig oder es geht darin um den Import von CSV Dateien oder um das Auslesen von einer einzelnen Zeile in eine Struc.
Also der erste Treffer bei Google auf der Suche nach "CL_RSDA_CSV_CONVERTER" ist bei mir mein Beitrag, in dem genau beschrieben wird, wie man eine komplette Tabelle als CSV-Datei abspeichern kann...Abapsocke hat geschrieben:Codebeispiele die ich im Internet dazu gefunden habe, sind leider unvollständig oder es geht darin um den Import von CSV Dateien oder um das Auslesen von einer einzelnen Zeile in eine Struc.
Code: Alles auswählen.
REPORT ZLK_CVS_TEST.
DATA gr_conv TYPE REF TO cl_rsda_csv_converter.
DATA gs_t000 TYPE t000.
DATA gv_csv TYPE c LENGTH 1000.
START-OF-SELECTION.
SELECT SINGLE * FROM t000 INTO gs_t000 WHERE mandt = '066'.
gr_conv = cl_rsda_csv_converter=>create( i_delimiter = '"' i_separator = ';' ).
gr_conv->structure_to_csv( EXPORTING i_s_data = gs_t000
IMPORTING e_data = gv_csv ).
WRITE / gv_csv.
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report ZLK_CVS_EXPORT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
Report ZLK_CVS_EXPORT.
Types: ty_data type c length 4096.
TABLES: ZCB_IPHONE.
constants: lc_11 type i value 11,
lc_12 type i value 12,
lc_13 type i value 13,
lc_14 type i value 14,
lc_15 type i value 15,
lc_16 type i value 16,
lc_17 type i value 17,
lc_18 type i value 18,
lc_19 type i value 19,
lc_20 type i value 20,
lc_21 type i value 21,
lc_22 type i value 22,
lc_23 type i value 23,
lc_24 type i value 24.
Data: lt_csv type STANDARD TABLE OF ty_data,
gv_csv TYPE c LENGTH 1000,
gr_conv TYPE REF TO cl_rsda_csv_converter,
lt_iphone TYPE STANDARD TABLE OF ZCB_IPHONE,
ls_iphone TYPE ZCB_IPHONE.
SELECT * FROM ZCB_IPHONE INTO TABLE lt_iphone.
gr_conv = cl_rsda_csv_converter=>create( i_delimiter = '"' i_separator = ';' ).
gr_conv->structure_to_csv( EXPORTING i_s_data = lt_iphone
IMPORTING e_data = gv_csv ).
WRITE / gv_csv.
CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
EXPORTING
i_field_seperator = ';'
TABLES
i_tab_sap_data = lt_iphone "type standard table
CHANGING
i_tab_converted_data = lt_csv
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
** Implement suitable error handling here
ENDIF.
call method cl_gui_frontend_services=>gui_download
exporting
filename = 'C:\Users\lkebel2\Neuer Ordner\test.csv'"iv_filename " Name der Datei
filetype = 'ASC'
changing
data_tab = lt_iphone " Übergabetabelle
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 = lc_11
dp_error_send = lc_12
dp_error_write = lc_13
unknown_dp_error = lc_14
access_denied = lc_15
dp_out_of_memory = lc_16
disk_full = lc_17
dp_timeout = lc_18
file_not_found = lc_19
dataprovider_exception = lc_20
control_flush_error = lc_21
not_supported_by_gui = lc_22
error_no_gui = lc_23
others = lc_24.
Alex, das ist der Punkt. in dem Beispiel bekäme ich ja dann gv_csv heraus. Muss ich beim zusammensetzen zu einer Tabelle noch irgendwas beachten? Also beim zusammensetzen und dann speichern?A6272 hat geschrieben:Hallo,
gr_conv->structure_to_csv( EXPORTING i_s_data = lt_iphone
IMPORTING e_data = gv_csv ).
structure_to_csv klingt vom Namen her nach Struktur und nicht nach Tabelle!
Ich würde da mal die Zeilen der Tabelle einzeln reinwerfen und danach zur Tabelle zusammensetzen.
Grüße
Alex
Hast du den Artikel mal bis zum Ende gelesen?Abapsocke hat geschrieben: Also wie man sieht wird hier eine Zeile einer Tabelle am in das CSV-Format umgewandelt und als Text ausgegeben. Das Beispiel stammt aus dem Tricktresor.
ewx hat geschrieben:Hast du den Artikel mal bis zum Ende gelesen?Abapsocke hat geschrieben: Also wie man sieht wird hier eine Zeile einer Tabelle am in das CSV-Format umgewandelt und als Text ausgegeben. Das Beispiel stammt aus dem Tricktresor.
Code: Alles auswählen.
types:
ty_char1000 type c length 1000.
data:
gv_csv type ty_char1000,
lt_output type standard table of ty_char1000.
gr_conv = cl_rsda_csv_converter=>create( i_delimiter = '"' i_separator = ';' ).
LOOP AT lt_iphone ASSIGNING FIELD-SYMBOL(<ls_iphone>).
gr_conv->structure_to_csv( EXPORTING i_s_data = <ls_iphone> IMPORTING e_data = gv_csv ).
APPEND gv_csv TO lt_output.
ENDLOOP.
call method cl_gui_frontend_services=>gui_download(
exporting
filename = 'C:\Users\lkebel2\Neuer Ordner\test.csv'
filetype = 'ASC'
changing
data_tab = lt_output
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 ).
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Abapsocke
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report ZLK_CVS_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zlk_cvs_test.
TYPES: tt_t000 TYPE STANDARD TABLE OF t000,
ty_char1000 TYPE c LENGTH 1000.
DATA gr_conv TYPE REF TO cl_rsda_csv_converter.
*DATA gs_t000 TYPE t000.
DATA gv_csv TYPE ty_char1000.
DATA: lt_t000 TYPE tt_t000,
lt_t111 TYPE tt_t000,
lt_output TYPE STANDARD TABLE OF ty_char1000,
lw_t000 TYPE t000.
START-OF-SELECTION.
* SELECT SINGLE * FROM t000 INTO gs_t000 WHERE mandt = '066'.
SELECT * FROM t000 INTO TABLE lt_t000.
WHILE sy-index <= 3.
READ TABLE lt_t000
INTO lw_t000
INDEX sy-index.
gr_conv = cl_rsda_csv_converter=>create( i_delimiter = '"' i_separator = ';' ).
gr_conv->structure_to_csv( EXPORTING i_s_data = lw_t000
IMPORTING e_data = gv_csv ).
WRITE / gv_csv.
APPEND gv_csv TO lt_output.
ENDWHILE.
CALL METHOD cl_gui_frontend_services=>gui_download(
EXPORTING
filename = 'C:\Users\lkebel2\Neuer Ordner\test.csv'
filetype = 'ASC'
CHANGING
data_tab = lt_output
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 ).