gelöst table to CSV


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst table to CSV

Beitragvon Abapsocke » 18.02.2019, 11:29

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.
Abapsocke
ForumUser
 
Beiträge: 49
Registriert: 17.04.2018, 15:34
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: table to CSV

Beitragvon LostDarkness » 18.02.2019, 11:34

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?
LostDarkness
ForumUser
 
Beiträge: 43
Registriert: 07.06.2018, 10:21
Dank erhalten: 1 mal
Ich bin: Entwickler/in

Re: table to CSV

Beitragvon Abapsocke » 18.02.2019, 11:56

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.
Abapsocke
ForumUser
 
Beiträge: 49
Registriert: 17.04.2018, 15:34
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: table to CSV

Beitragvon ewx » 18.02.2019, 12:03

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...
ewx
Top Expert
 
Beiträge: 3885
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 343 mal

Re: table to CSV

Beitragvon Abapsocke » 18.02.2019, 12:04

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.
Abapsocke
ForumUser
 
Beiträge: 49
Registriert: 17.04.2018, 15:34
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: table to CSV

Beitragvon A6272 » 18.02.2019, 12:32

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
A6272
Specialist
 
Beiträge: 106
Registriert: 27.02.2007, 09:30
Dank erhalten: 7 mal
Ich bin: Berater/in

Re: table to CSV

Beitragvon Abapsocke » 18.02.2019, 12:39

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?
Abapsocke
ForumUser
 
Beiträge: 49
Registriert: 17.04.2018, 15:34
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: table to CSV

Beitragvon A6272 » 18.02.2019, 13:26

Mit zusammensetzten meine ich, die Zeilen zu einer Tabelle hinten dran hängen. append...
A6272
Specialist
 
Beiträge: 106
Registriert: 27.02.2007, 09:30
Dank erhalten: 7 mal
Ich bin: Berater/in

Re: table to CSV

Beitragvon ewx » 18.02.2019, 13:39

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?
ewx
Top Expert
 
Beiträge: 3885
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 343 mal

Re: table to CSV

Beitragvon Abapsocke » 18.02.2019, 14:10

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.
Abapsocke
ForumUser
 
Beiträge: 49
Registriert: 17.04.2018, 15:34
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: table to CSV

Beitragvon a-dead-trousers » 18.02.2019, 15:23

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?
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.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Abapsocke
a-dead-trousers
Top Expert
 
Beiträge: 3181
Registriert: 07.02.2011, 13:40
Dank erhalten: 789 mal
Ich bin: Entwickler/in

Re: table to CSV

Beitragvon Abapsocke » 18.02.2019, 15:55

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
*&amp;---------------------------------------------------------------------*
*&amp; Report  ZLK_CVS_TEST
*&amp;
*&amp;---------------------------------------------------------------------*
*&amp;
*&amp;
*&amp;---------------------------------------------------------------------*

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 ).  
 
 
 
Abapsocke
ForumUser
 
Beiträge: 49
Registriert: 17.04.2018, 15:34
Dank erhalten: 0 mal
Ich bin: Entwickler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Steuerliches Abgangsland in Verkaufsbeleg ändern
vor 4 Stunden von Julia611 0 Antw.
XML hochladen, Abschnitte suchen, Abschnitte als XML zurück
vor 4 Stunden von deejey 1 Antw.
(LKW)Bedarfsvorschau je Debitor
vor 2 Tagen von wreichelt 5 Antw.
Lieferplan, Einteilungen, Feinabrufe
vor 3 Tagen von bapimueller 0 Antw.
gelöst Smartforms Struktur rechtsbündig
vor 3 Tagen von qyurryus 3 Antw.

  Ähnliche Beiträge beta
INTO CORRESPONDING FIELDS OF TABLE VS. INtO TABLE
07.01.2019, 16:39 von DeathAndPain 44 Antw.
Table connection
06.12.2003, 14:19 von Juergen 1 Antw.
Table Control
22.11.2007, 15:40 von amjahid 1 Antw.
read table
28.03.2008, 14:23 von kostonstyle 3 Antw.
Set table for first display
28.10.2011, 06:58 von a-dead-trousers 4 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder