Zeichenkette suchen in C-Feld

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

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

Zeichenkette suchen in C-Feld

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

ich habe folgendes Problem, wo ich bislang mit meinen Ansätzen gescheitert bin :(

Ich möchte bei einem Textfeld (c) abfragen, ob diesen mit den Zahlen 190 beginnen. Das Feld ist 9 Zeichen lang. In der Regel sind auch nur Zahlen enthalten, es kommt jedoch vor, dass der Inhalt auch z.B. mit 1XX beginnt, daher ist eine Abfrage mit > bzw. >= nicht möglich.

Meine bisherigen Versuche sehen wie folgt aus:

Code: Alles auswählen.

IF feld CP '190*'.
IF feld CS '190*'.
auch

Code: Alles auswählen.

IF feld CP '#190*'.
habe ich bereits versucht - leider ohne Erfolg.

Bei weiteren Tests mit folgenden Code

Code: Alles auswählen.

IF feld CP '1*'.
ist mir aufgefallen, dass in den Fällen, wo tatsächlich ein Zeichen/Buchstabe (1X..) folgt, die Bedingung erfüllt ist.
Kann man daraus schließen, dass Zahlen in einem Textfeld nicht als Zeichen bzw. Zeichenkette interpretiert werden?

Über jeden Tipp/Hinweis würde ich mich sehr freuen!

Vielen Dank bereits im Voraus!

Viele Grüße

Manuel

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


Re: Zeichenkette suchen in C-Feld

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

Der Ausdruck

Code: Alles auswählen.

If feld CS '190'.
Sollte deine Anforderung genau erfüllen. CS = contains string, das heißt es wird geschaut, ob genau diese zeichenkette im angegebenen Feld enthalten ist. Natürlich kann die 190 bei nur Zahlen auch nochmal vorkommen. Um dies abzufangen könntest du sinnigerweise mit einem Offset arbeiten:

Code: Alles auswählen.

IF feld+0(3) CS '190'.
Dies fragt ab ob das Feld an der Stelle 0 und der Länge 3 die angegebene Zeichenkette enthält.
(Wobei das CS dann auch durch ein EQ ersetzt werden könnte, wenn du nur Felder auslesen willst, die mit 190 beginnen.)

Ich hoffe das hilft dir weiter.
Gruß,
der Matze

Re: Zeichenkette suchen in C-Feld

Beitrag von Murdock (Specialist / 123 / 58 / 10 ) »
Da war Thanatos ein wenig schneller...

Wobei ich dann das ganze ohne Offset und gleich mit "=" machen würde, "CS" ist hier mit Kanonen auf Spatzen geschossen, denke ich:

Code: Alles auswählen.

IF c1(3) = '190'.
  WRITE 'OK'.
ELSE.
  WRITE 'Nicht OK'.
ENDIF.
Gruß,
Murdock.

Folgende Benutzer bedankten sich beim Autor Murdock für den Beitrag:
m4nu


Re: Zeichenkette suchen in C-Feld

Beitrag von m4nu (ForumUser / 15 / 3 / 0 ) »
Vielen Dank für die raschen Antworten!

Ich habe es eben getestet - leider weiterhin ohne Erfolg. :( Die Bedingung wird nicht erfüllt.
Ich war eigentlich sehr zuversichtlich mit den beiden Ansätzen...

Evt. noch ein paar Detail Informationen, wo möglicherweise die Ursache sind:

Bei dem Feld handelt es sich um die Materialnummer (VBRP-MATNR) und ich hab grad nochmals nachgesehen, es besitzt die Länge 16 (was ja von der vorgehensweise kein Unterschied machen sollte). Hier im Haus sind die Materialien lediglich 9-stellig.
Das Coding erfolgt in einem Zusatzfeld im Infoset einer SAP Query.

Dennoch vielen Dank für Eure Hinweise!

Re: Zeichenkette suchen in C-Feld

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

das macht sehr wohl einen Unterschied in der Vorgehensweise. das Feld matnr wird, wenn auch nicht angezeigt sogar mit 18 Stellen geführt (woher hast du 16?).
Die "leeren" Stellen sind einfach nicht angezeigte führende Nullen.
Daher denke ich, dass meine Idee mit dem Offset doch die bessere Variante sein könnte. Versuch mal den Offset auf feld+9(3) umzusetzen.
Zuletzt geändert von Thanatos82 am 12.09.2013 14:26, insgesamt 1-mal geändert.
Gruß,
der Matze

Re: Zeichenkette suchen in C-Feld

Beitrag von m4nu (ForumUser / 15 / 3 / 0 ) »
ich habe mir es nun mal im Debugger angesehen, die Materialnummer wird mit führenden Nullen aufgefüllt. Daher funktioniert es nicht...

Sorry - hätte ich zuvor mal auf die Idee kommen sollen. Bin von dem Gegenteil ausgegangen, dass die Nullen hinter angehängt werden.

Aber mit Euren Hinweise denke ich bekomme ich es jetzt hin, muss ja nur die entsprechenden Stellen verschieben.

Oder gibt es eine Möglichkeit, führenden Nullen zu entfernen? Muss wahrscheinlich zeichenweise das Feld einlesen/verarbeiten?!


Vielen Dank nochmal!

Re: Zeichenkette suchen in C-Feld

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

dafür gibt es den Befehl SHIFT ... LEFT DELETING LEADING 0. Wie empfehlenswert das für die weitere Verarbeitung ist, wage ich zu bezweifeln.

Folgende Benutzer bedankten sich beim Autor Thanatos82 für den Beitrag:
m4nu

Gruß,
der Matze

Re: Zeichenkette suchen in C-Feld

Beitrag von m4nu (ForumUser / 15 / 3 / 0 ) »
Thanatos82 hat geschrieben:Hallo manu,

das macht sehr wohl einen Unterschied in der Vorgehensweise. das Feld matnr wird, wenn auch nicht angezeigt trotzdem mit 16 Stellen geführt. Die "leeren" Stellen sind einfach nicht angezeigte führende Nullen.
Daher denke ich, dass meine Idee mit dem Offset doch die bessere Variante sein könnte. Versuch mal den Offset auf feld+7(3) umzusetzen.
hätte ich wohl am besten gleich eingehend schreiben sollen, oder mir mal direkt im Debugger ansehen - Sorry wohl ein Anfängerfehler...

Besten Dank Thanatos!

Re: Zeichenkette suchen in C-Feld

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Solche Fehler haben wir anfangs alle mal gemacht! Aber wie heißt es so schön: Aus Fehlern lernt man! ;)
Gruß,
der Matze

Re: Zeichenkette suchen in C-Feld

Beitrag von m4nu (ForumUser / 15 / 3 / 0 ) »
Thanatos82 hat geschrieben:Aus Fehlern lernt man! ;)
Definitiv :!:

