nach zeichen zeichenketten suchen

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

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
24 Beiträge • Seite 1 von 2 (current) Nächste
24 Beiträge Seite 1 von 2 (current) Nächste

nach zeichen zeichenketten suchen

Beitrag von Gast ( / / 0 / 3 ) »

Code: Alles auswählen.

ULINE.
LOOP AT Tabelle2 INTO wa_Tabelle.
FIND SUCHE IN wa_Tabelle IGNORING CASE.
IF sy-subrc EQ 0.
ADD 1 TO CountSU.
ENDIF.
ENDLOOP.
Write: / 'Das Suchkriterium kommt' , CountSU , 'x vor.'.

ich gebe in das feld SUCHE ein zeichen bsp. e ein und es soll in allen wörtern nach dem buchstaben gesucht werden.
nun obige methode findet in einem satz bsp:
"ich bin eine datei"
nur 2 e's wenn ich nach e suche. woran liegt das?
was falsch sein sollte konnte ich dem debugger nciht entnehmen.

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


Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
Hallo,

kann dein Bsp nicht ausprobieren, weil mein SAp kein 'FIND' kennt. (oder noch nicht kennt).

würde aber sagen: sy-subrc sagt nur aus, ob die Suche erfolgreich war. Es wird warscheinlich noch eine sy- Variable geben, die die Anzahl ausgibt.
(ZB. bei 'SEARCH' steht in SY-FDPOS die Position)

warscheinlich hast du in deiner int. tabelle zwei Datensätze, die ein oder mehr 'e' enthalten. (deswegen 2)

Beitrag von Blueshape (Specialist / 346 / 0 / 0 ) »
Hallo,

wenn Du 2 Sätze in deine Tabelle hast, in denen
ein 'e' vorkommt, ist das Ergebnis '2' korrekt, da Du nur zählst, wenn überhaupt ein 'e' in einem Satz gefunden wird. Dabei scheint es keine Rolle zu spielen, wieviele 'e' Du gefunden hast. Du zählst ja nicht die Anzahl 'e', sondern die Anzahl gefundener Sätze mit Inhalt 'e' in der Tabelle.

Viele Grüße,
Blueshape
Ich bin für alles offen, solange es anderen nicht ernsthaft schadet.

Beitrag von Gast ( / / 0 / 3 ) »
nun ich kann auch SEARCH verwenden.
also:
SEARCH wa_Tabelle for SUCHE.
IF sy-fdpos = 1
....


aber das klappt auch nicht.

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
Wie ist denn deine Tabelle aufgebaut und wie sind die Zeilen gefüllt?
Ansonsten: siehe Antwort von Blueshape, wenn zwei Zeilen und jede mindestens ein e enthält, bekommst du folgerichtig eine 2 als Resultat.

Wenn du hingegen wissen willst, wieviel 'e' im Feld FELD vorkommen, musst du einen loop über das feld machen, so ungefähr zum Beispiel:

Code: Alles auswählen.

DESCRIBE FELD LENGTH LAENGE.
POSITION = 0.
WHILE POSITION < LAENGE.
  IF FELD+POSITION(1) CO 'eE'.
    ANZAHL = ANZAHL + 1.
  ENDIF.
  POSITION = POSITION + 1.
ENDWHILE.

Beitrag von Gast ( / / 0 / 3 ) »
ich lese eine textdatei in eine tabelle. die anzahl der zeilen kann also variieren.

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
... und willst wissen, wieviel 'E' bzw. 'e' im gesamten Text vorkommen?
Dann musst Du über die Tabelle loopen und über jeden Eintrag wie oben beschrieben gehen und dafür die Fundstellen zählen...

Also einfach um das oben skizzierte Coding noch den LOOP setzen und direkt vor ENDLOOP die ermittelte Anzahl der aktuellen Zeile auf die Gesamtanzahl addieren.
Viel Spass.[/code]

Beitrag von Gast ( / / 0 / 3 ) »
hm ich bin noch ein anfänger in abap.

wie genau ich das jetzt mache weiß ich nicht.

wenn ich den ausschnitt einfüge und auf fehler untersuchen lasse, dann kommt die meldung:

statt feld wurde field erwartet.
wenn ich aus feld field mache, dann kommt die meldung:
statt länge wurde length erwartet. also lass ich länge weg...

es kommen die ganze zeit fehlermeldungen.


