gelöst Interne Tabelle befüllen


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst Interne Tabelle befüllen

Beitragvon Tanega » 16.02.2017, 12:36

Hallo,
ich habe mal wieder ein Problem und weil mir hier immer so toll geholfen wurde dachte ich fragste nochmal!

Code: Alles auswählen
 lv_text = 'Haus##Stein##Ball##Leder'
DATA : BEGIN OF ls_carac,
         f1(80) TYPE c,
         f2(80) TYPE c,
       END OF ls_carac,
       lt_carac LIKE TABLE OF ls_carac.

  ls_carac-f1 = 'Objekt'.
  ls_carac-f2 = 'Material'.
  APPEND ls_carac TO lt_carac.

 

Folgendes Problem ich mochte die einzelnen Wörter aus der variablen lv_text fortlaufend in die Tabelle schreiben, wie zu sehen ist sind die Wörter immer durch zwei ## getrennt. Wie mache ich das am besten?
Tanega
ForumUser
 
Beiträge: 12
Registriert: 25.01.2017, 07:30
Dank erhalten: 0 mal
Ich bin: Student/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Interne Tabelle befüllen

Beitragvon wreichelt » 16.02.2017, 12:59

Hallo,

im ABAP gibt's den Befehl SPLIT.

Gruß
Wolfgang
wreichelt
Specialist
 
Beiträge: 490
Registriert: 17.07.2005, 09:46
Wohnort: Hessen
Dank erhalten: 81 mal
Ich bin: sonstiges

Re: Interne Tabelle befüllen

Beitragvon ewx » 16.02.2017, 13:06

Schaue dir die ## genauer an! Ich schätze eher, dass es sich um <cr><lf> handelt, die in der Anzeige (Debugger?) als ## angezeigt werden...
ewx
Top Expert
 
Beiträge: 3344
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 194 mal

Re: Interne Tabelle befüllen

Beitragvon Tanega » 16.02.2017, 13:40

Danke für den Split Tip! Aber leider bin ich noch nicht ganz am Ziel.
Code: Alles auswählen
    DATA : BEGIN OF ls_carac
         , f1(80) TYPE c
         , f2(80) TYPE c
         , END OF ls_carac
         , lt_carac LIKE TABLE OF ls_carac.

  ls_carac-f1 = 'Objekt'.
  ls_carac-f2 = 'Material'.

  APPEND ls_carac TO lt_carac.

  SPLIT LV_text AT '##' INTO TABLE lt_carac .

index.php
Leider bleibt die 1.Zeile leer und die Wörter werden alle in die Erste Spalte f1 geschrieben aber nicht abwechselnd f1 f2.

Kann mir da noch jemand helfen?
Tanega
ForumUser
 
Beiträge: 12
Registriert: 25.01.2017, 07:30
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Interne Tabelle befüllen

Beitragvon Unit605 » 16.02.2017, 14:04

Code: Alles auswählen
  SPLIT LV_text AT '##' INTO TABLE lt_carac .


Das funktioniert meistens nicht!

## sind nicht druckbare Zeichen im SAP und koennen CR, LF oder TAB oder BEEP oder oder oder sein! Zu 99% ist es nicht das Zeichen '#'...

Wie Enno bereits schrieb: Du must im Debugger schauen, um was es sich genau handelt. DAS siehst Du nur, wenn Du Dir die Zeichen im HEX-Format anzeigen laesst.
Unit605
Expert
 
Beiträge: 968
Registriert: 05.02.2009, 21:29
Wohnort: Port Charlotte, FL, USA
Dank erhalten: 91 mal
Ich bin: Freiberufler/in

Re: Interne Tabelle befüllen

Beitragvon abuma » 16.02.2017, 14:10

Huhu zusammen,

warum sollte # ein anderes Zeichen sein?

Es wird doch "hart" in die Variable geschrieben oder versteh ich das falsch?
Code: Alles auswählen
lv_text = 'Haus##Stein##Ball##Leder'


Der Split-Befehl müsste an der Stelle ja dann funktionieren, schreibt allerdings die Inhalte nur in die 1. Spalte der Tabelle.
Daher müsste man sich wohl etwas anders behelfen:
Code: Alles auswählen
DATA: t_text  LIKE TABLE OF lv_text,
      index   TYPE sy-index.
SPLIT lv_text AT '##' INTO TABLE t_text.

LOOP AT t_text ASSIGNING <text>.
  ADD 1 TO index.

  IF ( index MOD 2 ) <> 0.
    ls_carac-f1 = <text>.
  ELSE.
    ls_carac-f2 = <text>.
    APPEND ls_carac TO lt_carac.
  ENDIF.
ENDLOOP.
 
