Текущее время: Чт, май 15 2025, 20:39

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


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

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


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

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