Itab in selbst angelegter Datenbank speichern

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Itab in selbst angelegter Datenbank speichern

Beitrag von schligger (ForumUser / 4 / 0 / 0 ) »
Hallo alle zusammen. Ich bin grade erst hier im Forum angekommen und auch noch ziemlich neu in der Welt von ABAP.

Ich hab die Aufgabe erhalten, ein Programm zu schreiben, welches CSV Datein einließt und eben diese Daten auf eine selbsterstellte Datenbank speichert. Hier ist mein bisheriger Code:

Code: Alles auswählen.

REPORT zcsvdaten2 NO STANDARD PAGE HEADING.

DATA: dateiname TYPE string,                       "Erstelle Variable vom Typ String
      dateitabelle TYPE filetable,                 "obligatorisch, 0 zeilige stringtabelle
      anzdat TYPE i,                               "Anzahl der Verarbeiteten Datein (-1 bei abbruch)
      temp TYPE i.




PARAMETER csvdatei TYPE filename OBLIGATORY.      "für die csv Datei


AT SELECTION-SCREEN ON VALUE-REQUEST FOR csvdatei.  "Erlaube F4-Auswahl

  CALL METHOD cl_gui_frontend_services=>file_open_dialog(   "Methode zur Auswahl der csv Datei
    EXPORTING
      window_title            = 'Datei auswählen'         "qol Anzeige
      default_filename        = '*.csv'                   "nur csv Dateien können gewählt werden
      file_filter             = '*.csv'
    CHANGING
      file_table              = dateitabelle        "obligatorisch Changing Parameter bestimmen
      rc                      = anzdat
    EXCEPTIONS                                       "exceptions nummerieren
      file_open_dialog_failed = 1                    "Wenn die Datei nicht geöffnet werden kann
      cntl_error              = 2                    "Kontrollfehler
      error_no_gui            = 3                    "Kein GUI
      not_supported_by_gui    = 4                    "Keine Unerstützung vom GUI
      OTHERS                  = 5 ).                 "anderes abfangen


  IF sy-subrc = 0.                                  "Wenn keine Exception ausgelöst wurde
    READ TABLE dateitabelle INTO csvdatei INDEX 1.  "schreibe Dateitabelle in den Parameter
  ENDIF.


START-OF-SELECTION.

  dateiname = csvdatei.                             "Dateiname wird zur ausgewählten csv Datei

  CALL FUNCTION 'GUI_UPLOAD'                       "Hochladen der Datei
    EXPORTING
      filename = dateiname                         "Die entsprechende Datei auswählen
    TABLES
      data_tab = dateitabelle.                             "Alles in dateitabelle speichern

END-OF-SELECTION.


  DESCRIBE TABLE dateitabelle LINES temp.
  IF temp = 1.
    WRITE: 'Es wurde eine Zeile der Datenbank hinzugefügt'.
  ELSEIF temp > 1.
    WRITE: 'Es wurden ' && temp && ' Zeilen der Datenbank hinzugefügt'.
  ELSE.
    WRITE: 'Fehler bei der Speicherung'.
  ENDIF.
Das auswählen und hochladen der Datei klappt ohne Probleme. Aber wie schaffe ich es jetzt, die Werte die in "Dateitabelle" sind auf eine Datenbank zu speichern?
Wenn ich sowas versuche wie
Loop at dateitabelle.
Insert "Datenbank" From Dateitabelle.
Endloop.
kriege ich die Fehlermeldung, dass Dateitabelle keine Kopfzeile besitzt.

Danke schonmal im Vorraus für eure Unterstützung

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


Re: Itab in selbst angelegter Datenbank speichern

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Beim LOOP AT fehlt INTO oder ASSIGNING. (Weitere Infos dazu siehe ABAP-Hilfe)
Wie man strkturierte Daten aus einer Datei in einer DB-Tabelle schaufelt, dafür gibt hunderte Anleitungen im Netz und auch hier im Forum.
Bitte suchen und dann bei konkreten Verständnisproblemen nachfragen! Danke!

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Itab in selbst angelegter Datenbank speichern

