Von Gross- in Kleinschreibung wandelen

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

Von Gross- in Kleinschreibung wandelen

Beitrag von horo (ForumUser / 9 / 0 / 0 ) »
Hallo,

Ich bin relativ neu in der ABAP Welt und stehe vor folgendem Problem: ich bekommen Strassennamen im Grossformat angeliefert und muss diese in Kleinformat wandeln. ABER: Nicht einfach nur alles kleinschreiben, das wäre ja einfach, sondern es gibt eine Menge Regelen.

Beispiel 1:
------------

Origianlstrasse: RUE DE LA PRINCESSE
Soll werden: rue de la Princesse

Beispiel 2:
------------

Originalstrasse: RUE DE L'INDEPENDANCE
Soll werden: rue de l'Independance

Beispiel 3:
------------

Orginalstrasse: RUE D'ESCH-SUR-ALZETTE
Soll werden: rue d'Esch-sur-Alzette

Ich wäre für jede Hilfe dankbar, da ich wirklich nicht weiss wie ich das am einfachsten und effektivsten umsetze.

Ich hoffe es geht aus den Beispielen hervor worum es geht, nämlich, dass es nicht so ist, dass man einfach alles kleinwandelt und anschliessend jeweils den 1. Buchstaben nach Leerzeichen wieder grosswandelt. Siehe Beispiel 3, hier wird's dann richtig lustig.

Danke!

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


Beitrag von danielA. (ForumUser / 97 / 0 / 0 ) »
Hallo Horo,

tja, ich denke die Regeln wie du was umstellen willst kannst lediglich nur du!

Aber für das Wandeln sind die Befehle "Upper Case" und "Lower Case" zuständig.

Ich schätze mal, hier wirst du eine zeichenweise Umsetzung vornehmen müssen. Ich zumindest habe aus deinen 3 Beispielen keine Idee entwickeln können. Aber das hat nix zu sagen ;-).

gruß
danielA.

Re: Von Gross- in Kleinschreibung wandelen

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
horo hat geschrieben:ich bekommen Strassennamen im Grossformat angeliefert und muss diese in Kleinformat wandeln. ABER: Nicht einfach nur alles kleinschreiben, das wäre ja einfach, sondern es gibt eine Menge Regelen.
Ach du lieber Himmel!!! Vergiss es. Mach ne realistisch hohe Aufwandsschätzung, dann wird herauskommen, dass das niemand bezahlen will. Das einzige, was mir einfiele, wäre ein Abgleich mit einem offiziellen Straßenverzeichnis. Aber nach Regeln wirst du sowas bei Straßennahmen nie hinbekommen, weil solche Namen oft auch Ausnahmen haben.

Ich hatte mal den Fall, dass ich aus einem Feld, in dem Straße und Hausnummer stand, die Hausnummer ausfiltern musste. War ein ziemlicher Kraftakt, weil es keine Regel dafür gibt, wo in D eine Hausnummer steht, es wohnt ja nicht jeder in der

Waldstraße 8 (Hausnummer = Ziffer am Ende)

sondern könnte ja auch in

Waldstraße 8-10

oder Waldstraße 8 + 12

leben, da kommt man mit der Logik schon nicht mehr hin. Außerdem gibts noch die

Waldstraße 8B oder 8b

und zur Krönung des Ganzen die

Straße des 17. Juni

Ich hab mir fast die Finger verstaucht damals. Auch wenn ich es hingekriegt habe, GERN würd ich sowas nicht nochmal tun.

Wie gesagt: Versuch an offizielle Straßenverzeichnisse zu kommen (das geht natürlich nicht, wenn die Adressaten weltweit verstreut sind), das ist die einzige probate Möglichkeit.


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