abuma
ForumUser
 
Beiträge: 43
Registriert: 17.08.2016, 11:14
Dank erhalten: 5 mal
Ich bin: Entwickler/in

Re: Interne Tabelle befüllen

Beitragvon Unit605 » 16.02.2017, 14:23

Weil im SAP 'nicht druckbare Zeichen" ALLE als # angezeigt werden. Egal ob es ein CR, or LF oder TAB oder BEEP oder oder oder ist...

Du MUSST es Dir im HEX anzeigen lassen. Wenn DU dann ein OD oder 0A oder 07 oder 0B... siehst, dann wird es im SAP als # in der Textanzeige angezeigt.

Wenn jemand im ABAP '#' schreibt, dann ist es auch das Zeichen '#'. Das passt aber dann beim Split nicht mit den Zeichen ueberein.
Unit605
Expert
 
Beiträge: 968
Registriert: 05.02.2009, 21:29
Wohnort: Port Charlotte, FL, USA
Dank erhalten: 91 mal
Ich bin: Freiberufler/in

Re: Interne Tabelle befüllen

Beitragvon ewx » 16.02.2017, 14:27

abuma hat geschrieben:Huhu zusammen,

warum sollte # ein anderes Zeichen sein?

Es wird doch "hart" in die Variable geschrieben oder versteh ich das falsch?
Code: Alles auswählen
lv_text = 'Haus##Stein##Ball##Leder'

Ja. Das sieht mir aber sehr nach Vereinfachung und Test aus.
So nach dem Motto: Ich kopiere mir mal den zu bearbeitenden Text heraus und gucke, wie der Split funktioniert.
ewx
Top Expert
 
Beiträge: 3344
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 194 mal

Re: Interne Tabelle befüllen

Beitragvon abuma » 16.02.2017, 14:34

hmm, ja hast recht :D
Allerdings wird ja nur das erste Wort nicht richtig übernommen und bei den anderen passt es.
Aber dann bringt wohl nur der Debugger Licht ins Dunkel.

Liebe Grüße
abuma
abuma
ForumUser
 
Beiträge: 43
Registriert: 17.08.2016, 11:14
Dank erhalten: 5 mal
Ich bin: Entwickler/in

Re: Interne Tabelle befüllen

Beitragvon Tanega » 16.02.2017, 14:53

So vielen Dank,

erste Zeile funktioniert jetzt auch auch!

Code: Alles auswählen
DATA: t_text  LIKE TABLE OF lv_text,
      index   TYPE sy-index.
SPLIT lv_text AT '##' INTO TABLE t_text.

LOOP AT t_text ASSIGNING <text>.
  ADD 1 TO index.

  IF ( index MOD 2 ) <> 0.
    ls_carac-f1 = <text>.
  ELSE.
    ls_carac-f2 = <text>.
    APPEND ls_carac TO lt_carac.
  ENDIF.


Das verstehe ich auch soweit, bis auf das <text> was ist das? Der meckert bei mir immer das er das nicht kennt
Tanega
ForumUser
 
Beiträge: 12
Registriert: 25.01.2017, 07:30
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Interne Tabelle befüllen

Beitragvon abuma » 16.02.2017, 15:10

<text> ist ein Feldsymbol, dass ich bei meinem Coding definiert hatte.

Code: Alles auswählen
FIELD-SYMBOLS: <text> LIKE LINE OF t_text.
 


Liebe Grüße
abuma
abuma
ForumUser
 
Beiträge: 43
Registriert: 17.08.2016, 11:14
Dank erhalten: 5 mal
Ich bin: Entwickler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
ME22N und das Positionslöschen
vor 5 Minuten von MrBojangles 2 Antw.
gelöst Klasse existiert bereits und dann doch nicht
vor 4 Stunden von a-dead-trousers 4 Antw.
AFRU und Buchungen der ILV
vor 8 Stunden von BerndSchweiger 0 Antw.
SapScript Formulare werden in der falschen Sprache ausgegebe
vor einer Stunde von wreichelt 3 Antw.
Falsches Medium bei Lieferplaneinteilung
Gestern von Mischi83 0 Antw.

  Ähnliche Beiträge beta
Interne Tabelle befüllen
26.10.2015, 15:04 von DHE 2 Antw.
DB Tabelle befüllen
07.12.2006, 23:10 von bohne 3 Antw.
Befüllen einer Tabelle
22.05.2006, 11:06 von M. Lahr 9 Antw.
alv grid interne tabelle mit transparenter tabelle abgleiche
07.05.2008, 07:30 von hadde85 10 Antw.
Daten aus DB-Tabelle in interne Tabelle kopieren
07.02.2008, 12:38 von TWP 1 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!