Beitrag von schligger (ForumUser / 4 / 0 / 0 ) »
a-dead-trousers hat geschrieben:Beim LOOP AT fehlt INTO oder ASSIGNING. (Weitere Infos dazu siehe ABAP-Hilfe)
Wie man strkturierte Daten aus einer Datei in einer DB-Tabelle schaufelt, dafür gibt hunderte Anleitungen im Netz und auch hier im Forum.
Bitte suchen und dann bei konkreten Verständnisproblemen nachfragen! Danke!

lg ADT
das mit INTO habe ich auch schon gesehen und probiert, nur weiß ich leider nicht genau wie mein wa aussehen muss. Ich hatte es so versucht:

Code: Alles auswählen.

Data: Dateitabelle2 like line of Dateitabelle

"...

  LOOP AT dateitabelle INTO dateitabelle2.
    INSERT INTO yomi VALUES dateitabelle2.  "Yomi ist der Name meiner Datenbank
  ENDLOOP.
Syntaktisch funktioniert das Programm, aber wenn ich mir mit der Transaktion SE16 den Inhalt meiner Datenbank anschaue, sagt er mir, dass sie leer ist.

Könnte es vielleicht daran liegen, dass meine Datenbank nicht die richtigen Eigenschaften besitzt? Im Umgang mit Datenbanken habe ich wirklich 0 Erfahrung
http://www.bilder-upload.eu/show.php?fi ... 159520.png

Re: Itab in selbst angelegter Datenbank speichern

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Klar, weil noch die Umwandlung der Struktur aus deiner Datei auf die deiner Datenbanktabelle fehlt.
ABAP weiß ja (noch) nicht an welcher Position oder wie auch immer die Daten in der Datei drinnen stehen und kann auch diese nicht dementsprechend in die Datenbank übertragen. Das musst du noch programmieren.
Da es dazu aber unzählige Möglichkeiten (XLS, CSV, XML uvm.) gibt, würde das hier den Rahmen etwas sprengen.

Wie schon gesagt: Such im Internet oder hier im Forum nach Codebeispielen.

Kurzer Überblick was es dazu alles gibt:
XLS --> ABAP2XLSX: http://ivanfemia.github.io/abap2xlsx/
XML --> Klasse CL_IXML in SAP (Beispiele dazu sind unter dem Stichwort IF_IXML bzw. SAP DOM im Internet zu finden)
CSV --> Aktuelles Thema: http://www.abapforum.com/forum/viewtopi ... =1&t=20921

Wenn da nichts passendes dabei ist schau dir die Befehl SPLIT und FIND in der ABAP-Hilfe genauer an.
Auch könnte der OFFSET "+" und LÄNGE "()" Zugriff auf Feldinhalte für dein Vorhaben benötigt werden. Weitere Infos sind ebenfalls der Hilfe zu entnehmen.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Itab in selbst angelegter Datenbank speichern

Beitrag von schligger (ForumUser / 4 / 0 / 0 ) »
a-dead-trousers hat geschrieben:Klar, weil noch die Umwandlung der Struktur aus deiner Datei auf die deiner Datenbanktabelle fehlt.
ABAP weiß ja (noch) nicht an welcher Position oder wie auch immer die Daten in der Datei drinnen stehen und kann auch diese nicht dementsprechend in die Datenbank übertragen. Das musst du noch programmieren.
Da es dazu aber unzählige Möglichkeiten (XLS, CSV, XML uvm.) gibt, würde das hier den Rahmen etwas sprengen.

Wie schon gesagt: Such im Internet oder hier im Forum nach Codebeispielen.

Kurzer Überblick was es dazu alles gibt:
XLS --> ABAP2XLSX: http://ivanfemia.github.io/abap2xlsx/
XML --> Klasse CL_IXML in SAP (Beispiele dazu sind unter dem Stichwort IF_IXML bzw. SAP DOM im Internet zu finden)
CSV --> Aktuelles Thema: http://www.abapforum.com/forum/viewtopi ... =1&t=20921