Beitrag von horo (ForumUser / 9 / 0 / 0 ) »
Danke für die Antwort. Das Problem ist: es ist das offizielle Strassenverzeichnis der hiesigen Post, nur werden alle Strassen im Grossformat angeliefert und ich soll diese in beiden Versionen im System ablegen, sprich Kleinformat und alles Gross...:-(

Wenn es irgendwie möglich ist, wäre ich auch dankbar für die Sache mit den Strassen und Hausnummern, weil genau die Aktion steht auch noch auf meiner Liste, steht bei einer Altdaten-Uebernahme an...und zwar genau so wie bei dir, Hausnummer steht irgendwo in der Strasse.

Gruss,
Robert

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
horo hat geschrieben:Wenn es irgendwie möglich ist, wäre ich auch dankbar für die Sache mit den Strassen und Hausnummern, weil genau die Aktion steht auch noch auf meiner Liste, steht bei einer Altdaten-Uebernahme an...und zwar genau so wie bei dir, Hausnummer steht irgendwo in der Strasse.
manmanman.... bei ausländischen Adressen ist sowas nicht zu machen, wenn es nicht auf Regeln basiert, die dir bekannt sind. Kannst du kein anderes Straßenverzeichnis zu Rate ziehen? Sowas muss es doch korrekt ausgeschrieben geben.

Die Logik mit den Hausnummern von damals habe ich nicht mehr im Kopf, aber es bezog sich fast ausschließlich auf deutsche Adressen, da gibts nicht SO viele Ausnahmefälle.

Im Zweifel gibts da nur eins: manuelle Migration der Straßen. Sowas kann man programmtechnisch unterstützen, aber wohl nicht automatisch durchführen lassen..... :(


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

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Einzige Möglichkeit wo ich sehe um dein Problem zu lösen: Der wo dir die Daten schickt soll sie so schicken wie sie Richtig geschrieben werden (sprich Gross/klein).

Beitrag von horo (ForumUser / 9 / 0 / 0 ) »
der wo mir die Daten schickt ist die Post, und die hat halt ein Standard (=Grossformat). Daran gibt's nicht zu rütteln, ich muss mir einen Weg suchen.

Helfen würde mir schon ein Ansatz, wie zum Beispiel "jeweils den ersten Buchstaben nach einem Leerzeichen innerhalb einer Zeichenkette grosschreiben".

Damit würde ich machen:

- translate myOriginal to lower case.
- dann halt die obige Umwandlung des jeweilig ersten
Buchstaben nach Leerzeichen.

Damit wäre ein Grossteil gemacht. Anschliessend wären da dann noch die Ausnahmen :-)

Gruss,
Robert

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
dann hier vielleicht schon mal ein erster Ansatz. Ausnahmen sind natürlich noch nicht weiter berücksichtigt.

Kurz zur Arbeitsweise:
Bestimmte Wörter sollen ja generell klein geschrieben werden wie "le", "la", "rue" usf. Alle anderen Wörter erhalten als ersten Buchstaben einen Großbuchstaben. Einzige bis jetzt berücksichtigte Ausnahme: "l'", als z.B. "rue de l'Hauberge de la Jeunesse" (ist seltsamerweise fast das einzige, was ich aus meinem Franösischunterricht behalten habe)

Code: Alles auswählen.

PARAMETERS: s_rue(35) TYPE c.

TYPES:      ty_split(35) TYPE c.

DATA:       wa_split TYPE ty_split,
            it_split TYPE TABLE OF ty_split,
            gl_result TYPE ty_split.

CONSTANTS:  c_le(2) TYPE c VALUE 'le',
            c_la(2) TYPE c VALUE 'la',
            c_l_(2) TYPE c VALUE 'l''',
            c_de(2) TYPE c VALUE 'de',
            c_des(3) TYPE c VALUE 'des',
            c_les(3) TYPE c VALUE 'les',
            c_rue(3) TYPE c VALUE 'rue'.


START-OF-SELECTION.

  WRITE: / 'Vorher:', s_rue.

  CONDENSE s_rue.
  TRANSLATE s_rue TO LOWER CASE.

  SPLIT s_rue AT space INTO TABLE it_split.

  LOOP AT it_split INTO wa_split.
    IF NOT ( wa_split = c_le OR
             wa_split = c_la OR
             wa_split(2) = c_l_ OR
             wa_split = c_de OR
             wa_split = c_des OR
             wa_split = c_les OR
             wa_split = c_rue ).
      TRANSLATE wa_split(1) TO UPPER CASE.
    ENDIF.
    IF wa_split(2) = c_l_.
      TRANSLATE wa_split+2(1) TO UPPER CASE.
    ENDIF.
    CONCATENATE gl_result wa_split INTO gl_result SEPARATED BY space.
  ENDLOOP.

  WRITE: / 'Nacher: ', gl_result.

Beitrag von just (ForumUser / 35 / 0 / 0 ) »
horo hat geschrieben:der wo mir die Daten schickt ist die Post, und die hat halt ein Standard (=Grossformat). Daran gibt's nicht zu rütteln, ich muss mir einen Weg suchen.
bist du dir da ganz sicher?
normalerweise liefert die das korrekt. nur großschreibung wäre ja auch irgendwie blöd, oder?
was ich erst mal überprüfen würde:
liefert die post evtl. richtig und du importierst falsch ins SAP?
bzw.
benutzt du das falsche Feld? ein Zusatzfeld zum Vergleich evtl.?

Ansonsten könntest du folgendes Coding verwenden:

Code: Alles auswählen.

DATA: ltext(200) TYPE c VALUE 'ABCDEFGHI ',
      lchar TYPE c,
      li    TYPE i.

li = 0.
WRITE / ltext.

DO 200 TIMES.

  lchar = ltext+li(1).
  CASE lchar.
    WHEN 'D'.
      ltext+li(1) = '1'.
    WHEN 'G'.
      ltext+li(1) = ' '.
    WHEN OTHERS.
  ENDCASE.

  ADD 1 TO li.
ENDDO.

WRITE / ltext.
die Logik muss natürlich von dir kommen:
z.b. wenn vorgänger initial -> Großbuchstabe...

Beitrag von Websy (ForumUser / 1 / 0 / 0 ) »
Hallo horo,
es gibt eine CD vonDatafactory Cargo (Deutsche Post) Direkt Marketing.
Auf dieser CD sind die Strassen in Grossbuchstaben -- zum Suchen -- und jeweils dazu die Stasse wie man das so normal schreibt. Die entsprechende Datei heisst SB. Diese CD erscheint 3-mal jährlich.
Vielleicht hift das wieter
Gruss

Beitrag von horo (ForumUser / 9 / 0 / 0 ) »
Vielen Dank schon mal für die Ansätze und Hilfe.

@just: ja ich bin mir ganz sicher, habe die Datei ja vorliegen. Es ist eine XML Datei die ich einlese. Diese Datei kann man ja mit jedem Editor öffnen und sich anssehen was drinsteht. Es ist halt alles in Grossbuchstaben, auch die Ortschaften. Und in "Normalform" ist diese Datei nicht zu haben.

@Websy: in meinem Fall handelt es sich um luxemburgische Postdaten, somit ist mir mit den deutschen leider nicht geholfen. Trotzdem Danke für den Tip.

Gruss,
Robert

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1795
Views
SQL-LIKE: Gross- und Kleinschreibung
von m.schwertle » 17.12.2007 10:09 • Verfasst in ABAP® für Anfänger
0
Antw.
2869
Views
Groß-/Kleinschreibung im ALV
von dawns » 17.11.2006 13:45 • Verfasst in ABAP Objects®
6
Antw.
4462
Views
Seletion mit Groß-/Kleinschreibung
von chatty » 18.04.2006 10:35 • Verfasst in ABAP® Core
2
Antw.
8114
Views
Konvertierung Groß-Kleinschreibung
von Kundiger » 29.12.2005 10:45 • Verfasst in Human Resources
9
Antw.
11674
Views
Groß-/Kleinschreibung in Tabellen
von Steffi221185 » 07.11.2006 13:55 • Verfasst in Basis

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 4 Stunden von DeathAndPain gelöst 22 / 2796
Daten an Tabelle binden
vor 9 Stunden von Lukas Sanders 2 / 874
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

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

Dialog-Container mit Toolbar/Status
vor 4 Stunden von DeathAndPain gelöst 22 / 2796
Daten an Tabelle binden
vor 9 Stunden von Lukas Sanders 2 / 874
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2466
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9050