Trennen Strasse und Hausnummer

Getting started ... Alles für einen gelungenen Start.
21 Beiträge • Seite 1 von 2 (current) Nächste
21 Beiträge Seite 1 von 2 (current) Nächste

Trennen Strasse und Hausnummer

Beitrag von x-lady (ForumUser / 5 / 0 / 0 ) »
Hallo ABAP-Gemeinde,
ich habe ein Problem bzgl. Trennung eines Feldes in Strasse und Hausnummer:
Mit dem folgenden Coding klappt es z.B. Hauptstrasse 2 oder Hausstrasse 2A etc.

if strasse ca '0123456789' and sy-fdpos > 0.
w_strasse = strasse+0(sy-fdpos).
w_hausnummer = strasse+sy-fdpos.
endif.

Jetzt habe ich aber folgendes Problem: Es kommt eine Strasse mit dem Namen "Strasse des 18 Oktober 5"

Jetzt bekomme ich in den Feld w_strasse "Strasse des" und im Feld w_hausnummer "18 Oktober 5".
Hat jemand eine Idee ?

LG und vielen Dank für die Unterstützung

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


Re: Trennen Strasse und Hausnummer

Beitrag von inab (ForumUser / 69 / 0 / 6 ) »
HAllo x-lady,

woher ziehst Du die Adresse ???

Es gibt doch in der ADRC imerhin ein Feld für die Strasse und eines Für die Hausnummer, sind die Daten korrekt gepflegt gibts kein Problem !

Re: Trennen Strasse und Hausnummer

Beitrag von x-lady (ForumUser / 5 / 0 / 0 ) »
Hallo,

es handelt sich um eine Eigenentwicklung. Ich bekomme Adressen geliefert und zwar die Strasse und Hausnummer in einem Feld.
Für eine weitere Bearbeitung muss ich die Felder trennen.

Re: Trennen Strasse und Hausnummer

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Keine Logik wird perfekt sein - ich hab das mal im Rahmen einer Migration programmiert (ist auch schon wieder fast zehn Jahre her) und es gibt Fälle, die man nicht greifen kann. Dann sollte man sie aber wenigstens aussortieren (Fehlerfile), damit jemand gezielt händisch drübergucken kann.

In deinem Falle sind Buchstaben zwischen Ziffern, was ein deutlicher Hinweis darauf ist, dass da was nicht stimmt.


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

Re: Trennen Strasse und Hausnummer

Beitrag von x-lady (ForumUser / 5 / 0 / 0 ) »
Die Ziffern stimmen.

Die Strasse heißt: Strasse des 18 Oktober
und die Hausnummer ist 5.

Wie bekomme ist sowas getrennt ?

Re: Trennen Strasse und Hausnummer

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Lies mein Posting bitte nochmal in Ruhe, da steht die Antwort auf deine Frage drin.


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

Re: Trennen Strasse und Hausnummer

Beitrag von Azreal (Specialist / 182 / 1 / 0 ) »
Hallo,
kann Ralf zustimmen - wir hatten das gleiche Problem, wobei unsere erste Hürde die Hausnummer mit Buchstabe war.
Wenn ich mir dein Beispiel so anschaue könnte doch eine Lösung sein das Feld rückwärts zu parsen, wenn das Hausnummernergebnis ein gewisse länge überschritten hat. Vermute aber nicht, daß dies auch allen usecases standhalten wird.

Viele Grüße,
Aze

Re: Trennen Strasse und Hausnummer

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Es wird hier sicherlich jemanden geben, der einen schönen RegEx-Ausdruck "programmieren" kann, bei dem die letzten zusammenhängenden Zahlen eines Strings ausgegeben werden...

Re: Trennen Strasse und Hausnummer

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Naja - "programmieren" ist ja wohl ein wenig hoch gegriffen, zumal es sich hier um einen relativ simplen Fall handelt.

Feld test: Zu splittende Adresse
Feld off: Offset der Hausnummer

Code: Alles auswählen.

  FIND REGEX '\d+\D*$' IN test MATCH OFFSET off.
