CSV mit Kopfzeile aus eigener Struktur Thema ist als GELÖST markiert

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

CSV mit Kopfzeile aus eigener Struktur

Beitrag von kola (ForumUser / 6 / 4 / 0 ) »
Hallo,

ich habe die Aufgabe einen CSV-Report zu erstellen, in dem mehrere Tabellen zusammenkommen.

Wir haben also so eine Struktur und die Tabelle dazu.
types:begin of t_test,
mandt type vbak-mandt,
vbeln type vbak-vbeln,
erdat type vbak-erdat,
posnr type vbap-posnr,
matnr type vbap-matnr,
matkl type vbap-matkl,
vperdat type vbap-erdat,
end of t_test.

data: it_test type standard table of t_test.

Nachdem ich die Daten hole, verwende ich Folgendes:
types: ty_data type c length 4096.
data: lt_csv type standard table of ty_data.

call function 'SAP_CONVERT_TO_CSV_FORMAT'
exporting
i_field_seperator = ';'
tables
i_tab_sap_data = it_test "type standard table
changing
i_tab_converted_data = lt_csv.

if sy-subrc <> 0.
message 'Es gab einen Fehler beim Konvertieren der Datei.' type 'I'.
endif.
* Download Datei
call method cl_gui_frontend_services=>gui_download
exporting
filename = 'C:/temp/Z_TEST.csv' " Name der Datei
filetype = 'ASC'
changing
data_tab = lt_csv. " Übergabetabelle

if sy-subrc <> 0.
message 'Es gab einen Fehler beim Downloaden der Datei.' type 'I'.
endif.

Ich bekomme auch meine CSV-Datei, jedoch ohne Kopfzeile. Dazu habe ich schon mehrere Versionen probiert, aber immer nur die Feldnamen von internen Tabellen bekommen und nicht die zugehörigen zu meiner Struktur.

Vielleicht weiß jemand, wie ich eine Kopfzeile mit den Technischen Namen der Felder in die CSV bekomme.


Re: CSV mit Kopfzeile aus eigener Struktur

Beitrag von ralf.wenzel (Top Expert / 3610 / 169 / 247 ) »
Moin,

mit vernünftigem Aufwand: Gar nicht.

Vorab: Ich wäre mit dem Begriff "Kopfzeile" im ABAP-Kontext sehr vorsichtig, das ist ein feststehender Begriff.

Dein erstes Problem ist, dass du für die Bezeichnungen (Feldnamen) eine andere Art von Tabelle brauchst, weil du in ein Betragsfeld nicht die Bezeichnung "Betrag" reinschreiben kannst. Im Zweifel ist das also eine Tabelle mit Feldern vom Typ STRING.

Das bedeutet wiederum, dass du alle Feldinhalte (also die richtigen aus deinen Tabellen) in Strings konvertieren musst, ehe du sie in die Tabelle reinschreibst. Damit z. B. im Feld ERDAT der 01.01.2022 steht und nicht 20220101.

Das Problem mit den Feldnamen ergibt sich aus der Deklaration -- natürlich heißen die wie die Feldnamen deiner internen Tabelle. Du erzeugst mit der Deklaration ein Feld eines Namens X, das die gleichen Eigenschaften hat wie das SAP-Tabellenfeld Y. Trotzdem heißt es X und dein Programm kann nicht mal so einfach den Namen von Y ermitteln. Dein TYPE VBAP-ERDAT z. B. sagt nur aus "mach mir ein Feld vom gleichen Typ wie VBAP-ERDAT". Es gibt aber zig Felder diesen Typs im DDIC.

Wie generisch muss das sein? Ich würde knallhart die Feldnamen als Literale in die erste Zeile (die du Kopfzeile nennst) reinschreiben.


Ralf

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
kola


Re: CSV mit Kopfzeile aus eigener Struktur

Beitrag von kola (ForumUser / 6 / 4 / 0 ) »
Hallo Ralf,

danke für deine Antwort.
Meine CSV Datei soll dann so aussehen, dass die Feldnamen die Kopfzeile ergeben.
Also MANDT, VBELN, ERDAT, usw. wie in types angegeben.
Ich habe es jetzt probiert über eine String Struktur, in die ich alles per Hochkommata reingeschrieben habe. Das hat aber leider nicht funktioniert. Ich habe jetzt einfach eine leere Zeile über den Daten.

Re: CSV mit Kopfzeile aus eigener Struktur

Beitrag von wreichelt (Expert / 897 / 25 / 152 ) »
Hallo,

hier ein Beispiel dafür

https://belajarabap.wordpress.com/2014/ ... th-header/

Gruß Wolfgang

Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag:
kola


Re: CSV mit Kopfzeile aus eigener Struktur

Beitrag von kola (ForumUser / 6 / 4 / 0 ) »
Hallo Wolfgang,

danke für deine Nachricht, genau das habe ich versucht, aber es kommt eine leere Zeile über den Daten raus. Habe es nochmal angepasst, jetzt kommen die Überschriften alle in Spalte A aneinander gereiht.
Ich poste den Code mal:
data: begin of wa_header,
name type c length 30,
end of wa_header.

types:begin of t_test,
mandt type vbak-mandt,
vbeln type vbak-vbeln,
erdat type vbak-erdat,
posnr type vbap-posnr,
matnr type vbap-matnr,
matkl type vbap-matkl,
vperdat type vbap-erdat,
end of t_test.

data : it_test type t_test occurs 0 with header line.
data: t_header_test like table of wa_header.

append 'MANDT' to t_header_test.
append 'VBELN' to t_header_test.
append 'ERDAT' to t_header_test.
append 'POSNR' to t_header_test.
append 'MATNR' to t_header_test.
append 'MATKL' to t_header_test.
append 'ERDAT' to t_header_test.

Datenselektion in it_test
call function 'GUI_DOWNLOAD'
exporting
filename = 'C:/temp/Z_Test.csv'
filetype = 'ASC'
tables
data_tab = it_test "lt_csv
fieldnames = t_header_test.

if sy-subrc <> 0.
message 'Es gab einen Fehler beim Downloaden der Datei.' type 'I'.
endif.

Re: CSV mit Kopfzeile aus eigener Struktur

Beitrag von wreichelt (Expert / 897 / 25 / 152 ) »
Hallo,

eine Erklärung habe ich nicht, aber ich würde:

- vor den Append's ein START-OF-SELECTION. einfügen
und
- beim GUI_DOWNLOAD die
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
OTHERS = 8.
einfügen, sonst bringt die Abfrage auf SY-SUBRC nichts

Gruß Wolfgang

Re: CSV mit Kopfzeile aus eigener Struktur

Beitrag von kola (ForumUser / 6 / 4 / 0 ) »
Ich habe davor
at selection-screen.
if r1 = 'X'.
stehen, da es dort mehrere Optionen gibt, das Konstrukt funktioniert aber soweit.
Sy-Subrc liefert nie einen anderen Wert als 0....

Ich habe ja bisher auch immer eine Datei bekommen mit Werten. Nur eben ohne Überschriftenzeile, die aber benötigt wird..

Re: CSV mit Kopfzeile aus eigener Struktur

Beitrag von Shortcut IT (ForumUser / 21 / 2 / 4 ) »
Hallo,
>jetzt kommen die Überschriften alle in Spalte A aneinander gereiht.
>...
>append 'MANDT' to t_header_test.
>append 'VBELN' to t_header_test.
>...
da ist ja auch kein ';' enthalten.
Mit
append 'MANDT;' to t_header_test.
append 'VBELN;' to t_header_test.
...
sollte es funktionieren.

Folgende Benutzer bedankten sich beim Autor Shortcut IT für den Beitrag:
kola


Re: CSV mit Kopfzeile aus eigener Struktur

Beitrag von kola (ForumUser / 6 / 4 / 0 ) »
Vielen Dank @Shortcut IT, das war die Lösung für mein Problem!

Re: CSV mit Kopfzeile aus eigener Struktur

Beitrag von A6272 (Specialist / 169 / 1 / 22 ) »
bei GUI_DOWNLOAD gibt es auch eine Variable WRITE_FIELD_SEPARATOR, da kann man das Trennzeichen z.b. ";" mitgeben und dann sollte es ohne manuelles hinzufügen von ";" bei HEADER und ohne die Daten vorher per SAP_CONVERT_TO_CSV_FORMAT zu konvertieren eigentlich funktionieren.

Seite 1 von 1

Über diesen Beitrag



ABAP & SAP eBook Flatrate von Espresso Tutorials Sponsorlink
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

TABLES: Stern-Struktur
vor 3 Stunden von ralf.wenzel 4 / 307
Texte im Rechnungskopf
vor 2 Tagen von JHM 7 / 74

Vergleichbare Themen

Excel erzeugen mit Kopfzeile
von Michi83 » 06.03.2013 11:56
Kopfzeile bei ALV-Ausgabe in Excel
von KleinerEisbaer » 07.10.2010 22:09
Kopfzeile wird doppelt angezeigt.
von Bright4.5 » 17.08.2018 21:32
Interne Tabelle onne Kopfzeile
von Seeburg » 30.05.2005 13:11
Interne Tabelle mit kopfzeile umwandeln
von kaufmann123 » 19.04.2018 11:16