Posted: Fri Feb 22, 2008 1:59 pm Post subject: Преобразование русских символов в английские
Здравствуйте!
Получил задание заменить все встречающиеся неанглийские символы в файлах, предназначенных для передачи в другую систему на английские. Наверно это называется транслитерацией.
Нашел подходящий оператор
TRANSLATE c ...FROM CODE PAGE g1... TO CODE PAGE g2.
но нет уверенности, что во входном файле будут символы в заданной CodePage. Наверно могут встретиться какие угодно символы.
Поэтому думаю, использовать эту команду или может просто заменить последовательно русскую 'А' на английскую 'A' и так далее.
Никогда не занимался конвертацией. Встречал еще на форуме разные новомодные модулу. Что посоветуете, как правильно?
Система 4.6c.
TRANSLATE TO CODE PAGE '1146' не совсем подходит, потому что часть русских символов преобразуется к длинным комбинациям букв.
Например:
Щ - SCHTTCH
а надо
Щ - SCH
Пошел по такому пути. Для букв, которые преобразуются из одного символа к одному символу, использую TRANSLATE. Если преобразование из одной буквы к многобуквенной комбинации, то REPLACE. Возникла загвоздка с макросом. Как в качестве параметра макроса передать название не явно, а через переменную?
*"----------------------------------------------------------------------
*" Macro repl
*"----------------------------------------------------------------------
DEFINE repl. "&1
MOVE text-t&1 TO txx.
len = STRLEN( txx+1(*) ).
CLEAR sy-subrc.
WHILE sy-subrc IS INITIAL.
REPLACE txx(1) WITH txx+1(len) INTO output.
ENDWHILE.
END-OF-DEFINITION."..repl
*&---------------------------------------------------------------------*
*& Form translit
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IN text
*----------------------------------------------------------------------*
FORM translit USING p_in.
DATA: txx(10),
len TYPE I,
num(2).
TRANSLATE p_in USING text-t00.
DO 18 TIMES.
num = num + 1.
repl num.
ENDDO.
При компиляции выдается ошибка
Field "TEXT-TNUM" is unknown. It is neither in one of the specified
на строке вызова макроса repl num.
Age: 170 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Fri Mar 21, 2008 5:37 pm Post subject:
Интересный FM SCP_REPLACE_STRANGE_CHARS
Quote:
Replace non-standard characters with standard characters
Functionality
SCP_REPLACE_STRANGE_CHARS processes a text so that it only contains simple characters. Special characters and national characters are replaced in such a way that the text remains reasonably legible.
The character set 1146 is used by default. In this case the following replacements are made, e.g.:
á ==> AE (AE)
ā ==> A (A circumflex)
Ă ==> Ae (A dieresis)
£ ==> L (sterling)
Note that the new text can be longer than the old.
При компиляции выдается ошибка
Field "TEXT-TNUM" is unknown. It is neither in one of the specified
на строке вызова макроса repl num.
Попробуйте использовать не тексты, а внутреннюю таблицу, или сохраните как поля структуры.
макрос не делает подстановку переменная - значение. а писать имя text-<переменная> нельзя
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.