Mit dem Offset +9 klappt es schon einmal! :up:

Und danke für den Hinweis bzgl. SHIFT... LEFT DELETING LEADING 0, werde ich gleich mal testen!

Besten Dank nochmal!

Re: Zeichenkette suchen in C-Feld

Beitrag von Murdock (Specialist / 123 / 58 / 10 ) »
Noch ein Hinweis: Für die Matnr gibt es sogenannte Conversion Exits, die die Materialnummer umwandeln (führende Nullen dran oder weg). Das sind einfach Funktionsbausteine die Du aufrufst und die Dir die Matnr im richtigen Format zurückgeben:

CONVERSION_EXIT_MATN1_INPUT Funktionsbaustein für Materialnummerkonvertierung (INPUT)
CONVERSION_EXIT_MATN1_OUTPUT Funktionsbaustein zur Materialnummerkonvertierung (OUTPUT)

Die hängen auch an der Domäne der Matnr, deshalb passiert das immer automatisch im Hintergrund (bei der Anzeige der Matnr siehst du ja keine führenden Nullen...)

Gruß,
Murdock.

Re: Zeichenkette suchen in C-Feld

Beitrag von m4nu (ForumUser / 15 / 3 / 0 ) »
Danke für den Hinweis!

Werde ich mal testen...

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2555
Views
Zeichen in Zeichenkette einfügen
von kaim77 » 06.06.2012 10:32 • Verfasst in ABAP® für Anfänger
3
Antw.
2665
Views
Wie Zeichenkette bei Buchstaben trennen?
von samson » 29.01.2008 13:33 • Verfasst in ABAP® für Anfänger
2
Antw.
1649
Views
Zeichenkette verkürzen / mit * ersetzen
von jokabi » 10.02.2015 10:44 • Verfasst in ABAP® für Anfänger
4
Antw.
20622
Views
Abschneiden einer Zeichenkette
von Katta » 09.08.2007 11:23 • Verfasst in ABAP® für Anfänger
7
Antw.
6521
Views
Zeichenkette mit geschützten Leerzeichen
von Irie » 17.11.2005 16:56 • 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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 515
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2149
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8744