SPLITEN - Mit verschiedenen leer space

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

SPLITEN - Mit verschiedenen leer space

Beitrag von HH_ABAP (Specialist / 262 / 144 / 1 ) »
Hallo,

ich bin dabei eine Text Datei (Bitte siehe den Screenshot) in einer interne Tabelle lesen (lt_split). In dieser Text Datei zwischen Felder gibt es unterschiedliche leerzeichen/leer space also mit meinem jetzigen Code kann ich es nicht spliten.

Zurzeit kann nur die erste drei Felder spliten, weil nur ein leer space dazwischen liegen aber die andere Felder kann es nicht spliten.

Hat jemand eine Idee?

Bitte siehe die Screenshots und den Code.

Code: Alles auswählen.

CALL FUNCTION 'UPLOAD'
  EXPORTING
    filename                =  'C:\ ...\daten.txt' 
*    filetype                =          
  TABLES
    data_tab                = lt_ergebnis
  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
    OTHERS                  = 9.

LOOP AT lt_ergebnis ASSIGNING FIELD-SYMBOL(<ergebniszeile>).
  APPEND INITIAL LINE TO lt_split ASSIGNING FIELD-SYMBOL(<neue_zeile>).
  SPLIT <ergebniszeile> AT ' ' INTO TABLE DATA(lt_hilfstabelle_spalten).  --> hier habe ich nur ein leerzeichen

  LOOP AT lt_hilfstabelle_spalten ASSIGNING FIELD-SYMBOL(<spaltenwert>).
    ASSIGN COMPONENT sy-tabix OF STRUCTURE <neue_zeile> TO FIELD-SYMBOL(<spalte_der_zieltabelle>).
    <spalte_der_zieltabelle> = <spaltenwert>.
  ENDLOOP.
ENDLOOP.

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


Re: SPLITEN - Mit verschiedenen leer space

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,

versuche es mal mit diesem Beispiel

https://www.berater-wiki.de/Funktionsba ... RNAL_TABLE

hier wird eine Excel Datei (.Csv) eingelesen und damit funktionieren auch die Spalten

Gruß Wolfgang

Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag:
HH_ABAP


Re: SPLITEN - Mit verschiedenen leer space

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Das ist für eine Excel-Datei. HH_ABAP redet von einer Textdatei, und zwar in diesem Falle offenbar mit festen Spalten, also nicht semikolon-getrennt. Da muss er dann die Breite jeder Spalte kennen (z.B. über eine Customizingtabelle) und dann mit Stringoperatoren wie SUBSTRING die Zeilen in Teile "von Stelle a bis Stelle b" zerlegen.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
HH_ABAP


Re: SPLITEN - Mit verschiedenen leer space

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
Oder mit FIND ALL OCCURRENCES OF jedes Vorkommen von SPACE ermitteln und wenn der Abstand von einem SPACE zum andern mehr als 1 Zeichen beträgt, die dazwischen liegenden Zeichen als Wert begreifen?
Ist aber wohl recht abenteuerlich.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
HH_ABAP


Re: SPLITEN - Mit verschiedenen leer space

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Zumal es mir bei dem Screenshot so scheint, als ob zwischen den ersten Spalten durchaus nur ein Leerzeichen liegt. Bei einer csv mit fester Breite kann der Abstand zwischen den Spalteninhalten sogar 0 Zeichen betragen.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
HH_ABAP


Re: SPLITEN - Mit verschiedenen leer space

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
DeathAndPain hat geschrieben:
01.05.2023 11:51
Zumal es mir bei dem Screenshot so scheint, als ob zwischen den ersten Spalten durchaus nur ein Leerzeichen liegt. Bei einer csv mit fester Breite kann der Abstand zwischen den Spalteninhalten sogar 0 Zeichen betragen.
Wenn es feste Spaltenbreiten sind, ist es dann aber wieder "einfacher" diese zu splitten:

Code: Alles auswählen.

BEGIN OF ts_row,
  col1 TYPE c LENGTH 5,
  col2 TYPE c LENGTH 1,
  col3 TYPE c LENGTH 8
  col4 TYPE c LENGTH 15,
  col5 TYPE c LENGTH 5,
  col6 TYPE c LENGTH 6,
  ....   TYPE c LENGTH ???,
  coln TYPE c LENGTH n,
END OF ts_row.

DATA: ls_row typw ts_row.

ls_row = ls_file_line.
Gruß Hendrik

Re: SPLITEN - Mit verschiedenen leer space

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
DeathAndPain hat geschrieben:
01.05.2023 11:51
Zumal es mir bei dem Screenshot so scheint, als ob zwischen den ersten Spalten durchaus nur ein Leerzeichen liegt. Bei einer csv mit fester Breite kann der Abstand zwischen den Spalteninhalten sogar 0 Zeichen betragen.
Wenn es feste Spaltenbreiten sind, ist es dann aber wieder "einfacher" diese zu splitten:

Code: Alles auswählen.

BEGIN OF ts_row,
  col1 TYPE c LENGTH 5,
  col2 TYPE c LENGTH 1,
  col3 TYPE c LENGTH 8
  col4 TYPE c LENGTH 15,
  col5 TYPE c LENGTH 5,
  col6 TYPE c LENGTH 6,
  ....   TYPE c LENGTH ???,
  coln TYPE c LENGTH n,
END OF ts_row.

DATA: ls_row typw ts_row.

ls_row = ls_file_line.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag (Insgesamt 2):
HH_ABAPSebastian82

Gruß Hendrik

Re: SPLITEN - Mit verschiedenen leer space

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Das stimmt; das ist eine elegante Lösung.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
949
Views
Internetabelle spliten
von Handeglo » 18.04.2008 17:18 • Verfasst in ABAP® für Anfänger
12
Antw.
9966
Views
REPLACE '#' in SPACE
von Handeglo » 21.12.2012 17:59 • Verfasst in ABAP® für Anfänger
2
Antw.
413
Views
SHIFT LEFT with space
von HH_ABAP » 23.02.2024 14:22 • Verfasst in ABAP® für Anfänger
3
Antw.
1492
Views
WITH space mach keine Leerstelle
von kaim77 » 06.12.2013 15:21 • Verfasst in ABAP® Core
0
Antw.
2151
Views
Unicode Problematik bei Character 'SPACE'
von ABAP_User » 31.03.2014 18:40 • Verfasst in Web-Dynpro, BSP + BHTML

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 6 Stunden von Bright4.5 3 / 1478
Regex in where
vor 8 Stunden von tar 6 / 144
Programm anlegen mit Vorlage
vor 23 Stunden von DeathAndPain 2 / 126
IT0024 Qualifikationen CP-ID
vor 23 Stunden von DeathAndPain 2 / 357

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

Daten an Tabelle binden
vor 6 Stunden von Bright4.5 3 / 1478
Regex in where
vor 8 Stunden von tar 6 / 144
Programm anlegen mit Vorlage
vor 23 Stunden von DeathAndPain 2 / 126
IT0024 Qualifikationen CP-ID
vor 23 Stunden von DeathAndPain 2 / 357

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821