Текущее время: Вс, авг 03 2025, 12:23

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: TRANSLATE струкруту TO UPPER CASE (ecc 6.0)
СообщениеДобавлено: Ср, янв 16 2008, 16:49 
Специалист
Специалист

Зарегистрирован:
Пн, янв 14 2008, 10:33
Сообщения: 163
Code:
TRANSLATE s_tab TO UPPER CASE.

Где s_tab - структура
Это проходило в 4.7 но не проходит в ecc6.0
Может кто знает как это сделать НЕ field-by-field ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TRANSLATE струкруту TO UPPER CASE (ecc 6.0)
СообщениеДобавлено: Ср, янв 16 2008, 16:51 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 02 2007, 16:19
Сообщения: 35
Откуда: Москва
b_e_s написал(а):
Code:
TRANSLATE s_tab TO UPPER CASE.

Где s_tab - структура
Это проходило в 4.7 но не проходит в ecc6.0
Может кто знает как это сделать НЕ field-by-field ?


извращенный вариант:
Code:
field-symbols <fs> type any.
do.
assign component sy-index of structure s_tab to <fs>.
if sy-subrc eq 0.
   translate <fs> to upper case.
else.
   exit.
endif.
enddo.

_________________
--
Рожденный ползать, уйди со взлетной полосы!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TRANSLATE струкруту TO UPPER CASE (ecc 6.0)
СообщениеДобавлено: Ср, янв 16 2008, 17:02 
Специалист
Специалист

Зарегистрирован:
Пн, янв 14 2008, 10:33
Сообщения: 163
Marmelade написал(а):
извращенный вариант:


.. и на том спасибо =)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, янв 16 2008, 19:26 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, авг 22 2005, 14:50
Сообщения: 1285
Откуда: с работы
Пол: Женский
может у вас еще и юникод-система? вообще тогда нельзя так грубо со структурами.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, янв 17 2008, 12:45 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 07 2006, 12:48
Сообщения: 76
Пол: Мужской
Надо не забывать, что в Unicode буквы в 2-ух, а цифры (type p) в 1-ом. В честь этого 5.0-6.0 и не позволяет так грубо.)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TRANSLATE струкруту TO UPPER CASE (ecc 6.0)
СообщениеДобавлено: Чт, янв 17 2008, 14:36 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Marmelade написал(а):
извращенный вариант:


Code:
DATA: num TYPE P.
num = '987654321'.
write: / num.
translate num to upper case.
write: / num.


Цитата:
* Система 4.7

987.654.321
985.654.321


В неюникодных системах TRANSLATE до символа 'Z' работает наложением битовой маски (обнуление 5 бита в символе), после - по трансляционным таблицам. В юникодной системе, судя по выдаче, используется похожий алгоритм.

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TRANSLATE струкруту TO UPPER CASE (ecc 6.0)
СообщениеДобавлено: Чт, янв 17 2008, 15:16 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Marmelade написал(а):
извращенный вариант:
Без дампов в юникод системе будет работать:
Code:
field-symbols <FS> type any.
data S_TAB type SYST.
data: DR  type ref to CL_ABAP_STRUCTDESCR,
       WA type ABAP_COMPDESCR.
S_TAB = SYST.
DR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( 'SYST' ).
do.
  assign component SY-INDEX of structure S_TAB to <FS>.
  if SY-SUBRC eq 0.
    read table DR->COMPONENTS index SY-INDEX into WA.
    if WA-TYPE_KIND = 'C'.
      translate <FS> to upper case.
    endif.
  else.
    exit.
  endif.
enddo.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, янв 17 2008, 18:23 
Специалист
Специалист

Зарегистрирован:
Пн, янв 14 2008, 10:33
Сообщения: 163
Galka написала:
может у вас еще и юникод-система? вообще тогда нельзя так грубо со структурами.

Да система unicod, и преобразование поле-за-полем можно делать только анализируя тип. т.к. на I - система дампится. Это всё хорошо, когда структура из словаря. а если нет, то как получить типы полей?
Нада теперь, конешно, создать такой ФМ чтобы структуру перефодил в кейсы разные.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TRANSLATE струкруту TO UPPER CASE (ecc 6.0)
СообщениеДобавлено: Чт, янв 17 2008, 18:36 
Специалист
Специалист

Зарегистрирован:
Пн, янв 14 2008, 10:33
Сообщения: 163
Mike1 написал:
Code:
field-symbols <FS> type any.
data S_TAB type SYST.
data: DR  type ref to CL_ABAP_STRUCTDESCR,
       WA type ABAP_COMPDESCR.
S_TAB = SYST.
DR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( 'SYST' ).
do.
  assign component SY-INDEX of structure S_TAB to <FS>.
  if SY-SUBRC eq 0.
    read table DR->COMPONENTS index SY-INDEX into WA.
    if WA-TYPE_KIND = 'C'.
      translate <FS> to upper case.
    endif.
  else.
    exit.
  endif.
enddo.


Отличный вариант, спасибо.

Но можно ли как-то сделать чтобы структуры объявленные в коде тоже как-то обработать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, янв 17 2008, 18:48 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
в чем проблема?
DR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( S_TAB ).
Determining the Attributes of Data Objects

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, янв 17 2008, 18:52 
Специалист
Специалист

Зарегистрирован:
Пн, янв 14 2008, 10:33
Сообщения: 163
vga написал(а):
в чем проблема?
DR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( S_TAB ).


дампит =( с S_TAB с кавычками и без.

Code:
DATA: BEGIN OF s_tab
,           fio(10)         TYPE c
,           count           TYPE i
,           rus(10)         TYPE c.
DATA  END   OF s_tab.

s_tab-fio   = 'test'.
s_tab-count = 101.
s_tab-rus   = 'однако!'.

FIELD-SYMBOLS <fs> TYPE ANY.
DATA: dr TYPE REF TO cl_abap_structdescr,
      wa TYPE abap_compdescr.
dr ?= cl_abap_typedescr=>describe_by_name( S_TAB ).
DO.
  ASSIGN COMPONENT sy-index OF STRUCTURE s_tab TO <fs>.
  IF sy-subrc EQ 0.
    READ TABLE dr->components INDEX sy-index INTO wa.
    IF wa-type_kind = 'C'.
      TRANSLATE <fs> TO UPPER CASE.
    ENDIF.
  ELSE.
    EXIT.
  ENDIF.
ENDDO.

BREAK-POINT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, янв 17 2008, 19:01 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Вы невнимательны.
DR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( S_TAB ).

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, янв 17 2008, 19:03 
Специалист
Специалист

Зарегистрирован:
Пн, янв 14 2008, 10:33
Сообщения: 163
vga написал(а):
Вы невнимательны.
DR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( S_TAB ).


Огромное спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB