SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Преобразование русских символов в английские



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Влад
Специалист
Специалист



Joined: 26 Dec 2007
Posts: 63

PostPosted: Fri Feb 22, 2008 1:59 pm    Post subject: Преобразование русских символов в английские Reply with quote

Здравствуйте!
Получил задание заменить все встречающиеся неанглийские символы в файлах, предназначенных для передачи в другую систему на английские. Наверно это называется транслитерацией.
Нашел подходящий оператор
TRANSLATE c ...FROM CODE PAGE g1... TO CODE PAGE g2.
но нет уверенности, что во входном файле будут символы в заданной CodePage. Наверно могут встретиться какие угодно символы.
Поэтому думаю, использовать эту команду или может просто заменить последовательно русскую 'А' на английскую 'A' и так далее.
Никогда не занимался конвертацией. Встречал еще на форуме разные новомодные модулу. Что посоветуете, как правильно?
Система 4.6c.
Back to top
View user's profile Send private message
mike1
Модератор
Модератор



Joined: 22 Nov 2007
Posts: 82

PostPosted: Fri Feb 22, 2008 3:04 pm    Post subject: Reply with quote

Английские буквы в верхнем регистре хранятся в SY-ABCDE.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 170
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri Feb 22, 2008 4:26 pm    Post subject: Reply with quote

Проверьте такой вариант
TRANSLATE p_str TO CODE PAGE '1146'. "to translit
Back to top
View user's profile Send private message Blog Visit poster's website
Влад
Специалист
Специалист



Joined: 26 Dec 2007
Posts: 63

PostPosted: Thu Feb 28, 2008 12:31 pm    Post subject: Reply with quote

Спасибо за ответы.

TRANSLATE TO CODE PAGE '1146' не совсем подходит, потому что часть русских символов преобразуется к длинным комбинациям букв.
Например:
Щ - SCHTTCH
а надо
Щ - SCH

Пошел по такому пути. Для букв, которые преобразуются из одного символа к одному символу, использую TRANSLATE. Если преобразование из одной буквы к многобуквенной комбинации, то REPLACE. Возникла загвоздка с макросом. Как в качестве параметра макроса передать название не явно, а через переменную?

В программе созданы тексты:

Quote:
T00: АAаaБBбbВVвvГGгgДDдdЗZзzИIиiЙIйiКKкkЛLлlМMмmНNнnОOоoПPпpРRрrСSсsТTтtУUуuФFфfХHхhЪ!ъ!ЫYыyЬbьbЭEэe

T01: ЕIE
T02: еie
T03: ЁIO
T04: ёio
T05: ЖZH
T06: жzh
T07: ЦTS
T08: цts
T09: ЧCH
T10: чch
T11: ШCH
T12: шch
T13: ЩSCH
T14: щsch
T15: ЮYU
T16: юyu
T17: ЯYA
T18: яya


Code:
*"----------------------------------------------------------------------
*" 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.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 170
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri Mar 21, 2008 5:37 pm    Post subject: Reply with quote

Интересный 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.
Back to top
View user's profile Send private message Blog Visit poster's website
Mitrandir
Участник
Участник



Joined: 07 Feb 2011
Posts: 1

PostPosted: Mon Feb 07, 2011 1:17 pm    Post subject: Reply with quote

Quote:
При компиляции выдается ошибка
Field "TEXT-TNUM" is unknown. It is neither in one of the specified
на строке вызова макроса repl num.



Попробуйте использовать не тексты, а внутреннюю таблицу, или сохраните как поля структуры.
макрос не делает подстановку переменная - значение. а писать имя text-<переменная> нельзя
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.