Transparente Tabelle im CSV Format lokal auf dem PC speichern
- Transparente Tabelle erstellen (zxls)
- Zeile für die Transparente Tabelle deklarieren (gs_zxls)
- Struktur anlegen für die interne Tabelle und Zeile (gty_data)
- interne Tabelle und Zeile deklarieren (gs_data, gt_data)
- Typ und Variable truxs_t_text_data deklarieren für die Konvertierung.
- Dann baut man die Methode cl_gui_frontend_services => file_open_dialog ein, damit man im Selektionsbildschirm über einen Dialogbildschirm das File auswählen kann, welches man hochladen will.
- Mit einem SELECT die Daten aus der transparenten Tabelle holen
- Mit einem LOOP kann man jetzt jede einzelnen Zeile einer internen Tabelle noch lesen und schließlich anpassen.
- Mit MOVE-CORRESPONDING kann man bei ungleicher Anordnung der Struktur der internen Tabelle und der Struktur der Transparenten Tabelle die richtigen Werte in die richtigen Felder schreiben.
- Anschließend kann man mit APPEND die Werte in eine interne Tabelle schreiben.
- Dann kann man mit dem Funktionsbaustein TEXT_CONVERT_TO_CSV_FORMAT die interne Tabelle gt_data in ein CSV Format konvertieren
- Dann kann man mit dem Funktionsbaustein GUI_DOWNLOAD die interne Tabelle outtab_csv die bei der Konvertierung gefüllt wurde kann man jetzt downloaden.
Bild zur Methode file_open_dialog
Demo Programm
REPORT z_csv_download.
"Transparente Tabelle
TABLES: zxls.
"Zeile der Tabelle
DATA: gs_zxls TYPE zxls.
DATA: gt_zxls TYPE TABLE OF zxls.
"Tabelle für die .CSV-Konvertierung
TYPES truxs_t_text_data(4096) TYPE c OCCURS 0.
DATA: outtab_csv TYPE truxs_t_text_data.
"Struktur de internen Tabelle.
TYPES :
BEGIN OF gty_data,
name(40) TYPE c,
nummer(10) TYPE c,
END OF gty_data.
"Interne Tabelle
DATA: gs_data TYPE gty_data,
gt_data TYPE TABLE OF gty_data.
"Big Version Pfad auswählen um CSV zuspeichern
DATA: ld_filename TYPE string,
ld_path TYPE string,
ld_fullpath TYPE string,
ld_result TYPE i,
gd_file TYPE c.
"Hier kann man das XLS eingeben
PARAMETERS: p_file TYPE rlgrap-filename DEFAULT 'C:\xXx\XLSEINSPIELEN2.csv'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM f4_help.
START-OF-SELECTION.
"Daten in Transparente Tabelle schreiben.
PERFORM add_data.
PERFORM download_csv.
*&---------------------------------------------------------------------*
*& Daten bearbeiten
*&---------------------------------------------------------------------*
FORM add_data .
SELECT * FROM zxls INTO TABLE gt_zxls.
LOOP AT gt_zxls INTO gs_zxls.
MOVE-CORRESPONDING gs_zxls TO gs_data.
APPEND gs_data TO gt_data.
ENDLOOP.
ENDFORM. "add_data
*&---------------------------------------------------------------------*
*& Form download_csv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM download_csv.
****************************************************************
* Daten konvertieren
****************************************************************
CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
EXPORTING
i_field_seperator = ';'
TABLES
i_tab_sap_data = gt_data
CHANGING
i_tab_converted_data = outtab_csv
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
WRITE: 'Fehler ', sy-subrc, ' beim konvertieren ins .CSV-Format!'.
ENDIF.
****************************************************************
* Daten speichern
****************************************************************
DATA: l_filename TYPE string.
l_filename = p_file.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_filename
TABLES
data_tab = outtab_csv
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
WRITE: 'Fehler ', sy-subrc, ' beim Speichern der .CSV-Datei!'.
ENDIF.
ENDFORM. "download_csv
*&---------------------------------------------------------------------*
*& Form f4_help
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f4_help.
* Display save dialog window
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
* window_title = ' '
default_extension = 'CSV'
default_file_name = 'D1_Sätze'
initial_directory = 'c:\temp\'
CHANGING
filename = ld_filename
path = ld_path
fullpath = ld_fullpath
user_action = ld_result.
p_file = ld_fullpath.
ENDFORM. "f4_help