Wenn da nichts passendes dabei ist schau dir die Befehl SPLIT und FIND in der ABAP-Hilfe genauer an.
Auch könnte der OFFSET "+" und LÄNGE "()" Zugriff auf Feldinhalte für dein Vorhaben benötigt werden. Weitere Infos sind ebenfalls der Hilfe zu entnehmen.

lg ADT
Wirklich hilfreich sind die Links nicht :/ Mit der Methode CL_RSDA_CSV_CONVERTER=>csv_to_structure komme ich irgendwie nicht zurecht. Ich muss lediglich CSV Datein einlesen können. Kannst du mir nicht ein kleines Code Beispiel schreiben für das Speichern einer CSV Datei auf einer Datenbank? :(

Re: Itab in selbst angelegter Datenbank speichern

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
schligger hat geschrieben: Kannst du mir nicht ein kleines Code Beispiel schreiben für das Speichern einer CSV Datei auf einer Datenbank? :(
Frag doch deinen Prof oder Betreuer ob er das nicht für dich machen will. Der weiß auch viel besser was du beachten musst.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Itab in selbst angelegter Datenbank speichern

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
schligger hat geschrieben:Kannst du mir nicht ein kleines Code Beispiel schreiben für das Speichern einer CSV Datei auf einer Datenbank?
Wenn du mal alle Angaben posten würdest, die wichtig sind, könnte man dir evtl. Helfen.
Wie man die eingelesene CSV-Datei in deine DB-Struktur mapped, ist mit den bisher gelieferten Infos nicht möglich! Dazu bräuchte man Infos zum Aufbau bzw. Feldreihenfolge, Formatangaben und evtl. sonstigen Sonderlocken.

Hast du dir den genannten SPLIT-Befehl in der Hilfe angeschaut? Damit könntest du zumindest schon mal jede einzelne Datenzeile in die einzelnen Felder "aufbrechen". Wie dann die Quellfelder in die Zielfelder kommen, ist von oben gefragten Dingen abhängig. Evtl. reicht ein einfaches Zuweisen, evtl. muss noch viel mehr gemacht werden.

Bei deiner Fragestellung und dem Beispielcoding würde ich deine Programmiererfahrung auf sehr, sehr niedrigem Stand einordnen.
Den sy-subrc sollte man immer abfragen, besonders bei DB-Operationen wie INSERT.
Du hast keine COMMIT/ROLLBACK Steuerung in deinem Programm, wieso nicht?
Gruß Hendrik

Re: Itab in selbst angelegter Datenbank speichern

Beitrag von schligger (ForumUser / 4 / 0 / 0 ) »
So, ich hab jetzt selber noch ein wenig rumexperimentiert und habe es nun hinbekommen, die daten auf der datenbanktabelle anzeigen zu lassen (über ein Modify ohne loop)
jetzt muss ich nur noch gucken, dass ich die Split anweisung so hinkriege, dass an einem ';' so gesplittet wird, dass die erste Hälfte ins Feld "Email" und die zweite Hälfte ins Feld "Passwort" kommt.

Danke für eure Hilfe

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2888
Views
Datenbank Struktur/Tabelle aus Itab
von Ichse2 » 09.12.2020 12:14 • Verfasst in ABAP Objects®
30
Antw.
14128
Views
move itab 1 nach itab 2 mit bedingung
von c oco » 17.04.2012 14:39 • Verfasst in ABAP® für Anfänger
4
Antw.
3167
Views
Datenbank PNP(CE)
von Michael Weyland » 17.03.2016 15:39 • Verfasst in Human Resources
27
Antw.
8895
Views
PDF aus Datenbank lesen
von Kenny » 16.04.2013 13:06 • Verfasst in ABAP® für Anfänger
3
Antw.
2358
Views
Datenbank-Index
von Charadin » 19.11.2007 12:23 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 676
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2306
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8890