SAP Daten aus csv in interne Tab schreiben

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
21 Beiträge • Seite 1 von 2 (current) Nächste
21 Beiträge Seite 1 von 2 (current) Nächste

SAP Daten aus csv in interne Tab schreiben

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
hi,

ich möchte Daten aus einer Excel datei in eine interne Tab speichern. Also hab ich erst mal aus der xls eine csv gemacht. Aber ich weiss dann nicht weiter.
Gibt es keine Möglichkeit, über ein Upload, die Datei auszusuchen, die man importieren möchte? Oder geht das nur über die WS_Upload? Aber dann muss man immer den Pfad und Namen eintragen, oder?

Dann hatte ich noch den fktbaustein: ALSM_EXCEL_TO_INTERNAL_TABLE im Forum gefunden, aber den gibts bei mir nicht :-((

Ideen?
steffi

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


Beitrag von Gast ( / / 0 / 3 ) »
Schau Dir mal in der SE24 die Klasse 'CL_GUI_FRONTEND_SERVICES' und inbesondere die Dokumenation dazu.

Für Deinen Fall wären die folgenden Methoden relevant:
FILE_OPEN_DIALOG
GUI_UPLOAD

Beitrag von Miri ( / / 0 / 3 ) »
Hi Steffi_Ma,
ich mach das immer so:

CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = infile
filetype = 'ASC'
TABLES
data_tab = it_excel
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
IF sy-subrc NE 0.
MESSAGE e000 WITH 'Fehler beim Datenupload'.
ENDIF.
LOOP AT it_excel.
IF it_excel CN '; '.
SPLIT it_excel AT ';' INTO it_daten-sp01
it_daten-sp02
it_daten-sp03
it_daten-sp04
it_daten-sp05
it_daten-sp06
it_daten-sp07.
it_daten-sp05 = it_daten-sp05 / 100.
it_daten-sp06 = it_daten-sp06 / 100.
APPEND it_daten.
CLEAR it_daten.
ENDIF.
ENDLOOP.

Hoffe, konnte dir damit helfen.
Gruß Miri

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
Hallo Miri,
vielen Dank, das sieht sehr gut aus. Leider bekomme ich noch eine Fehlermeldung. Vielleicht weisst du, was da schief bei mir ist.

Code: Alles auswählen.

TYPES: BEGIN OF t_structure,
       steps       TYPE i,
       name      LIKE ...,
...
END OF t_structure.

DATA it_excel TYPE STANDARD TABLE OF t_structure.
DATA wa_excel LIKE LINE OF it_excel.
dann entsprechendes File holen:

Code: Alles auswählen.

CALL METHOD cl_gui_frontend_services=>file_open_dialog

Code: Alles auswählen.

CALL FUNCTION 'WS_UPLOAD'
 EXPORTING
   filename                      = pc_file
   filetype                      = 'ASC'
  TABLES
    data_tab                      = it_excel
 EXCEPTIONS
   conversion_error              = 1
   file_open_error               = 2
   file_read_error               = 3
   invalid_type                  = 4
*   NO_BATCH                      = 5
   unknown_error                 = 6
*   INVALID_TABLE_WIDTH           = 7
*   GUI_REFUSE_FILETRANSFER       = 8
*   CUSTOMER_ERROR                = 9
*   NO_AUTHORITY                  = 10
   OTHERS                        = 11
          .
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

LOOP AT it_excel INTO wa_excel.
  IF it_excel CN '; '.
    SPLIT it_excel AT ';' INTO
    wa_excel-steps
    wa_excel-name
    ...
    .
    APPEND wa_excel.
    CLEAR wa_excel.
  ENDIF.
folgenden Fehler bekomme ich bei LOOP:

Code: Alles auswählen.

IT_EXCEL muss ein zeichenartiges Datenobjekt sein (Datentyp C,N,D,T oder String)
Liebe Grüße
Steffi

Beitrag von Gast ( / / 0 / 3 ) »
Deine Tabelle it_excel sollte zeichenartig sein, was bei Dir aber nicht der Fall ist, da die Struktur mind. ein Integer-Feld enthält.

Die Tabelle sollte eher aufgebaut sein als:

data: it_excel type string_table.

Ausserdem ist der Baustein WS_UPLOAD obsolet. Stattdessen sollte man die Methode 'GUI_UPLOAD' verwenden. Die Klasse verwendest Du ja ohnehin schon beim Anzeigen des Dialogs.

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
ich muss aber die Daten, die ich einlese, einer Struktur zuordnen.

Nun hab ich in meiner Struktur nur String und char-werte enthalten. Aber ich bekomme noch immer die Fehlermeldung.

verwende nun auch die gui_upload.

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
dank einer Email habe ich hinbekommen. :D

vielen Dank an alle!!!

Beitrag von Gast ( / / 0 / 3 ) »
Wie sieht die Lösung aus?

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
Meine Lösung:

Code: Alles auswählen.

DATA: BEGIN OF t_structure,
       steps(3)     TYPE c,
       ....
      END OF t_structure.

DATA: BEGIN OF it_excel OCCURS 0.
            INCLUDE STRUCTURE t_structure.
DATA: END OF it_excel.

DATA: BEGIN OF line OCCURS 0,
            a(256).
DATA: END OF line.


...

*&---------------------------------*
*& gewaehlte Datei uploaden   *
*&---------------------------------*


CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    filename                = pc_file
    filetype                = 'ASC'
  TABLES
    data_tab                = line
  EXCEPTIONS
    file_open_error         = 1
    file_read_error         = 2
    no_batch                = 3
    gui_refuse_filetransfer = 4
    invalid_type            = 5
    no_authority            = 6
    unknown_error           = 7
    bad_data_format         = 8
    header_not_allowed      = 9
    separator_not_allowed   = 10
    header_too_long         = 11
    unknown_dp_error        = 12
    access_denied           = 13
    dp_out_of_memory        = 14
    disk_full               = 15
    dp_timeout              = 16
    OTHERS                  = 17.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

LOOP AT line .
  IF line CN '; '.
    SPLIT line AT ';' INTO
     it_excel-steps
     ...
     .

    APPEND it_excel.
    CLEAR it_excel.
  ENDIF.
ENDLOOP.
noch mal vielen Dank an Benny!!!

Beitrag von Gast ( / / 0 / 3 ) »
Danke. Du bist ein Schatz :-)

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
aber immer doch :oops:

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) »
Hallo Leute,

