String in Operator?


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

Moderatoren: Jan, Steff

String in Operator?

Beitragvon Murdock » 20.08.2012, 15:50

Hi,

wenn nicht hier, wo könnte ich diese frage sonst stellen :D

Gibt es im ABAP einen in Operator, der auf eine Zeichenkettenmenge überprüft?

Also, anstatt
Code: Alles auswählen
IF lv_feld1 = 'Test1' OR lv_feld1 = 'Test2'.
 ...
ENDIF.
 


Soetwas wie:
Code: Alles auswählen
IF lv_feld1 IN ('Test1','Test2').
 ...
ENDIF.
 


Danke,
Murdock.
Murdock
ForumUser
 
Beiträge: 56
Registriert: 05.03.2012, 11:29
Dank erhalten: 1 mal
Ich bin: Entwickler/in

Sponsor

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

Re: String in Operator?

Beitragvon black_adept » 20.08.2012, 16:13

"CASE" statt "IF" - das kommt dem sehr nahe.
Code: Alles auswählen
CASE lv_feld1.
  WHEN 'Test1'
    OR 'Test2'.
  ...
ENDCASE.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Für diese Nachricht hat black_adept einen Dank bekommen :
Murdock
black_adept
Top Expert
 
Beiträge: 1974
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 198 mal
Ich bin: Freiberufler/in

Re: String in Operator?

Beitragvon a-dead-trousers » 21.08.2012, 06:45

hi!

black_adept hat geschrieben:"CASE" statt "IF" - das kommt dem sehr nahe.

Mach ich meistens auch immer so.

Wenn es aber etwas komplizierter wird (z.B. mit Wildcards usw.) braucht man entweder einen Range oder RegEx.
Code: Alles auswählen
data: lr_string type range of string.
field-symbols: <lr_string> like line of lr_string.

* Beliebige Patterns füllen
append initial line to lr_string assigning <lr_string>.
<lr_string>-sign = 'I'.
<lr_string>-option = 'CP'.
<lr_string>-low = 'Test*'.
...

if lv_field1 in lr_string.
...
endif.
 

Code: Alles auswählen
find regex 'Test&#91;12&#93;' in lv_field1.
if sy-subrc eq 0.
...
endif.

lg ADT

EDIT: Die RegEx lautet richtigerweise 'Test[12]'
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.05
Basis: 7.02

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Murdock
a-dead-trousers
Top Expert
 
Beiträge: 1737
Registriert: 07.02.2011, 13:40
Dank erhalten: 347 mal
Ich bin: Entwickler/in

Re: String in Operator?

Beitragvon Murdock » 21.08.2012, 07:14

Danke für die Antworten.

Dass es mit CASE oder gar einer RANGE Tabelle geht ist klar.

Bei meinem Beispiel ginge ja auch
Code: Alles auswählen
IF lv_feld1 CP 'Test*'.

ENDIF.
 

(ja das trifft mehr als nur Test1 und Test2)
(wobei ich mal anmerken muss, dass ich die Operatoren wie CP, CS, CA, ... von der Sache her ziemlich gut finde :up: )

Ich nehme also mit:
1. es gibt keinen "in" Operator wie ich ihn gesucht habe
2. ich bin nicht zu blöd zum Lesen der ABAP Hilfe :D

Gruß,
Murdock.

Edit sagt, man macht nur 'ne Klammer zu, wenn man sie auch aufgemacht hat...
Murdock
ForumUser
 
Beiträge: 56
Registriert: 05.03.2012, 11:29
Dank erhalten: 1 mal
Ich bin: Entwickler/in

Re: String in Operator?

Beitragvon Alexander D. » 21.08.2012, 07:27

frei nach http://www.tricktresor.de/content/index ... 46&aID=241
könnte sowas vielleicht auch funktionieren?

Code: Alles auswählen
IF 'Test1/Test2' CS lv_feld1.
schöne Grüße
Alexander

Für diese Nachricht hat Alexander D. einen Dank bekommen :
Murdock
Alexander D.
Expert
 
Beiträge: 648
Registriert: 17.02.2006, 11:28
Wohnort: Bockenem
Dank erhalten: 79 mal
Ich bin: Entwickler/in

Re: String in Operator?

Beitragvon a-dead-trousers » 21.08.2012, 07:42

ja!

Aber wie schon auf der Seite erwähnt hat das Konstrukt einige Nachteile.
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.05
Basis: 7.02
a-dead-trousers
Top Expert
 
Beiträge: 1737
Registriert: 07.02.2011, 13:40
Dank erhalten: 347 mal
Ich bin: Entwickler/in

Re: String in Operator?

Beitragvon Murdock » 21.08.2012, 07:43

Alexander D. hat geschrieben:
Code: Alles auswählen
IF 'Test1/Test2' CS lv_feld1.


Auch schön, danke. :D

Gruß,
Murdock.
Murdock
ForumUser
 
Beiträge: 56
Registriert: 05.03.2012, 11:29
Dank erhalten: 1 mal
Ich bin: Entwickler/in


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

  Aktuelle Beiträge   
SplitterContainer ein/ausblenden
vor 5 Stunden von a-dead-trousers 1 Antw.
Download ITAB mit tiefer Struktur aus Debugger heraus
vor 6 Stunden von a-dead-trousers 1 Antw.
gelöst Typ dynamisch aus String zuweisen
vor 15 Stunden von Talvien 2 Antw.
gelöst SpoolID ermitteln und weiter nutzen
vor 15 Stunden von dyv 5 Antw.
Verwendung von MIME Audiodateien
vor 13 Stunden von jensschladitz 1 Antw.

  Ähnliche Beiträge beta
operator
06.05.2008, 08:17 von JHM 2 Antw.
zeilenumbruch im string
26.04.2013, 11:58 von Katsche 4 Antw.
XML-File per URL in string
03.10.2007, 16:28 von kobi 0 Antw.
..als String aufbereiten
28.05.2008, 13:24 von supermario73 5 Antw.
String bearbeiten
23.04.2010, 10:57 von TWP 5 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!
cron