CSV-Daten aus drei Quellen matchen mit Stuktur

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

CSV-Daten aus drei Quellen matchen mit Stuktur

Beitrag von manuelschütz (ForumUser / 1 / 0 / 0 ) »
Hallo All,

ich habe eine kleine Frage. Bin auch noch nicht so gut in Abap.

Folgender Sachverhalt: Ich bekomme drei unterschiedlich aufgebaute CSV Dateien, die ich in eine interne Tabelle einlese, wo ich jedes Feld einzeln ansprechen kann. Die CSV-Dateien können unterschiedlichen Format sein, d.h. die entsprechenden Felder können an unterschiedlichen Stellen der CSV-Datei sein.
Da ich nur Alphanumerische Werte bekomme, kann ich z.B. eine interne Tabelle mit 60 Feldern a 60Char definieren. Dort die Daten einlesen ist dann auch kein Problem.

Wenn's ne Möglichkeit gibt mehrere Felder mit Nummerierung (z.B.: Feld1,Feld2) jeweils mit 60Cahr zu definieren, dann bitte Möglichkeit posten.

Dies ist aber noch das kleinere Problem.

Nun das größere.

Mit diesen Daten soll ich einen Funktionsbaustein aufrufen, der eine feste vorgegebene Struktur hat, die ich auch noch nicht kenne.

Nun muss ich die Felder aus der internen Tabelle irgendwie dem Funktionsbaustein übergeben. Die Zuweisungen können aber Variieren, d.h. z.B. Feld1 der internen Tabelle muss in Feld struck-feld5 bzw. bei einer anderen CSV-Datei muss Feld1 in Feld struck-feld1.

Meine Fragen:

1. Wie kann ich mir intelligent die interne Tabelle mit durchnummerierten Feldern a 60Char pro Feld anlegen.

2. Kann ich über eine eigene Tabelle mir die unterschiedlichen Wertzuweisungen definieren. Grundlage für diese Lösung ist, das ich in einem Arbeitsbereich das Feld wa_arbeitsbereich-kontonummer mit einer Feldnummer ansprechen kann, wie z.b. bei einem Array a[2], wie man es z.b. aus Java kennt.

Natürlich kann ich für jede CSV-Dateimöglichkeit eine Funktion FB schreiben, aber das möchte ich eigentlich nicht. Aber eine andere Lösung ist mir nicht eingefallen auf die schnelle.

Und Lösung 2 fällt nach meinem Wissenstand aus.

Also wenn jemand eine gute Lösung für mein Problem hat, dann soll er es doch posten. Und dann am besten gleich Source.

THX manuel

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


Re: CSV-Daten aus drei Quellen matchen mit Stuktur

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
manuelschütz hat geschrieben: 1. Wie kann ich mir intelligent die interne Tabelle mit durchnummerierten Feldern a 60Char pro Feld anlegen.
Je nach Release kann man die interne Tabelle dynamisch erstellen. Dies ginge über RTTS und CREATE DATA bzw. cl_alv_table_create=>create_dynamic_table. Ob es Sinn macht die Felder zu nummerieren oder ihnen die passenden Namen zu geben hängt von Punkt 2 ab.
manuelschütz hat geschrieben: 2. Kann ich über eine eigene Tabelle mir die unterschiedlichen Wertzuweisungen definieren. Grundlage für diese Lösung ist, das ich in einem Arbeitsbereich das Feld wa_arbeitsbereich-kontonummer mit einer Feldnummer ansprechen kann, wie z.b. bei einem Array a[2], wie man es z.b. aus Java kennt.
Wenn du in Punkt 1. sprechende Namen und passende Datentypen nimmst ist es evtl. möglich mit MOVE-CORRESPONDING zu arbeiten. Das mit dem Array geht in SAP mittels FIELD-SYMBOLS, insbesondere die Anweisung:
ASIIGN COMPONENT comp OF STRUCTURE struc scheint hier weiter helfen zu können. Für comp kann wahlweise eine Zahl oder ein Name angegeben werden.

Hoffe das ganze hilft dir.
Gruß Hendrik

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Hallo Manuel,

ein recht einfacher Vorschlag wäre folgende:

* Satzbeschreibung Datei1
name1
name5
name4

* Satzbeschreibung Datei2
name4
name1
name2

* Komplette Tabelle
name1
name2
name4
name5



1) einlesen der dateien in die jeweilige richtige Strucktur (DO ... Read Dataset...)

2) move-corresponding <struktur_datei1> to <komlette Tabelle>
move-corresponding <struktur_datei2> to <komlette Tabelle>

Damit findet deine verarbeitung beim einlesen der CSV - Dateien statt und es geht recht einafch und übersichtlich.

Gruß

Thomas

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo,

schau dir mal die Befehle split ... into table
und assign component an:

Code: Alles auswählen.

   split wa at ';' into table sptab.
    cnt = 1.

    loop at sptab.
      add 1 to cnt.

      ASSIGN COMPONENT cnt OF STRUCTURE itab TO <field>.
      <field> = sptab-line.
    endloop.

    append itab.
a s
s oon
a s
p ossible
h elp
http://www.clv.de/

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1305
Views
Drei ALVs auf einem Screen
von tomyboy » 04.05.2005 15:09 • Verfasst in ABAP® für Anfänger
2
Antw.
16157
Views
String die ersten drei Zeichen prüfen
von Marc K. » 02.04.2012 14:19 • Verfasst in ABAP® für Anfänger
5
Antw.
1529
Views
Regex: Drei gleiche Zeichen/Digits am Zeilenanfang
von sapdepp » 14.10.2024 10:43 • Verfasst in ABAP® Core
3
Antw.
2130
Views
select von drei Tabellen mit nur einer gemeinsamen Spalte
von robin1at » 04.01.2006 10:06 • Verfasst in ABAP® für Anfänger
4
Antw.
3225
Views
ALV-liste-Daten mit der DB-Tabelle-Daten vergleichen
von Nadine_2706 » 31.08.2011 11:57 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zeilenumbrüche ersetzen
vor 35 Minuten von rob_abc 4 / 24
Dialog-Container mit Toolbar/Status
vor 20 Stunden von tar gelöst 19 / 2084
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1444

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

Zeilenumbrüche ersetzen
vor 35 Minuten von rob_abc 4 / 24
Dialog-Container mit Toolbar/Status
vor 20 Stunden von tar gelöst 19 / 2084
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1444

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 505
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2143
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8738