Tabellenfelder befüllen

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

Tabellenfelder befüllen

Beitrag von d3pr0f1 (ForumUser / 3 / 0 / 0 ) »
Hallo zusammen,

ich habe als Anfänger mal eine Frage an euch, die ihr mir bestimmt beantworten könnt.

Ich habe eine Tabelle, die 3 Felder hat:

- free_text_1
- free_text_2
- free_text_3

Jetzt möchte ich einen gelesenen Wert immer an die Textfelder anhängen, bis alle drei Textfelder voll sind. Ein Feld hat jeweils eine Länge von 190 Zeichen.
Wie kriege ich das am einfachsten hin?

Viele Grüße
Leon

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


Re: Tabellenfelder befüllen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Sofern es sich um eine flache Struktur handelt kannst du das folgendermaßen machen:
In einem Programm bei dem die Unicode-prüfung nicht aktiv ist

Code: Alles auswählen.

data: ls_struktur type ... "Deine Struktur
CONCATENATE ls_struktur ld_neuer_wert into ls_struktur.
In einem Programm bei dem die Unicode-Prüfung aktiv ist

Code: Alles auswählen.

data: ls_struktur type ... "Deine Struktur
FIELD-SYMBOLS: <ld_data> TYPE clike.
ASSIGN ls_struktur TO <ld_data>
CONCATENATE <ld_data> ld_neuer_wert into <ld_data>.
Die sauberste Variante (meines erachtens)

Code: Alles auswählen.

data: ls_struktur type ... "Deine Struktur
data: lt_string type stringtab.
data: ld_string.
append ld_neuer_wert to lt_string.

concatenate lines of lt_string into ld_string.
ls_struktur-free_text_1 = ld_string.
shift ld_string by 190 places left.
ls_struktur-free_text_2 = ld_string.
shift ld_string by 190 places left.
ls_struktur-free_text_3 = ld_string.
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: Tabellenfelder befüllen

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

versteh ich dich richtig? du hast einen Wert, z.B. 12345 und möchtest da jetzt beispielsweise so lange eine 0 dran hängen bis die 190 Zeichen voll sind?
Warum man das machen will leuchtet mir nicht ein, muss es ja auch nicht :D , aber ich würde das so machen:

- aktuelle Länge des Werts bestimmen (strlen für Strings), diesen Wert dann von den 190 Zeichen abziehen, damit erhälst du eine Anzahl an Schleifendurchläufen X.
- dann:

Code: Alles auswählen.

DO X TIMES.
concacenate free_text_1 '0' INTO free_text_1.
ENDDO. 
ist ungetestet, müsste aber in diesem Sinne klappen.
Gruß,
der Matze

Re: Tabellenfelder befüllen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Thanatos82 hat geschrieben:versteh ich dich richtig? du hast einen Wert, z.B. 12345 und möchtest da jetzt beispielsweise so lange eine 0 dran hängen bis die 190 Zeichen voll sind?
Warum man das machen will leuchtet mir nicht ein, muss es ja auch nicht :D
Das kann schon durchaus hilfreich sein.
z.B. Bei einer Zahl die als CHAR daherkommt vorne Nullen anhängen, damit diese richtig weiterverarbeitet werden kann.
Oder einen String vor dem eigentlichen concatenate mit Leerzeichen auffüllen, damit danach eine Offset-Angabe funktioniert.

Aber hier gehts eher darum, dass in einem ersten Schritt Texte gesammelt werden und diese sollen dann der Reihe nach an die Felder angehängt werden.
(Zumindest hab ich das so verstanden)

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: Tabellenfelder befüllen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Guten Abend Leon,

obwohl dir schon Antworten angeboten wurden muss ich sagen, dass deine Frage eigentlich völlig unverständlich ist.
Du sprichst du von einer Tabelle aus 3 Feldern. Aber eine Tabelle besteht nicht aus Feldern sondern aus Zeilen. Eine Zeile einer Tabelle besteht evtl. aus Feldern.
Und irgendwo willst du da jetzt EINEN Wert IMMER ( wie oft? Oder kommen immer wieder neue Werte ?) dranhängen ( woran denn? - an eine Zeile, oder an die Tabelle )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Tabellenfelder befüllen

Beitrag von d3pr0f1 (ForumUser / 3 / 0 / 0 ) »
Ich habe das Problem bereits gelöst. Aber zum besseren Verständnis erkläre ich es nochmal:

Ich habe einen beliebig langen String "ld_string". Dieser String muss in eine eine Zeile einer Tabelle "ld_tabelle" geschrieben werden. Dort gibt es die drei Spalten "free_text_1", "free_text_2" und free_text_3. Die Felder sind jeweils 190 Zeichen lang. Der String soll nun in diese 3 Felder geschrieben werden, also wenn nötig, auf die 3 Felder aufgeteilt werden. Wenn kein Platz mehr ist, dann wird einfach abgeschnitten.

So habe ich es jetzt gelöst:

Code: Alles auswählen.

WHILE ld_string NE space.
          IF strlen( ld_tabelle-free_text_1 ) LT 190.
            CONCATENATE ld_tabelle-free_text_1 ld_string(1) INTO ld_tabelle-free_text_1.
          ELSEIF strlen( ld_tabelle-free_text_2 ) LT 190.
            CONCATENATE ld_tabelle-free_text_2 ld_string(1) INTO ld_tabelle-free_text_2.
          ELSEIF strlen( ld_tabelle-free_text_3 ) LT 190.
            CONCATENATE ld_tabelle-free_text_3 ld_string(1) INTO ld_tabelle-free_text_3.
          ELSE.
            EXIT.
          ENDIF.
          SHIFT ld_string.
ENDWHILE.
Vielen Dank für eure Hilfe!

Viele Grüße
Leon

Re: Tabellenfelder befüllen

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
ähm langen da nicht 3 zeilen coding auch ?

Code: Alles auswählen.

move: ld_string(190)     to ld_tabelle-free_text_1,
      ld_string+191(190) to ld_tabelle-free_text_2,
      ld_string+382(190) to ld_tabelle-free_text_3.
<:: XING-Gruppe Tricktresor::>

Re: Tabellenfelder befüllen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
@ratsnus: Bei deinem Vorschlag könntest du Probleme mit Teilfeldzugriffen bekommen, wenn der String zu kurz ist.
@Leon: Deine "WHILE"-Konstruktion ist aber schon sehr gewöhnungsbedürftig und sicher auch laufzeitintensiv.

Hier mal eine Alternative, die nur 2 Anweisungen benötigt das zu tun, was du in deiner WHILE-Schleife machst.

Code: Alles auswählen.

REPORT.

TYPES: gty_feld(5) TYPE c.  " Bei dir sind das dann 190 Zeichen

DATA: BEGIN OF ls_tabellenzeile,
        feld1 TYPE gty_feld,
        dummy1,
        dummy2,
        feld2 TYPE gty_feld,
        dummy3,
        feld3 TYPE gty_feld,
      END OF ls_tabellenzeile.


DATA: s TYPE string.

START-OF-SELECTION.
  s = sy-abcde.  " Demostring
  PERFORM aufteilen USING s CHANGING ls_tabellenzeile.
  write:/ ls_tabellenzeile.

  s = sy-abcde(8).  " Demostring
  PERFORM aufteilen USING s CHANGING ls_tabellenzeile.
  write:/ ls_tabellenzeile.

*&---------------------------------------------------------------------*
*&      Form  AUFTEILEN
*&---------------------------------------------------------------------*
FORM aufteilen  USING    p_s TYPE string
                CHANGING p_tabellenzeile LIKE ls_tabellenzeile.

  DATA: BEGIN OF ls_easysplit,
          feld1 TYPE gty_feld,
          feld2 TYPE gty_feld,
          feld3 TYPE gty_feld,
         END OF ls_easysplit.

  ls_easysplit = p_s.
  MOVE-CORRESPONDING ls_easysplit TO p_tabellenzeile.

ENDFORM.                    " AUFTEILEN
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Tabellenfelder befüllen

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
black_adept hat geschrieben:@ratsnus: Bei deinem Vorschlag könntest du Probleme mit Teilfeldzugriffen bekommen, wenn der String zu kurz ist.
stimmt, wenn lt_string als type string definiert wird. ist lt_string als Type C, mit Längenangabe die grösser als der letzte Offset ist, definiert, kann der wert auch kürzer sein.
<:: XING-Gruppe Tricktresor::>

Seite 1 von 1

Vergleichbare Themen

8
Antw.
2922
Views
Tabellenfelder in der IW22
von Ulrich Heinrichs » 13.01.2014 14:18 • Verfasst in ABAP® Core
2
Antw.
1884
Views
Smartforms + Farbige Tabellenfelder
von LordDeath » 04.08.2005 17:19 • Verfasst in Dialogprogrammierung
5
Antw.
6048
Views
Popup Tabellenfelder anzeigen
von Tom_Tom » 08.11.2005 10:48 • Verfasst in ABAP® für Anfänger
17
Antw.
7745
Views
View anlegen mit gleichnamigen Tabellenfelder
von bohne » 21.02.2007 22:51 • Verfasst in ABAP® für Anfänger
2
Antw.
8772
Views
Tabellenfelder zu Mussfeldern machen - Antwort vorhanden
von vi.ci » 15.04.2009 10:39 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Zugriff auf Daten via Webdav
vor 55 Minuten von msfox 2 / 35
Interne Tabelle
vor 18 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

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

Zugriff auf Daten via Webdav
vor 55 Minuten von msfox 2 / 35
Interne Tabelle
vor 18 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141