Zeichen mischen ;)

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

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Zeichen mischen ;)

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Moin moin,

gegeben seien drei CHAR-Felder der Länge 10, nennen wir sie A, B und C. A und B sind gefüllt, C nicht.

C soll nun alle Zeichen enthalten, die in A und B vorkommen.

Beispiele:

A = 123, B = 234 => C = 23
A = 123, B = 567 => C leer

Im Grunde weiß ich, wie das geht, ich suche eine ELEGANTERE Möglichkeit als DO...VARYING..., zumal das obsolet ist.


Gruß und danke


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Zeichen mischen ;)

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) »
wahrscheinlich auch keine gute Lösung aber wollte auch mal nen Lösungsvorschlag bringen.

Code: Alles auswählen.

DATA: A(10) TYPE C VALUE 'ABC',
      B(10) TYPE C VALUE 'BD',
      C(10) TYPE C.

DATA: LENGHT TYPE I.

LENGHT = strlen( A ).

DO LENGHT TIMES.

  FIND FIRST OCCURRENCE OF A(1) in B.
  IF SY-SUBRC = 0.
    CONCATENATE C A(1) INTO C.
  endif.

  SHIFT A.

enddo.
Grüße Adrian

Re: Zeichen mischen ;)

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
ralf.wenzel hat geschrieben:
Im Grunde weiß ich, wie das geht, ich suche eine ELEGANTERE Möglichkeit als DO...VARYING..., zumal das obsolet ist.
mit ASSIGN ... increment.

Re: Zeichen mischen ;)

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Jo, aber da muss ich trotzdem durch alle Zeichen "hoppeln". Ich suche eigentlich sowas in der Art wie die Lösung aus "A ca B" - aber eben nicht mit Ja/nein als Antwort, sondern der Lösungsmenge ;)

Geht da vllt. was mit REGEX?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeichen mischen ;)

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Hallo Ralf,

solange in A jedes Zeichen nur 1x vorkommt oder Duplikate auch doppelt im Ergebnis vorkommen dürfen und in B nur "normale" Zeichen ( Buchstaben, Zahlen, keine Sonderzeichen ) vorkommen geht das.
Aber sobald eine der Bedingungen verletzt ist wird das so unschön, dass "hoppeln" besser daherkommt.

Aber wenn halt all das gilt ( z.B. bei Pflegestatusvergleich Materialien ) wäre folgendes machbar

Code: Alles auswählen.

c = a.
CONCATENATE '[^' b ']' INTO lv_regex.  " Hmm - das sollen eckige Klammern sein - die bei 8 und 9 stehen 
REPLACE ALL OCCURRENCES OF REGEX lv_regex IN c WITH ``.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
ralf.wenzel

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zeichen mischen ;)

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
black_adept hat geschrieben:solange in A jedes Zeichen nur 1x vorkommt (...) und in B nur "normale" Zeichen (...) vorkommen geht das.
Beide Bedingungen sind gegeben ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zeichen mischen ;)

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
kannst auch mal mit dem abap report: DEMO_REGEX_TOY rumspielen.

vielleicht kommst du mit dem auf die Lösung .
<:: XING-Gruppe Tricktresor::>

Re: Zeichen mischen ;)

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Hmm - habe noch eine kryptischere Lösung ohne Hilfsvariable bei der dann auch Sonderzeichen vorkommen dürfen, solange es ein Zeichen gibt welches keine REGEX-Bedeutung hat und welches auch nicht in den Strings vorkommen kann.

Code: Alles auswählen.

CONCATENATE a b INTO c SEPARATED BY '~'.                          "  C lang genug dafür wählen.  Ich nehme einen String
REPLACE ALL OCCURRENCES OF REGEX '(.)(?!.*~.*\1)' IN c WITH ``.   "  Alles was nicht in B ist entfernen
REPLACE ALL OCCURRENCES OF REGEX '(.)(?=.*\1+)'   IN c WITH ``.   "  Duplikate in Ergebnis entfernen
Den 2. Schritt kannst du in deinem Fall ja eh weglassen, da von vornherein keine Duplikate in A sind.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
ralf.wenzel

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zeichen mischen ;)

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Hallo Stefan,

Habe mir dir regulären Ausdrücke mit RegExCoach einmal Step für Step angesehen.
Geniale Lösung und großes Kompliment von mir. :up: :up: :up:

Seite 1 von 1

Vergleichbare Themen

3
Antw.
4859
Views
Zeitscheiben miteinander mischen
von kbit100 » 31.03.2011 10:39 • Verfasst in ABAP® für Anfänger
2
Antw.
1705
Views
2 Spoolaufträge mischen und Barcode dazu
von hegsi » 20.10.2007 18:29 • Verfasst in ABAP® Core
5
Antw.
2242
Views
Möglichkeit Zeilen einer Tabelle zu mischen
von yanso » 09.03.2016 11:23 • Verfasst in ABAP® für Anfänger
4
Antw.
2121
Views
Zeichen
von barbara » 29.03.2006 15:54 • Verfasst in ABAP® für Anfänger
3
Antw.
2120
Views
Datentransfer mit | Zeichen
von c0lt.seavers » 30.11.2007 08:40 • Verfasst in ABAP® Core

Ü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
vor 2 Tagen von Bright4.5 1 / 744
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2368
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8954