SAP Daten aus csv in interne Tab schreiben


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

SAP Daten aus csv in interne Tab schreiben

Beitragvon steffi_ma » 23.07.2004, 13: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
steffi_ma
ForumUser
 
Beiträge: 55
Registriert: 13.07.2004, 10:30
Dank erhalten: 0 mal

Sponsor

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

Beitragvon Gast » 23.07.2004, 14: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
Gast
 

Beitragvon Miri » 26.07.2004, 06: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
Miri
 

Beitragvon steffi_ma » 26.07.2004, 10: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 &#40;Datentyp C,N,D,T oder String&#41;
 


Liebe Grüße
Steffi
steffi_ma
ForumUser
 
Beiträge: 55
Registriert: 13.07.2004, 10:30
Dank erhalten: 0 mal

Beitragvon Gast » 26.07.2004, 10: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.
Gast
 

Beitragvon steffi_ma » 26.07.2004, 11: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.
steffi_ma
ForumUser
 
Beiträge: 55
Registriert: 13.07.2004, 10:30
Dank erhalten: 0 mal

Beitragvon steffi_ma » 26.07.2004, 13:38

dank einer Email habe ich hinbekommen. :D

vielen Dank an alle!!!
steffi_ma
ForumUser
 
Beiträge: 55
Registriert: 13.07.2004, 10:30
Dank erhalten: 0 mal

Beitragvon Gast » 26.07.2004, 14:13

Wie sieht die Lösung aus?
Gast
 

Beitragvon steffi_ma » 26.07.2004, 14:28

Meine Lösung:
Code: Alles auswählen
DATA: BEGIN OF t_structure,
       steps&#40;3&#41;     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&#40;256&#41;.
DATA: END OF line.


...

*&amp;---------------------------------*
*&amp; gewaehlte Datei uploaden   *
*&amp;---------------------------------*


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!!!
steffi_ma
ForumUser
 
Beiträge: 55
Registriert: 13.07.2004, 10:30
Dank erhalten: 0 mal

Beitragvon Gast » 26.07.2004, 14:29

Danke. Du bist ein Schatz :-)
Gast
 

Beitragvon steffi_ma » 26.07.2004, 14:48

aber immer doch :oops:
steffi_ma
ForumUser
 
Beiträge: 55
Registriert: 13.07.2004, 10:30
Dank erhalten: 0 mal

Beitragvon Blueshape » 01.02.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.
Blueshape
Specialist
 
Beiträge: 346
Registriert: 31.05.2004, 11:11
Wohnort: Hessen
Dank erhalten: 0 mal

Beitragvon GAST » 02.02.2006, 07:58

Hallo BlueShape,
versuch's mal mit dem FUBA ALSM_EXCEL_TO_INTERNAL_TABLE

Gruss
Uwe
GAST
 

Beitragvon Blueshape » 02.02.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.
Blueshape
Specialist
 
Beiträge: 346
Registriert: 31.05.2004, 11:11
Wohnort: Hessen
Dank erhalten: 0 mal

Beitragvon Blueshape » 02.02.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.
Blueshape
Specialist
 
Beiträge: 346
Registriert: 31.05.2004, 11:11
Wohnort: Hessen
Dank erhalten: 0 mal

Nächste

Zurück zu ABAP® Core

  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 3 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
Daten in Datei schreiben
21.04.2006, 08:12 von ereglam 7 Antw.
Interne Tabelle in Excel schreiben
14.12.2006, 10:25 von mamba 4 Antw.
HTTP-Daten als interne Tabelle
04.11.2005, 13:18 von quercus 2 Antw.
gelöst Interne Tabelle in CSV: CSV Daten untereinander auflisten
22.02.2017, 17:21 von JHM 11 Antw.
Interne Tabelle uebernimmt nicht alle daten
27.01.2006, 04:06 von patty 4 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder