table to CSV

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

table to CSV

Beitrag von Abapsocke (ForumUser / 49 / 6 / 0 ) »
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.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: table to CSV

Beitrag von LostDarkness (ForumUser / 87 / 15 / 6 ) »
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.
Hallo,

hast du schon einmal den Funktionsbaustein 'GUI_DOWNLOAD' versucht?
“You should name a variable using the same care with which you name a first-born child.”
― Robert C. Martin

Re: table to CSV

Beitrag von Abapsocke (ForumUser / 49 / 6 / 0 ) »
ja, aber dieser konvertiert ja nichts. Da bei mir der convert der Tabelle nicht funktioniert, lädt es am Ende nur eine Textdatei ohne jede Formatierung herunter.

Ich schaffe es derzeit nur eine Struktur mit einem Eintrag herunter zu laden.

Re: table to CSV

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
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.
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...

Re: table to CSV

Beitrag von Abapsocke (ForumUser / 49 / 6 / 0 ) »
Hier das Beispiel bei dem genau eine Zeile geschrieben wird:

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.

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.

Dann kann ich darunter einen Aufruf des Funktionsbausteins Gui-downloads ausführen.

Da habe ich ein wenig herum probiert, bin aber auf keine Lösung gekommen. Der Code ist derzeit noch sehr ungeordnet:

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.

Re: table to CSV

Beitrag von A6272 (Specialist / 238 / 8 / 36 ) »
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

Re: table to CSV

Beitrag von Abapsocke (ForumUser / 49 / 6 / 0 ) »
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
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?

Re: table to CSV

Beitrag von A6272 (Specialist / 238 / 8 / 36 ) »
Mit zusammensetzten meine ich, die Zeilen zu einer Tabelle hinten dran hängen. append...

Re: table to CSV

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
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.
Hast du den Artikel mal bis zum Ende gelesen?

Re: table to CSV

Beitrag von Abapsocke (ForumUser / 49 / 6 / 0 ) »
ewx hat geschrieben:
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.
Hast du den Artikel mal bis zum Ende gelesen?

natürlich. Die zweite KLasse CL_ICF_CSV im ARtikel ist bei uns nicht Verfügbar. Sonst hätte ich diese Lösung genutzt.

Re: table to CSV

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »

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 ).
Hilft dir das vielleicht weiter?

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Abapsocke

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: table to CSV

Beitrag von Abapsocke (ForumUser / 49 / 6 / 0 ) »
habe es ganz leicht abgewandelt, da ich nicht verstehe wie die Field-Symbols in deinem Beispiel funktionieren, aber es hat wunderbar geklappt. Im Beispiel habe ich es mit einer kleinen Anzahl an Einträgen ausprobiert, die genau so exportiert wurden, wie benötigt.


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

Seite 1 von 1

Vergleichbare Themen

1
Antw.
5122
Views
sorted table, hashed table: Übergabe Workarea -> Performa
von Jürgen Fischer » 30.01.2006 08:09 • Verfasst in ABAP® Core
5
Antw.
9841
Views
standard table vs. sorted table
von ralf.wenzel » 31.07.2014 12:49 • Verfasst in ABAP® Core
44
Antw.
11252
Views
INTO CORRESPONDING FIELDS OF TABLE VS. INtO TABLE
von Bright4.5 » 07.12.2018 13:22 • Verfasst in ABAP® für Anfänger
1
Antw.
2128
Views
Table Control
von greenhorn-007 » 20.01.2006 10:45 • Verfasst in Dialogprogrammierung
4
Antw.
5125
Views
Set table for first display
von pippi1710 » 27.10.2011 10:34 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 510
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2145
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8741