Текущее время: Вс, июл 20 2025, 01:35

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Стринг в integer
СообщениеДобавлено: Чт, сен 28 2006, 10:35 
Начинающий
Начинающий

Зарегистрирован:
Вт, сен 05 2006, 13:45
Сообщения: 11
Драствуите. Помагите пожалуиста. У меня есть поле стринг '104,000.00'.
мне надо превратить этот стринг в int ili currn . Как это сделать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 28 2006, 10:39 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
ФМ HRCM_STRING_TO_AMOUNT_CONVERT


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 28 2006, 10:40 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
малость корявый фм
RS_CONV_EX_2_IN_DTEL
приводит к табличному типу
должен быть способ красивее

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 28 2006, 19:51 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Не претендуя на красоту, а чисто спортивного интереса ради. :)

Code:
DATA: input_string TYPE string,
      output_integer TYPE i.

CATCH SYSTEM-EXCEPTIONS
             arithmetic_errors = 1
             conversion_errors = 2.
  TRANSLATE input_string USING ', '.
  CONDENSE input_string NO-GAPS.
  output_integer = input_string.
ENDCATCH.

IF sy-subrc <> 0.
* error message - string contains wrong characters
ENDIF.


На выходе может быть любой цифровой тип, не обязательно I. Кстати, заодно проверила: работает со знаком +/-, причем знак в STRING может быть как перед числом так и после.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 06:32 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
2 Jelena:
Красивая идея :wink:
В данном примере Ваш код будет работать.
Однако в индивидуальных настройках пользователя разделителем групп разрядов, а также целой и дробной части, может оказаться любой символ, не обязательно запятая .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 07:34 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
Цитата:
может оказаться любой символ


Ну не знаю как насчет любого, в 4.7, по моему, это только "пробел", "запятая", "точка".

Можно установить еще и другие?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 08:02 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
Sergo написал:
Цитата:
может оказаться любой символ


Ну не знаю как насчет любого, в 4.7, по моему, это только "пробел", "запятая", "точка".

Можно установить еще и другие?

Согласен, любой из допустимых, суть не меняется.


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Code:
  SELECT SINGLE dcpfm INTO dcpfm FROM usr01 WHERE bname = sy-uname.
  CASE dcpfm.
      WHEN ' '.
         dcs = '.'. dcp = ','.
      WHEN 'X'.
         dcs = ','. dcp = '.'.
      WHEN 'Y'.
         dcs = ' '. dcp = ','.
  ENDCASE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 18:15 
Начинающий
Начинающий

Зарегистрирован:
Вт, авг 15 2006, 18:04
Сообщения: 2
Для преобразования строки в число с проверкой корректности ввода можно воспользоваться функцией:

Code:
  CALL FUNCTION 'MOVE_CHAR_TO_NUM'
    EXPORTING
      CHR             = pf_qty_e
    IMPORTING
      NUM             = pf_qty
    EXCEPTIONS
      CONVT_NO_NUMBER = 1
      CONVT_OVERFLOW  = 2
      OTHERS          = 3.


Для корректной работы рекомендую применить все ноты по этой функции для вашей системы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 20:01 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Попробовала MOVE_CHAR_TO_NUM (спасибо, кстати). Ей нужно давать CHAR, а на выходе должно быть Р. Если пробовать STRING и I, то валится в дамп, что естественно. Кроме того, Р нужно определять с DECIMALS, иначе число округляется. Так что если как у автора STRING в I, то еще нужно туда-сюда сконвертировать. Мда, за универсальность надо платить. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 30 2006, 23:53 
Гость
Code:
CALL FUNCTION 'RS_CONV_EX_2_IN_NO_DD'
      EXPORTING
        INPUT_EXTERNAL  = SSSS
      IMPORTING
        OUTPUT_INTERNAL = ZZZZZ
      EXCEPTIONS
        ERROR_MESSAGE   = 100
        OTHERS          = 200.


приведет SSSS к такому виду, как определен ZZZZZ
(можно и к integer, и к P )


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 31 2006, 09:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Ну вот еще вариант:
Code:
      CALL FUNCTION 'CATS_NUMERIC_INPUT_CHECK'
           EXPORTING
                input      = input
                internal   = 'X'
           IMPORTING
                output     = output
           EXCEPTIONS
                no_numeric = 1
                OTHERS     = 2.

И input, и output должны быть символьными, если internal = 'X', то в output будет внутренний формат, который можно присвоить переменной числового типа. Функция проверяет формат с учетом пользовательской настройки.
Функция существует, начиная с 4.6с

_________________
С уважением, Сергей Королев


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

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


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

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


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

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