Falls also eine Hausnummer gefunden wurde gilt:
--> test(offset) = Straße
test+offset = Hausnummer

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
isp

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Trennen Strasse und Hausnummer

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Lusitg, dass man die gleichen Sachen manchmal zur gleichen Zeit benötigt... :-D
Deswegen habe ich mal black_adepts Ausdruck erweitert:

Code: Alles auswählen.

FIND ALL OCCURRENCES OF REGEX '[\d\-\s]*([a-z\-\sA-Z])*$' IN l_string MATCH OFFSET l_off.
findet:

Code: Alles auswählen.

Hansstr.345
Josef Müller Schmid Str. 17a
Franz-Josef-Strauß-Str. 25 C
Straße des 17. Juni 55-56
Straße des 17. Juni 55 - 56
Straße des 17. Juni 55-56a-f
Straße des 17. Juni 55-56 a-f
Straße des 17. Juni 55 - 56 a-f
Straße des 17. Juni 55 -56 a-f
Straße des 17. Juni 55- 56 a -f
Was der RegEx nicht findet, ist

Code: Alles auswählen.

Josefstraße  A123 4
Birkenstraße12 (bei Frisör Müllermeierschulz)
Aber ansonsten schon mal ziemlich gut... :-]
Man muss allerdings einen STRING verwenden, ansonsten funktioniert der $-Ausdruck nicht (Ende einer Zeile/ String).
Getestet mit DEMO_REGEX_TOY :up:

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
isp


Re: Trennen Strasse und Hausnummer

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
Gibts evtl. inzwischen eine FuBa oder Klasse, die Adresse auf die Gültigkeit prüft?


ewx hat geschrieben:Lusitg, dass man die gleichen Sachen manchmal zur gleichen Zeit benötigt... :-D
Deswegen habe ich mal black_adepts Ausdruck erweitert:

Code: Alles auswählen.

FIND ALL OCCURRENCES OF REGEX '[\d\-\s]*([a-z\-\sA-Z])*$' IN l_string MATCH OFFSET l_off.
findet:

Code: Alles auswählen.

Hansstr.345
Josef Müller Schmid Str. 17a
Franz-Josef-Strauß-Str. 25 C
Straße des 17. Juni 55-56
Straße des 17. Juni 55 - 56
Straße des 17. Juni 55-56a-f
Straße des 17. Juni 55-56 a-f
Straße des 17. Juni 55 - 56 a-f
Straße des 17. Juni 55 -56 a-f
Straße des 17. Juni 55- 56 a -f
Was der RegEx nicht findet, ist

Code: Alles auswählen.

Josefstraße  A123 4
Birkenstraße12 (bei Frisör Müllermeierschulz)
Aber ansonsten schon mal ziemlich gut... :-]
Man muss allerdings einen STRING verwenden, ansonsten funktioniert der $-Ausdruck nicht (Ende einer Zeile/ String).
Getestet mit DEMO_REGEX_TOY :up:

Re: Trennen Strasse und Hausnummer

Beitrag von schubepe (ForumUser / 8 / 0 / 4 ) »
Versuche es mal mit dem FUBA HR_DE_SPLITT_STR_HNR. Für die Deutsche Schreibweis (Strasse/Hausnummer) habe ich recht gute Erfolge erziehlt.

Folgende Benutzer bedankten sich beim Autor schubepe für den Beitrag (Insgesamt 3):
ewxralf.wenzelChrisB


Re: Trennen Strasse und Hausnummer

Beitrag von payten (ForumUser / 1 / 1 / 0 ) »
Hallo zusammen,

da ich auf so ein Problem auch gestoßen bin, hatte ich folgendes Coding ausprobiert:

Code: Alles auswählen.

DATA: 
         lv_input        TYPE string,
         lv_street       TYPE string,
         lv_house_number TYPE string,
         lo_regex        TYPE REF TO cl_abap_regex,
         lo_matcher      TYPE REF TO cl_abap_matcher.

PARAMETERS: p_street TYPE string.

lv_input = p_street. "'Straße des 17. Juni 55 - 56'. "'Musterstraße 42'. "'Straße des 18 Oktober 5A'.

" Instanz der Regex erstellen "
CREATE OBJECT lo_regex
  EXPORTING
    pattern     = '(.*\D)\s(\d+[ -]*\d*[A-Za-z]?)$' "'(.*\D)\s(\d+[A-Za-z]?)$'
    ignore_case = abap_true.

" Matcher erstellen "
lo_matcher = lo_regex->create_matcher( text = lv_input ).

IF lo_matcher->match( ).
  lv_street       = lo_matcher->get_submatch( 1 ). " Erster Teil: Straße "
  lv_house_number = lo_matcher->get_submatch( 2 ). " Zweiter Teil: Hausnummer "
ENDIF.

" Ergebnisse anzeigen "
WRITE: / 'Straße:', lv_street,
       / 'Hausnummer:', lv_house_number.

Solang das Hausnummernintervall keine Leerzeichen enthält (55-56) scheint es zu klappen und zwischen Straßennamen und Hausnummer muss ein Leerzeichen sein.

Re: Trennen Strasse und Hausnummer

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Die ist bewusst, dass der letzte Post in diesem Thread von 2013 ist (und damals war der Thread auch schon vier Jahre alt)?

Letzten Endes ist aber die Frage, was so alles als Adresse vorkommen kann. In dem Moment, in dem Du das genau definieren kannst, bekommst Du es auch programmiert. Solange Du nur Einzelbeispiele wie das genannte "Strasse des 18 Oktober 5" hast, kannst Du Deinen Code so anpassen, dass er diese Beispiele abdeckt, wirst aber nie die Gewissheit haben, dass es nicht doch irgendwo in Deutschland eine völlig geisteskranke Anschrift gibt, auf die Deine Anpassung dann doch wieder nicht passt.

Was das genannte Beispiel angeht, so hätte ich gesagt, dass man von hinten nach vorne vorgehen kann. Das letzte Zeichen kann ein Buchstabe sein (der wiederum von der Zahl davor mit Leerzeichen abgesetzt sein kann, aber nicht muss), ansonsten (davor) aber muss eine Zahl stehen, die zusammen mit dem Buchstaben - sofern vorhanden - als Hausnummer zu interpretieren ist. Davor könnte mit Bindestrich - und abermals optionalen Leerzeichen - eine weitere Zahl stehen, die dann auch noch zur Hausnummer gehört. Alles, was davor kommt, ist der Straßenname.

Das zu erarbeiten ist hier die Herausforderung, nicht ein dazu passendes Coding zu schreiben (sofern man in ABAP keine Pfeife ist).

Ich denke, dass mein obenstehender Algorithmus nahezu alles abdecken würde. Aber wie gesagt: es ist keineswegs gesagt, dass es nicht irgendwo irgendeine bescheuerte Anschrift gibt, wo es dennoch nicht passt. Das wird man nie gänzlich vermeiden können.

Re: Trennen Strasse und Hausnummer

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Vergleichbare Themen

4
Antw.
2923
Views
Strasse und Hausnr. trennen
von c oco » 03.03.2006 13:38 • Verfasst in ABAP® für Anfänger
1
Antw.
3259
Views
Adressroutine in Formularen (Strasse 2)
von tnyf » 23.02.2005 11:01 • Verfasst in Tips + Tricks & FAQs
18
Antw.
14716
Views
SAP HANA - ERP und HCM trennen
von verzweifelt » 13.06.2015 21:32 • Verfasst in SAP HANA für Anfänger
3
Antw.
1275
Views
String trennen
von SAP_ENTWICKLER » 25.03.2019 16:00 • Verfasst in ABAP® Core
3
Antw.
2737
Views
Wie Zeichenkette bei Buchstaben trennen?
von samson » 29.01.2008 13:33 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Regex in where
vor 11 Stunden von tar 8 / 273
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1558
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 208
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 448

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.

Aktuelle Forenbeiträge

Regex in where
vor 11 Stunden von tar 8 / 273
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1558
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 208
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 448

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 150
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3329
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9879