Текущее время: Пт, май 16 2025, 01:08

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Конвертация типа char в тип f.
СообщениеДобавлено: Пн, окт 03 2005, 16:59 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Имеется число, записанное в char. Нужно как-то преобразовать его в тип f. Есть ли какая-нибудь стандартная функция или придется ручками делать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 17:12 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
f = '12.75'.
вот и все

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


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

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Наверное, не совсем ясно выразился... Есть переменная, типа чар. в ней - число. Его нужно сделать числом, чтобы провести несколько арифметических операций, а потом загнать обратно в чар.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 17:41 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
ммм... вот пример:

Code:
DATA: FG  TYPE F
    , CH1(4), CH2(4), CH5(10).

FG = '12.75'.
CH1 = '34.5'.
CH2 = '5.5'.

CH5 = CH1 + CH2 + FG.

WRITE:/ CH5.

или я не понял вопроса?

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


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

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Всё, проблема уже решилась.

Там просто было число типа "123,000", а система считает числами только тип "123.000". Вот она и слетала в дамп.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 04 2005, 08:03 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
ФМ RS_CONV_EX_2_IN_DTEL - преобразование строкового значения к типу, определяемому по ЭД
Аналогично, но более узко HRCM_STRING_TO_AMOUNT_CONVERT.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 04 2005, 10:08 
Специалист
Специалист

Зарегистрирован:
Вт, ноя 02 2004, 10:06
Сообщения: 136
я писал сам примерно так:
Code:
FUNCTION ZSD_CHAR_TO_FLOAT.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     REFERENCE(TEXT_IN) TYPE  C
*"  EXPORTING
*"     REFERENCE(FLOAT_OUT) TYPE  F
*"----------------------------------------------------------------------
DATA: TEXT_OUT(40).
  IF USER_DCPFM IS INITIAL.
    SELECT SINGLE DCPFM INTO USER_DCPFM
      FROM USR01 WHERE BNAME = SY-UNAME.
    IF SY-SUBRC = 0.
      IF USER_DCPFM = ' '.
        USER_DCPFM = 'Z'.
      ENDIF.
    ENDIF.
  ENDIF.
  CALL FUNCTION 'ZCHAR_TO_NUMBER'
       EXPORTING
            TEXT_IN  = TEXT_IN
       IMPORTING
            TEXT_OUT = TEXT_OUT.
  CASE USER_DCPFM.
    WHEN 'Z'.
      TRANSLATE TEXT_OUT USING '.,'.
    WHEN 'Y'.
      TRANSLATE TEXT_OUT USING '.,'.
    WHEN 'X'.
      TRANSLATE TEXT_OUT USING ',.'.
  ENDCASE.
  TRANSLATE TEXT_OUT USING ',.'.
  FLOAT_OUT = TEXT_OUT.
ENDFUNCTION.

Code:
FUNCTION ZCHAR_TO_NUMBER.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     REFERENCE(TEXT_IN) TYPE  C
*"  EXPORTING
*"     REFERENCE(TEXT_OUT) TYPE  C
*"----------------------------------------------------------------------
  DATA:TXT(255), POINT(1), COMMA(1),
  PP TYPE I, CP TYPE I.

  TXT = TEXT_IN.
  REPLACE '.' WITH '#' INTO TXT.
  SEARCH TXT FOR ','.
  IF SY-SUBRC = 0.
    CP = SY-FDPOS + 2.
    SEARCH TXT FOR ',' STARTING AT CP.
    IF SY-SUBRC = 0.
      REPLACE ',' WITH ' ' INTO TXT.
    ENDIF.
  ENDIF.
  SEARCH TXT FOR '#'.
  IF SY-SUBRC = 0.
    CP = SY-FDPOS + 2.
    SEARCH TXT FOR '#' STARTING AT CP.
    IF SY-SUBRC = 0.
      REPLACE '#' WITH ' ' INTO TXT.
    ENDIF.
  ENDIF.
  SEARCH TXT FOR ','.
  IF SY-SUBRC = 0.
    COMMA = 'X'.
    CP = SY-FDPOS.
  ENDIF.
  SEARCH TXT FOR '#'.
  IF SY-SUBRC = 0.
    POINT = 'X'.
    PP = SY-FDPOS.
  ENDIF.
  IF POINT = 'X' AND COMMA = 'X'.
    IF CP > PP.
      REPLACE '#' WITH ' ' INTO TXT.
    ELSE.
      REPLACE ',' WITH ' ' INTO TXT.
      REPLACE '#' WITH ',' INTO TXT.
    ENDIF.
  ENDIF.
  IF POINT = 'X' AND COMMA IS INITIAL.
    REPLACE '#' WITH ',' INTO TXT.
  ENDIF.
  TEXT_OUT = ''.
  WHILE NOT TXT IS INITIAL.
    IF TXT(1) CA '0123456789,'.
      CONCATENATE TEXT_OUT TXT(1) INTO TEXT_OUT.
    ENDIF.
    SHIFT TXT.
  ENDWHILE.
  IF NOT TEXT_OUT(1) CA '0123456789'.
    CONCATENATE  '0' TEXT_OUT INTO TEXT_OUT.
  ENDIF.
ENDFUNCTION.

Расчитываю на то что из внешних систем поступает число с некими ед.изм (или без них) и с произвольным разделителем (. или ,). Вроде даже предпологал что могут быть разделители тысяч (, или . или пробел).
Могут быть ошибочки. Думать то некогда, работать надо :).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 04 2005, 11:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
qq написал(а):
Думать то некогда, работать надо :).

Однажды Резерфорд (Р) пришел в лабораторию необычно рано. Несмотря на столь ранний час, он увидел там аспиранта (АС), уже склонившего голову над приборами.
(Р): Молодой человек, вы уже работаете?
(АС): Да, профессор...
(Р): Вы собираетесь работать весь день?
(АС): Да, профессор...
(Р): Но, наверное, вы хотите пораньше уйти?
(АС): Нет, профессор, я собираюсь поработать допоздна...
(Р): Но, позвольте, а когда же вы думаете?!

Вот так... :?

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


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

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


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

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


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

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