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 ) » 23. Jul 2004 14:48

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


Beitrag von Gast ( / / 0 / 3 ) » 23. Jul 2004 15:01

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 ) » 26. Jul 2004 07:32

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 ) » 26. Jul 2004 11:01

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 ) » 26. Jul 2004 11:55

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 ) » 26. Jul 2004 12:14

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 ) » 26. Jul 2004 14:38

dank einer Email habe ich hinbekommen. :D

vielen Dank an alle!!!

Beitrag von Gast ( / / 0 / 3 ) » 26. Jul 2004 15:13

Wie sieht die Lösung aus?

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) » 26. Jul 2004 15:28

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 ) » 26. Jul 2004 15:29

Danke. Du bist ein Schatz :-)

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) » 26. Jul 2004 15:48

aber immer doch :oops:

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) » 1. Feb 2006 16:41

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 ) » 2. Feb 2006 07:58

Hallo BlueShape,
versuch's mal mit dem FUBA ALSM_EXCEL_TO_INTERNAL_TABLE

Gruss
Uwe

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) » 2. Feb 2006 11:43

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 ) » 2. Feb 2006 15:03

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.

Seite 1 von 2 (current) Nächste

Aktuelle Forenbeiträge

FuBa Datum -> Quartal
vor 2 Minuten von DeathAndPain 4 / 41
Meldungsnr. TK332 nur in lokalen Aufträgen bearbeiten
vor 2 Stunden von autohandel7 5 / 40
ABAP Clean Code
vor 20 Stunden von ralf.wenzel 48 / 1120

Unbeantwortete Forenbeiträge

Kundenhierarchien in der Preisfindung
Gestern von SAP_ENTWICKLER 1 / 31
[GELÖST] Feld KNVV-BOIDT
vor 6 Tagen von SAP_ENTWICKLER 1 / 60
Sortierbegriffe einer Stückliste ändern
vor einer Woche von mbiesenb 1 / 46
Feiertagsklasse und Lohnart Verknüpfung entfernen
vor einer Woche von Flashtie 1 / 46