UPPER

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

UPPER

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Hallo!

ich habe ein merwürdiges Phänomen:
Mittels EXEC-SQL lese ich texte und wandele sie mit UPPER während des Selects in Großbuchstaben um:

Code: Alles auswählen.

   TRANSLATE lv_name TO UPPER-CASE.
    EXEC SQL PERFORMING zz_exec_sql_write.
      SELECT TOP 500
             NAME1,
        INTO :lv_name
        FROM KNA1
       WHERE MANDT          =    :SY-MANDT
             UPPER(NAME1) LIKE :lv_name
    ENDEXEC.
Das funktioniert auch ganz gut. Wenn Umlaute vorhanden sind, funktioniert das allerdings nicht mehr... :-/
Also: eine Suche nach *HAMBURG* findet "HAMBURGER" also auch "Hamburger".
Aber eine Suche nach *UNIVERSITÄT* findet nur "UNIVERSITÄT" aber nicht "Universität".
Werden mit der UPPER-Funktion die Umlaute anders umgesetzt? oder wird auf der DB ein anderer Zeichensatz verwendet, als im SAP? Erfolgt da eine Konvertierung?

Hat jemand eine Idee?
Danke und lg
Enno

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


Re: UPPER

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Bestimmt gibt es einen guten Grund dafür, dass Du nicht KNA1-MCOD1 ausliest, wo schon der in Großbuchstaben konvertierte Inhalt drinsteht und es sogar einen passenden Sekundärindex gibt, oder?

Re: UPPER

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Den gibt es in der Tat: Es soll nämlich nicht nur nach NAME1 und NAME2 gesucht werden, sondern auch nach NAME3 und NAME4, für die es keine Matchcodefelder gibt.

Re: UPPER

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Auf Hinweis eines Kollegen habe ich mal die Umlaute nicht in Großumlaute umgewandelt ("UNIVERSITäT"), da in MSSQL die Umlaute evtl. als Sonderzeichen behandelt und deswegen nicht in "GROß" umgewandelt werden.
Hat leider auch keinen Erfolg gebracht. :(

Re: UPPER

Beitrag von Flo (Specialist / 161 / 0 / 0 ) »
Gerade mal was in der SAP Hilfe entdeckt (falls Problem noch aktuell ist), vielleicht liegt das Problem im Translate?

Varianten:

TRANSLATE c TO UPPER CASE.

TRANSLATE c TO LOWER CASE.



Die Funktionsweise der TRANSLATE-Anweisung ist von der R/3-Anmeldesprache abhängig. In der Regel wird die Anmeldung an das R/3-System in der Sprache vorgenommen, in der die zu verarbeitenden Daten erfaßt wurden. Eine falsche Einstellung der Sprache führt genau dann zu Datenverlusten, wenn eine Umsetzung bei abweichenden Sprachumgebungen gar nicht definiert ist.



Werden zum Beispiel deutsche Umlaute in einer russischen Sprachumgebung verarbeitet, dann liefert die Anweisung TRANSLATE für 'ö' ein '|' und für 'Ö' ein '¶'. Diese Unstimmigkeiten treten bevorzugt auf,



wenn mit dem Befehl SET LOCALE LANGUAGE eine falsche Sprachumgebung eingestellt wurde oder

ohne Verwendung von SET LOCALE LANGUAGE Daten bearbeitet werden, die nicht zur Anmeldesprache gehören.



Liegen die umzusetzenden Daten beispielsweise in einer Struktur stru mit dem Sprachenschlüssel langu und dem Textfeld text, dann kann das Problem auf zwei Arten umgangen werden:



Beispiel
DATA: BEGIN OF stru,
langu TYPE sy-langu,
text TYPE sy-xcode,
END OF stru.

SET LOCALE LANGUAGE stru-langu.
TRANSLATE stru-text TO UPPER CASE.
SET LOCALE LANGUAGE SPACE.



Jede Umsetzung erfolgt damit in der passenden Sprache. Falls stru eine interne Tabelle ist, sollte diese zuvor sortiert werden, um die Zahl der Umschaltungen zwischen den Sprachen zu verringern. Je nach Umfang der Tabelle ist damit eine erhebliche Verringerung der Bearbeitungszeit möglich, da SET LOCALE LANGUAGE ein sehr zeitintensives Sprachkonstrukt ist. Die Laufzeit liegt in der Größenordnung von SQL-Anweisungen.



Beispiel
IF stru-langu = sy-langu.
TRANSLATE stru-text TO UPPER CASE.
ELSE.
....
ENDIF.



Mit dieser Lösung werden nur Texte der Anmeldesprache bearbeitet. Hier bietet sich an, alle abweichenden Textzeilen mit COLLECT in einer weiteren internen Tabelle zu sammeln und entsprechend dem ersten Vorschlag umzusetzen.



Hinweis
Wichtig ist die direkte Rücksetzung des Sprachenschlüssels mittels SPACE, da SET LOCALE LANGUAGE auch das Systemfeld sy-langu verändert.
Außerdem ist zu beachten, daß ein Sprachenschlüssel unsinnig sein kann, eine Sprache nicht richtig installiert wurde oder von einem bestimmten Applikationsserver nicht verarbeitet werden kann. Folgende Funktionsbausteine sind für die Behandlung dieser Sonderfälle verfügbar:



SCP_MIXED_LANGUAGES_1_INIT

SCP_MIXED_LANGUAGES_1_SWITCH

SCP_MIXED_LANGUAGES_1_NORMAL

SCP_MIXED_LANGUAGES_1_FINISH

Re: UPPER

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Hi Flo!

Danke für die Info! Ich werde es bei Gelegenheit noch mal ausprobieren. Das Problem existiert nämlich noch, aber inzwischen gibt es dringendere...
Aber _eigentlich_ kann es daran nicht liegen, denn ansonsten funktioniert der Translate-Befehl, also ein kleines "ö" wird auch in ein großes "Ö" umgesetzt.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1342
Views
Upper level in MVC
von Alonso » 02.09.2005 12:30 • Verfasst in Web-Dynpro, BSP + BHTML
3
Antw.
2099
Views
Upper Case funktioniert nicht, oder ich mach was falsch?
von danielA. » 09.05.2006 13:28 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zeilenumbrüche ersetzen
vor 38 Minuten von ralf.wenzel 1 / 3
Dialog-Container mit Toolbar/Status
vor 18 Stunden von tar gelöst 19 / 2082
SAP Trial Version für SAP Fiori
vor 23 Stunden von tar 2 / 1443

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

Zeilenumbrüche ersetzen
vor 38 Minuten von ralf.wenzel 1 / 3
Dialog-Container mit Toolbar/Status
vor 18 Stunden von tar gelöst 19 / 2082
SAP Trial Version für SAP Fiori
vor 23 Stunden von tar 2 / 1443

Unbeantwortete Forenbeiträge

Zeilenumbrüche ersetzen
vor 38 Minuten von ralf.wenzel 1 / 3
Daten an Tabelle binden
Gestern von Bright4.5 1 / 501
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2141