das feld in welches ich den suchbegriff eingebe heißt SUCHE.
und des weiteren möchte ich nicht immer nach e oder E suchen, sondern nach dem was ich in das feld suche eingebe. kann also alles mögliche sein.

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
Ups, habe beim Describe geschludert,
müsste heissen

Code: Alles auswählen.

DESCRIBE FIELD feld LENGTH laenge.
wobei "feld" das zu untersuchende Feld ist und "laenge" die Längeninformation aufnimmt. (PF1 auf DESCRIBE im Abap-Editor...)
(Ist aber auch nicht unbedingt notwendig, wenn die Zeilen eh immer in Feldern gleicher Länge stehen, dann weisst Du ja die Länge schon.)

Willst Du eigentlich immer nach einzelnen Zeichen oder auch nach Zeichenketten suchen?

Beitrag von Gast ( / / 0 / 3 ) »
nach beidem.

muss ich laenge noch deklarieren? wenn ja wie? und position?

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
Deklaration ja, beispielsweise:

Code: Alles auswählen.

DATA: LAENGE TYPE I.
DATA: POSITION TYPE I.
Noch ein kurzer Hinweis zum SEARCH:
Wenn Du Search benutzt bekommst Du die Position der Fundstelle im Feld SY-FDPOS zurück.
Wenn Du auf genau die entsprechende Stelle per Offset zugreifen willst, musst Du beim Offset aber einen abziehen. Beispiel:

Code: Alles auswählen.

 DATA: OFFSET LIKE SY-FDPOS.
 DATA: TEXTFELD(5) TYPE c.
 DATA: ZEICHEN(1) TYPE c.

 TEXTFELD = 'ABCDB'.

 SEARCH TEXTFELD FOR 'B'.
* jetzt ist SY-FDPOS = 2
 IF SY-SUBRC = 0.
   OFFSET = SY-FDPOS - 1. 
   ZEICHEN = TEXTFELD+OFFSET(1).
* jetzt ist ZEICHEN = 'B'
   ELSE.
     WRITE:/ 'nicht gefunden'.
 ENDIF.
 
Du kannst beim Search auch angeben, ab wo die Suche gestartet werden soll, damit kannst Du dann in einer Schleife nach und nach alle Vorkommen eines Suchstrings feststellen; s. F1-Hilfe.
Gruß, Frank

Beitrag von Gast ( / / 0 / 3 ) »
hi

ich möchte nicht einen bestimmten text mitgeben, bzw. einen buchstaben den er suchen soll.

es soll in einer workarea nach den zeichen gesucht werden, die ich auf der gui in ein textfeld eingebe.

Beitrag von ein Gast ( / / 0 / 3 ) »
parameters: p_such(20) type c.
search wa_text for p_such.

Beitrag von Gast ( / / 0 / 3 ) »
ich hab schon so einiges asuprobiert.

Suche ist ein Parameter typ c. und countsu ist data typ i.

Code: Alles auswählen.

LOOP.
SEARCH wa_Tabelle2 FOR Suche.
CountSU , 'x vor.'.
IF sy-subrc EQ 0.
ADD 1 TO CountSU.
ENDIF.
ENDLOOP.
Write: / 'Das Suchkriterium kommt' , CountSU , 'x vor.'.

geht z.B. nicht.

Beitrag von ein Gast ( / / 0 / 3 ) »
Was genau geht denn nicht, bzw. was genau kommt denn bei raus?
Und was soll die Zeile "CountSU , 'x vor.'. " bewirken?
Und worüber geht der Loop?

Vergleichbare Themen

2
Antw.
13804
Views
Zeichen in eine String suchen
von Handeglo » 18.08.2008 19:50 • Verfasst in ABAP® für Anfänger
3
Antw.
5435
Views
Suchen ein bestimmtes Zeichen in einer String
von lisa » 10.09.2008 00:16 • Verfasst in ABAP® für Anfänger
2
Antw.
362
Views
Zeichenketten verschieben
von mk_02 » 27.03.2022 15:20 • Verfasst in ABAP® für Anfänger
4
Antw.
17244
Views
Zeichenketten verknüpfen
von Preacha » 06.08.2008 13:54 • Verfasst in ABAP® für Anfänger
2
Antw.
2710
Views
Dynamisch Zeichenketten zusammensetzen
von Dudu » 08.07.2005 13:25 • 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.