Текущее время: Пн, авг 04 2025, 17:21

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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