wollte bene auch ein Excel-file einlesen. Leider klappt das bei mir nur, wenn ich das .xls vor in .txt (Tabs getrennt) speichere. Wenn ich das .xls einlese, dann bekomme ich nur miese Zeichen. :?

Geht Eure Lösunug mit Einlesen von .xls?

Viele Grüße,
Blueshape
Ich bin für alles offen, solange es anderen nicht ernsthaft schadet.

Beitrag von GAST ( / / 0 / 3 ) »
Hallo BlueShape,
versuch's mal mit dem FUBA ALSM_EXCEL_TO_INTERNAL_TABLE

Gruss
Uwe

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) »
Hallo,

vielen Dank für den Hinweis.
Ich hatte aber gedacht ich soll die Klasse CL_GUI_FRONTEND_SERVICES mit der Methode GUI_UPLOAD verwenden!? :?

Jetzt weiß ich gar nicht, wann ich den FuBa ALSM_EXCEL_TO_INTERNAL_TABLE verwenden soll. Lädt der auch die Datei hoch oder muss ich die Datei erst mit GUI_UPLOAD laden? Eigentlich muss GUI_UPLOAD doch im Spiel bleiben, da es doch extra dafür da ist, oder?

Vielen Dank für die Hilfe im voraus,
Blueshape
Ich bin für alles offen, solange es anderen nicht ernsthaft schadet.

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) »
Hallo Leute,

habe GUI-Upload jetzt weggelassen.
Funzt wunderbar. :lol:

Herzlichen Dank!
Blueshape
Ich bin für alles offen, solange es anderen nicht ernsthaft schadet.

Vergleichbare Themen

1
Antw.
759
Views
Datenbanktabelle Daten aus interne Tabelle schreiben
von L0w-RiDer » 05.12.2018 11:13 • Verfasst in ABAP® für Anfänger
7
Antw.
3688
Views
Daten in Datei schreiben
von genadi » 20.04.2006 11:12 • Verfasst in ABAP® Core
2
Antw.
6863
Views
in interne Tabelle schreiben
von anki_86 » 25.06.2007 08:53 • Verfasst in ABAP® für Anfänger
1
Antw.
1248
Views
Daten per programm auf transport schreiben
von mflanders » 10.07.2006 16:05 • Verfasst in ABAP® für Anfänger
4
Antw.
2420
Views
Interne Tabelle in Excel schreiben
von mamba » 12.12.2006 15:36 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

E-Mail versenden mit GroupWise 18
vor einer Stunde von Kaiwalker 2 / 277
PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 72

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.

Aktuelle Forenbeiträge

E-Mail versenden mit GroupWise 18
vor einer Stunde von Kaiwalker 2 / 277
PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 72

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 131
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 166