Felder bei Ausgabe als Textdatei formatieren

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

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

Felder bei Ausgabe als Textdatei formatieren

Beitrag von Marwin ( / / 0 / 3 ) »
Hi,
Ich habe eine interne Tabelle, die mit Strings gefüllt ist. Diese will ich in eine externe Datei schreiben. Das klappt auch ganz gut. Jedoch werden die Felder mit CONCATENATE nahtlos aneinander gehängt. Ich will aber, dass die Felder bei der Ausgabe die Länge annehmen, wie sie deklariert sind. Da die Felder unterschiedlich lang sind und die Felder verschiedene Länge im Inhalt haben, muss eine flexible Lösung her.

Mein Code sieht so aus:

Code: Alles auswählen.

open dataset DATEI_OU for output in text mode encoding default.
*Öffnen war nicht erfolgreich
if  sy-subrc = 8.
  write: / 'Datei konnte nicht geoeffnet werden'.
  exit.
endif.
*Öffnen war erfolgreich
if sy-subrc = 0.
  loop at i_tab.
     concatenate i_tab-newko
                 i_tab-WRBTR
                 i_tab-DMBTR
                 i_tab-WMWST
                 i_tab-SGTXT
                 into Str_line.

    transfer Str_line to DATEI_OU.

    if sy-subrc <> 0.
      exit.
    endif.
  endloop.
endif.
close dataset DATEI_OU.

Wer kann mir da einen tipp geben ?

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


Beitrag von Kowi (ForumUser / 28 / 0 / 0 ) »
Hallo Marwin,

was möchtest du genau? Wenn du nur möchtest, daß z.B. Leerzeichen zwischen den Texten sind, dann ergänze dein CONCATENATE hinter INTO str_line um SEPARATED BY space...

Gruß,
Kowi

re:

Beitrag von Marwin ( / / 0 / 3 ) »
Hi Kowi,

Die Felder der internen Tabelle haben all bestimmte Längen, z.B.
1. Feld : Länge 16
2. Feld : Länge 3
3. Feld : Länge 17
4. Feld : Länge 50

Der Inhalt der Felde ist von der länge aber immer unterschiedlich, z.B.
1. Feld : 'bla'
2. Feld : 'b'
3. Feld : 'blabla'
4. Feld : 'bl'

1. Feld : 'blabl'
2. Feld : 'bl'
3. Feld : 'bla'
4. Feld : 'bla'

Bei der Ausgabe soll das so aussehen :
bla b blabla bl
blabl bl bla bla

Ich hoffe ich habe alles verständlich erörtert und das mir jemand weiterhelfen kann.

Beitrag von Gast ( / / 0 / 3 ) »
EDIT :

Bei der Ausgabe soll das z.B. so aussehen :

Code: Alles auswählen.

bla     b      blabla     bl 
blabl   bl     bla        bla 

Beitrag von Gast ( / / 0 / 3 ) »
Das "concatenate ....felder...... into Str_line." ist einfach nur zuviel.

Kannst Du komplett weglassen.

Code: Alles auswählen.

loop at i_tab.
*     concatenate i_tab-newko
*                 i_tab-WRBTR
*                 i_tab-DMBTR
*                 i_tab-WMWST
*                 i_tab-SGTXT
*                 into Str_line.
*
    transfer Str_line to DATEI_OU.

    if sy-subrc <> 0. 

endloop.
Soviel zum concatenate!!!!

concatenate komplett weglassen ?

Beitrag von Marwin (ForumUser / 6 / 0 / 0 ) »
Wie meinst du dass mit dem concatenate komplett weglassen ? Ich habe eine interne Tabelle. Diese will ich als externe Datei speichern. Die Variable Str_line nutze ich, um den Inhalt aller Felder einer Zeile zu speichern.
Mit deinem Coding würde ich garnichts speichern, weil str_line dann leer wäre.

Andere Sache :
Mit TRANSFER wird immer zeilenweise (im TEXT MODE) gespeichert. Gibt es eine Möglichkeit in der selben Zeile weiter zu schreiben ? Ich habe versucht mit GET DATASET dset POSITION zu arbeiten. Damit kann ich zwar die Spalte, in der geschrieben wird, festsetzen, aber es kommt kein Zeilenumbruch mehr. Wie kann man da einen Zeilenumbruch erreichen ?

Code: Alles auswählen.

   Set Dataset DATEI_OU Position Spalte.
   transfer i_tab-newko to DATEI_OU length 17.
   Spalte = Spalte + 10.
   Set Dataset DATEI_OU Position Spalte.
   transfer i_tab-WRBTR to DATEI_OU length 16.
   Spalte = Spalte + 10.
   Set Dataset DATEI_OU Position Spalte.
   transfer i_tab-DMBTR to DATEI_OU length 16.
   Spalte = Spalte + 10.
   Set Dataset DATEI_OU Position Spalte.
   transfer i_tab-WMWST to DATEI_OU length 16.
   Spalte = Spalte + 10.
   Set Dataset DATEI_OU Position Spalte.
   transfer i_tab-SGTXT to DATEI_OU length 50.
Variable SPALTE ist vom Typ I und mit 0 initialisiert.
Gruß,
Marwin

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Anonymous hat geschrieben:Das "concatenate ....felder...... into Str_line." ist einfach nur zuviel.

Kannst Du komplett weglassen.

Code: Alles auswählen.

loop at i_tab.
*     concatenate i_tab-newko
*                 i_tab-WRBTR
*                 i_tab-DMBTR
*                 i_tab-WMWST
*                 i_tab-SGTXT
*                 into Str_line.
*
*    transfer Str_line to DATEI_OU.
    transfer itab to DATEI_OU.

    if sy-subrc <> 0. 

endloop.
:wink:

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Danke, danke, danke...

Beitrag von Marwin (ForumUser / 6 / 0 / 0 ) »
@ Hubi : Das war die Lösung... danke. :D
Ich denke machnmal echt zu kompliziert... :roll:

@ all : Danke für eure Hilfe. :D
Gruß,
Marwin

Seite 1 von 1

Vergleichbare Themen

3
Antw.
3156
Views
Methode zum formatieren der Ausgabe in JSON
von Lord » 14.06.2016 12:22 • Verfasst in ABAP® für Anfänger
0
Antw.
1593
Views
Zahlen formatieren
von Aggressor » 04.05.2006 16:23 • Verfasst in Web-Dynpro, BSP + BHTML
2
Antw.
1974
Views
Datum formatieren
von supermario73 » 17.06.2008 14:00 • Verfasst in ABAP® Core
4
Antw.
2743
Views
Variable in Textdatei
von jonas1996 » 14.03.2014 08:42 • Verfasst in ABAP® für Anfänger
1
Antw.
2733
Views
Textdatei einlesen
von MG1993 » 22.07.2014 13:55 • Verfasst in ABAP® für Anfänger

Ü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.